レシピの仕様変更でクラスの書き換えに失敗する

MOD・プラグイン・ツールなどの開発に関する質問はこちら
おがさくら
初心者
記事: 9
登録日時: 2020年11月15日(日) 20:49
お住まい: 愛知県
ウェブサイト: https://drive.google.com/drive/folders/ ... sp=sharing

Re: レシピの仕様変更でクラスの書き換えに失敗する

投稿記事 by おがさくら »

[この返信は削除されました]

最後に編集したユーザー おがさくら [ 2024年10月26日(土) 14:46 ], 累計 1 回
penM
サーバー管理者
記事: 150
登録日時: 2019年7月23日(火) 02:14

Re: レシピの仕様変更でクラスの書き換えに失敗する

投稿記事 by penM »

おがさくら さんが書きました: 2021年11月19日(金) 20:14

スーパークラスのvisitMethodInsnに引数をそのまま入れて実行するのはできます
Type.getObjectType("net/minecraft/item/ItemStack")をType.VOID_TYPEにして呼び出すメソッドもvoid型にするのもできました。
しかし、getMethodDescriptorの第一引数にType.getObjectType("net/minecraft/item/ItemStack")を入れると起動できなくなってしまいます。

getMethodDescriptorの第一引数はreturnType - メソッドの戻りの型なのに「argumentTypes - メソッドの引数の型」を入れるのが問題なのではないでしょうか?

おがさくら
初心者
記事: 9
登録日時: 2020年11月15日(日) 20:49
お住まい: 愛知県
ウェブサイト: https://drive.google.com/drive/folders/ ... sp=sharing

Re: レシピの仕様変更でクラスの書き換えに失敗する

投稿記事 by おがさくら »

[この返信は削除されました]

最後に編集したユーザー おがさくら [ 2024年10月26日(土) 14:46 ], 累計 1 回
penM
サーバー管理者
記事: 150
登録日時: 2019年7月23日(火) 02:14

Re: レシピの仕様変更でクラスの書き換えに失敗する

投稿記事 by penM »

予想なのですが、
public static StringSE getMethodDescriptor(Type returnType,Type... argumentTypes)
におけるType returnTypeとは、

  • Type.VOID_TYPE

  • Type.SHORT_TYPE

  • Type.LONG_TYPE

  • Type.INT_TYPE

  • Type.FLOAT_TYPE

  • Type.DOUBLE_TYPE

  • Type.CHAR_TYPE

  • Type.BYTE_TYPE

  • Type.BOOLEAN_TYPE

を指しているのではないでしょうか?

この根拠としては、参考サイトに
Type.getMethodDescriptor(Type.VOID_TYPE, Type.getObjectType("net/minecraft/tileentity/TileEntity"))
の記述があるためです。

そしてType.~_TYPEは、java内部での基本タイプ(int,void,char)への単なる参照な気がします。
書き方があっているかわかりませんが、下記のように表記しても動きそうな気がします。
Type.getMethodDescriptor(void, Type.getObjectType("net/minecraft/tileentity/TileEntity"))

ここで、
Type.getObjectType
に関してですが、

getObjectType
public static Type getObjectType(StringSE internalName)
指定された内部名に対応する Type を返します。

とあります。
この関数が返すTypeとは、Type.VOID_TYPEType.の部分を返しているのではないでしょうか?

そうすると
getMethodDescriptor(Type.getObjectType("net/minecraft/item/ItemStack") , ~)
のような表記は、getMethodDescriptorにintなのか、voidなのかを渡していないことになると思います。

(java書いたこと無いので間違っていたら笑ってください :D )

おがさくら
初心者
記事: 9
登録日時: 2020年11月15日(日) 20:49
お住まい: 愛知県
ウェブサイト: https://drive.google.com/drive/folders/ ... sp=sharing

Re: レシピの仕様変更でクラスの書き換えに失敗する

投稿記事 by おがさくら »

返信遅れてすみません&ありがとうございます
これ以上は解決できそうにないので諦めることにします...

返信する