Java Minecraft插件|创建NPC不工作
我想用命令创建一个NPC 我写了这样一篇文章:Java Minecraft插件|创建NPC不工作,java,minecraft,bukkit,Java,Minecraft,Bukkit,我想用命令创建一个NPC 我写了这样一篇文章: @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender instanceof Player) { Player p = (Player) sender; if (command.getName().equalsIgnoreCase(
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
Player p = (Player) sender;
if (command.getName().equalsIgnoreCase("npc")) {
if (args.length < 1) {
sender.sendMessage("§cSyntax: /npc create [name]");
return true;
}
if (args[0].equalsIgnoreCase("create")) {
if (args.length < 2) {
sender.sendMessage("§cSyntax: /npc create [name]");
return true;
}
sender.sendMessage("§4[§2Quests§4] §fNPC spawned.");
MinecraftServer ms = (MinecraftServer) Bukkit.getServer();
WorldServer ws = (WorldServer) p.getWorld();
GameProfile gp = new GameProfile(UUID.randomUUID(), "NAME");
EntityPlayer npc = new EntityPlayer(ms, ws, gp, new PlayerInteractManager(ws));
Player npcPlayer = npc.getBukkitEntity().getPlayer();
npcPlayer.setPlayerListName("");
npc.setLocation(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), p.getLocation().getYaw(), p.getLocation().getPitch());
PlayerConnection connection = ((CraftPlayer)p).getHandle().playerConnection;
connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, npc));
connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
return true;
}
if (args[0].equalsIgnoreCase("delete")) {
sender.sendMessage("§cSyntax: /npc delete");
return true;
}
}
}
return false;
}
上面说,我无法将服务器转换为MinecraftServer。我的教程就是这样展示的,这对他很有用
他的密码是:
MinecraftServer ms=MinecraftServer Bukkit.getServer.getServer
但是这个双getServer已经不可用了
编辑1:
我使用了spigot 1.14.4库
我知道这个教程很旧,但我没有找到其他东西来产生NPC。
我的目标是创建NPC并能够单击它们。如果不确切知道您正在使用的库与教程正在使用的库,很难给出完整的答案。我假设这是Bukkit.getServer的源代码,也是MinecraftServer的源代码 从中可以看出,getServer是Bukkit中的一个静态方法,并返回一个实现该方法的类 但是从第二个来源我们可以看到MinecraftServer实现了ICommandListener、Runnable和IMojangStatistics 由于MinecraftServer未实现Bukkit.getServer实现的服务器接口,因此编译器无法将此调用的返回值强制转换为MinecraftServer 至于为什么双getServer不可用——如果我们看一下Bukkit.getServer返回的函数,我们可以看到它没有包含getServer方法,因此不能调用它。我说不出教程是从哪里来的 如果你能提供到教程的链接,我可以编辑/修改这个答案以更好地适应这种情况
MinecraftServer ms = (MinecraftServer) Bukkit.getServer();