我正在尝试编写一个(非常简单的)伪造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,如上所述