#java #minecraft
#java #Minecraft
Вопрос:
Я работаю над исправлением мода для игры minecraft. но есть одна загвоздка. Мод создан не мной, поэтому я должен его декомпилировать
Короче говоря, я впервые работаю с запутанными, неполными исходными текстами.
Я собираюсь отредактировать только ОДИН файл (из примерно 1,5тыс.).
Он декомпилировался нормально, и я отредактировал то, что хотел, но теперь я не могу его скомпилировать. Я использую переменную classpath, чтобы указать ее на 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)
Ответ №1:
Это должно быть
Minecraft.class.getDeclaredField("a");
Возможно, это ошибка декомпилятора.
getDeclaredField()
является методом типа Class
и Minecraft.class
является буквальным значением этого типа.