我正在尝试编写一个(非常简单的)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版本都是相同的,所以要么我忽略了一些非常简单的东西,要么就是我不应该按照我想要的方式去做。我该如何解决这个问题?
答案 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的所有代码。反过来,这将导致它(显然)无法找到非混淆的方法和名称。