从BungeeCord发送PluginMessage到SpigotServer

时间:2015-12-19 22:27:02

标签: java plugins minecraft bukkit bungeecord

我尝试通过" 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();
}

它出了什么问题? 我在这些网站上阅读了所有内容:

PostCrafter.de

Bukkit & Bungee Plugin Message Channel

抱歉我的英语不好,谢谢你的帮助:)

2 个答案:

答案 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通讯的更多信息。