我尝试通过" BungeeCord Plugin Messaging Channel"发送消息。从代理服务器到服务器。我使用了以下代码:
在BungeeCord插件中:
ByteArrayOutputStream bb = new ByteArrayOutputStream();
DataOutputStream outt = new DataOutputStream(bb);
try {
outt.writeUTF("Forward");
outt.writeUTF("lobby");
outt.writeUTF("anfrage ");
outt.writeUTF(pp.getDisplayName());
} catch (IOException e) {
e.printStackTrace();
}
pp.sendData("GlobalSystem", bb.toByteArray());
在Spigot插件中:
public class MessageListener implements PluginMessageListener {
public MessageListener(main main) {
plugin = main;
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, "GlobalSystem", this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "GlobalSystem");
}
@Override
public void onPluginMessageReceived(String channel, Player p, byte[] args) {
System.out.println("hi");
}
main plugin = main.getPlugin();
}
它出了什么问题? 我在这些网站上阅读了所有内容:
Bukkit & Bungee Plugin Message Channel
抱歉我的英语不好,谢谢你的帮助:)
答案 0 :(得分:3)
你犯了另一个错误。您将数据包发送到播放器而不是服务器。你需要做
pp.getServer().sendData("GlobalSystem", bb.toByteArray());
答案 1 :(得分:0)
在您的Spigot插件中,您应该
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, "BungeeCord", this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
因为Spigot-BungeeCord通信通过BungeeCord频道工作。
阅读https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/页面,了解有关Spigot-BungeeCord通讯的更多信息。