Forge在实体#getName()上返回NoSuchMethodExcepton

时间:2016-11-27 10:54:28

标签: java minecraft-forge

我正在尝试编写一个(非常简单的)Forge mod,它可以监视鸡的产生并发出警报,但代码拒绝工作。相反,当我尝试读取实体名称时,它会抛出NoSuchMethodException

我的代码如下:

@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版本都是相同的,所以要么我忽略了一些非常简单的东西,要么就是我不应该按照我想要的方式去做。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你使用Shouln: EntityChicken chicken = event.getEntity(); 然后导入EntityChicken?

编辑: 当你执行chicken.getName()时,你的错误是因为它想要获取event.getEntity()的名称,并且event.getEntity()的类型设置为Entity,它给出了错误。您应该做的是将event.getEntity()的类型更改为EntityChicken,如上所述

答案 1 :(得分:0)

请务必使用Gradle build选项编译项目,而不是jar选项。

仅使用jar时,Gradle不会重新混淆Minecraft的所有代码。反过来,这将导致它(显然)无法找到非混淆的方法和名称。