2015-12-19 73 views
2

我試圖通過「BungeeCord插件消息通道」從代理向服務器發送消息。我用下面的代碼:從BungeeCord發送插件消息到SpigotServer

在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()); 

在插口插件:

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

對不起,我的英文不好,並感謝您的幫助:)

+0

該代碼看起來像是正確的,什麼'pp'? 編輯:你在onEnable中使用了messageListener(this)嗎? – TxCraft

+0

'pp'是一個'ProxiedPlayer'...我讓它工作,但有些消息收到了兩次,所以現在我試着用'套接字'來開發一些東西。 – Nightfighter001

回答

0

在你插口插件,你應該做

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

+0

你不是100%正確的:當然你必須註冊'onEnable()'中的頻道。但是你不必使用Channel'BungeeCord'!您也可以使用其他Channles,但是您也必須在BungeeCord插件中註冊它。你也必須使用你自己的消息。 – Nightfighter001

+0

您需要使用BungeeCord通道與BungeeCord進行通信。你讀過這個嗎? https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#the-bungeecord-plugin-channel – gyurix

+0

好吧,不,如果我只想發送沒有前進的字符串或類似的東西 – Nightfighter001

2

你犯了另一個錯誤。您正在將數據包發送到播放器而不是服務器。你需要做

pp.getServer().sendData("GlobalSystem", bb.toByteArray()); 
+0

哦,沒錯,我現在使用的是多播,所以如果我想發送消息,也不必成爲在線玩家。 – Nightfighter001