3

我试图通过“BungeeCord 插件消息通道”从代理向服务器发送消息。我使用了以下代码:

在 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 插件消息频道

对不起我的英语不好,谢谢你的帮助:)

4

2 回答 2

3

你又犯了一个错误。您将数据包发送到播放器而不是服务器。你需要做

pp.getServer().sendData("GlobalSystem", bb.toByteArray());
于 2016-04-16T20:58:47.383 回答
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 通信的更多信息。

于 2016-03-19T22:58:23.127 回答