1

我正在为游戏 minecraft 修复一个 mod。但是有一个问题。这个mod不是我做的,所以我必须反编译它

长话短说,这是我第一次处理模糊的、不完整的资源。

我只会编辑一个文件(大约 1.5K)。

它反编译得很好,我编辑了我想要的,但现在我无法编译它。我正在使用类路径变量将其指向 jar,因此我仍然可以使用游戏其余部分中的类。但存在 2 个错误,都涉及“.getDeclaredField(s)”。

代码:

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 的方法Class,并且Minecraft.class是该类型的文字值。

于 2011-10-25T15:57:10.777 回答