Java Minecraft插件|创建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(

我想用命令创建一个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("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();