forge返回实体上的nosuchmethodexcepton#getName()



我正在尝试编写一个(非常简单的)伪造mod,该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版本都是相同的,因此我要么忽略非常简单的内容,要么这不是我应该做自己想做的事情的方式。我该如何解决此问题?

请确保使用Gradle build选项(而不是jar选项)来编译您的项目。

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

您不使用:EntityChicken Chicken = event.getentity();然后导入EntityChicken?

编辑:当您进行Chicken.getName()时,您的错误是因为要获取event.getentity()的名称和event.getentity()的类型。您应该做的是将event.getentity()的类型更改为EntityChicken,如上所述

最新更新