我在我的mod中包含了一个简单的项目,当它在实体上使用时,应该会导致游戏运行由其名称指定的命令,以下是代码:
public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) {
if(user.getItemCooldownManager().getCooldownProgress(this, 0) == 0){
//user.getWorld().getServer().getCommandManager().executeWithPrefix(user.getServer().getCommandSource(), stack.getName().toString());
user.getWorld().getServer().getCommandManager().execute(user.getWorld().getServer().getCommandManager().getDispatcher().parse(stack.getName().toString(), user.getServer().getCommandSource()), stack.getName().toString());
//user.sendMessage(stack.getName());
user.getItemCooldownManager().set(this, 40);
}
return super.useOnEntity(stack, user, entity, hand);
}
我已经尝试了注释和未注释的代码,当我在暴民上使用该项目时,两者都会导致相同的结果,游戏崩溃并出现错误:
Execution failed for task :runClient . Process command C:Program Filesuluzulu-17injava.exe finished with non-zero exit value -1
我真的不明白,似乎是说它无法运行客户端,但客户端确实运行了,只是在我使用该项时崩溃了。
更新:
在遵循mineblock的建议后,使用“Minecraft客户端”配置,错误已更改为无法调用“net.Minecraft.server.MinecraftServer.getCommandManager()”,因为“net.Minecraft.world.world.getServer()”的返回值为null
。这是由我的代码调用user.getWorld().getServer()
引起的。
当我把它改为user.getServer()
时,它说。。。“net.minecraft.entity.player.PlayerEntity.getServer()”为空
简而言之,如果我不能使用user.getServer()
,也不能使用world.getServer
我能用什么?