1

私は、ゲーム マインクラフトの mod の修正に取り組んでいます。しかし、落とし穴があります。modは私が作ったものではないので、逆コンパイルする必要があります

簡単に言うと、難読化された不完全なソースに取り組むのはこれが初めてです。

編集するファイルは 1 つだけです (約 1.5K のうち)。

それは正常に逆コンパイルされ、必要なものを編集しましたが、今はコンパイルできません。クラスパス変数を使用してjarを指すようにしているため、ゲームの残りのクラスを引き続き使用できます。しかし、「.getDeclaredField(s)」に関連する 2 つのエラーが存在します。

コード:

public static Minecraft getMinecraft()
{
    try
    {
        Field field = Minecraft.getDeclaredField("a"); // Error here
        field.setAccessible(true);
        return (Minecraft)field.get(null);
    }
    catch(IllegalAccessException illegalaccessexception)
    {
        illegalaccessexception.printStackTrace();
    }
    catch(NoSuchFieldException nosuchfieldexception)
    {
        nosuchfieldexception.printStackTrace();
    }
    return null;
}

他のケースはこのようなものなので、それを示す必要はありません。

エラーログ:

TMIUtils.java:23: cannot find symbol
symbol  : method getDeclaredField(java.lang.String)
location: class net.minecraft.client.Minecraft
Field field = Minecraft.getDeclaredField("a");

これを修正するにはどうすればよいですか?(getDeclaredField を使用するのもこれが初めてであることを覚えておいてください)

4

1 に答える 1

4

そのはず

Minecraft.class.getDeclaredField("a");

おそらく、逆コンパイラのエラーです。

getDeclaredField()は type のメソッドでありClassMinecraft.classその型のリテラル値です。

于 2011-10-25T15:57:10.777 に答える