使用Craftbukkits API发送数据包无法正常工作

时间:2015-06-28 16:06:33

标签: java minecraft bukkit

我一直在尝试使用许多不同的方法向玩家发送JSON Raw消息,但似乎没有任何方法可行。我尝试过的一件事就是这样做:

        String json = "{text:\"Test!\",hoverEvent:{action:show_text,value:\"test\"}}";
        PacketPlayOutChat packet = new PacketPlayOutChat(ChatSerializer.a(json), true);
        ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);

现在,当eclipse验证代码时,不会出现任何错误,只有当服务器运行此代码时,才会出现此错误:

java.lang.NoClassDefFoundError: net/minecraft/server/v1_7_R3/Packet
        at bukkit.pangea.terms.Main.registerCommands(Main.java:31) ~[?:?]
        at bukkit.pangea.terms.Main.onEnable(Main.java:21) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[c
raftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
.java:335) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
r.java:405) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.jav
a:356) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.
java:316) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.reload(CraftServer.java:74
6) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [craftbukkit.jar:git-Spigot
-952179b-e87122e]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
25) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:14
1) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServe
r.java:646) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchServerCommand(Craf
tServer.java:632) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at net.minecraft.server.v1_8_R1.DedicatedServer.aM(DedicatedServer.java:
353) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:3
17) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:6
23) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java
:526) [craftbukkit.jar:git-Spigot-952179b-e87122e]
        at java.lang.Thread.run(Unknown Source) [?:1.7.0_71]
Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_7_R3.Packet

        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
java:91) ~[craftbukkit.jar:git-Spigot-952179b-e87122e]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
java:86) ~[craftbukkit.jar:git-Spigot-952179b-e87122e]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_71]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_71]
        ... 18 more

我尝试过的很多其他事情也给了我类似的错误。如果有人能帮我解决这个问题,那将非常有帮助,谢谢。

3 个答案:

答案 0 :(得分:3)

你的方法在我的spigot / craftbukkit版本中运行得很好,虽然看起来我使用的是更新的版本(1.8.3),其中PacketPlayOutChat的构造函数将一个字节作为第二个参数而不是布尔值。此字节(值1或2)确定聊天消息是正常发送还是显示在操作栏上方。我会使用BuildTools将您的craftbukkit / spigot jar更新到最新版本。

答案 1 :(得分:0)

好吧,你可以在你的服务器上使用另一个spigot / bukkit jar,而不是你使用它。使用完全相同。否则无法找到服务器Packet版本的主类。

java.lang.NoClassDefFoundError: net/minecraft/server/v1_7_R3/Packet

这里说,它无法找到班级。你在服务器上使用哪个Spigot / Bukkit版本?你用哪些开发?

答案 2 :(得分:0)

您需要在项目的构建路径中安装更高版本的Spigot。如果你不能按上面的答案所描述的那样构建它,那么你可以依赖服务器使用的jar。