2016-11-27 8 views
0

Я пытаюсь написать (очень простой) мод Forge, который отслеживает и предупреждает о поясах курицы, но код отказывается работать. Вместо этого он бросает NoSuchMethodException, когда я пытаюсь прочитать имя объекта.Forge return NoSuchMethodExcepton on Entity # getName()

Мой код выглядит следующим образом:

@SubscribeEvent 
public void OnEntityJoinWorld(EntityJoinWorldEvent event) { 
    if (!(event.getEntity() instanceof EntityChicken)) { 
     return; 
    } 

    Entity chicken = event.getEntity(); 

    String message = "Chicken named " + chicken.getName() + " spawned at " + chicken.posX 
                  + "," + chicken.posY 
                  + "," + chicken.posZ 
                  + "."; 

    Minecraft.getMinecraft().thePlayer.addChatMessage(new TextComponentString(message)); 
    LOGGER.info(message); 
} 

Специфическая ошибка:

java.lang.NoSuchMethodError: net.minecraft.entity.Entity.getName()Ljava/lang/String; 

Обе версии Forge и Minecraft используются одни и те же, так как я с видом что-то очень простое , или это просто не то, как я должен делать то, что я пытаюсь сделать. Как я могу исправить эту проблему?

ответ

0

Обязательно скомпилировать проект, используя build вариант Gradle в отличие от варианта jar.

При использовании только jar, Gradle не будет повторно обфускать весь код Minecraft. В свою очередь, это приведет к тому, что он (очевидно) не сможет найти не запутанные методы и имена.

0

Shouln't вы используете: EntityChicken chicken = event.getEntity(); А потом импортировать EntityChicken?

EDIT: Ваша ошибка в том, что когда вы делаете chicken.getName(), он хочет получить имя event.getEntity(), а тип event.getEntity() установлен в Entity, который дает ошибку. То, что вы должны сделать, это изменить тип event.getEntity() до EntityChicken, как было сказано выше