feat(bungee): communication between servers
This commit is contained in:
parent
573463d7f3
commit
d31831c5ee
3 changed files with 17 additions and 10 deletions
|
@ -2,20 +2,25 @@ package net.artelnatif.nicko.bungee.event;
|
|||
|
||||
import net.artelnatif.nicko.bungee.NickoBungee;
|
||||
import net.artelnatif.nicko.bungee.pluginchannel.PluginMessageUtils;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.connection.Server;
|
||||
import net.md_5.bungee.api.event.ServerSwitchEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ServerSwitchListener implements Listener {
|
||||
@EventHandler
|
||||
public void onSwitch(ServerSwitchEvent event) {
|
||||
final ServerInfo from = event.getFrom();
|
||||
final ProxiedPlayer player = event.getPlayer();
|
||||
final Server to = player.getServer();
|
||||
final Server server = player.getServer();
|
||||
System.out.println("NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE = " + NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE);
|
||||
PluginMessageUtils.sendMessage(from, NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE, player.getUniqueId().toString());
|
||||
|
||||
final ArrayList<String> payload = new ArrayList<>();
|
||||
payload.add(player.getUniqueId().toString());
|
||||
payload.add("otherdata");
|
||||
|
||||
PluginMessageUtils.sendMessage(server.getInfo(), NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE, payload);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,16 +4,17 @@ import com.google.common.io.ByteArrayDataOutput;
|
|||
import com.google.common.io.ByteStreams;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PluginMessageUtils {
|
||||
public static void sendMessage(final ServerInfo info, final String channel, final String... data) {
|
||||
public static void sendMessage(final ServerInfo info, final String channel, final ArrayList<String> payload) {
|
||||
if (info == null) { return; }
|
||||
|
||||
final ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||
output.writeUTF(channel);
|
||||
for (String elt : data) {
|
||||
output.writeInt(payload.size());
|
||||
for (String elt : payload) {
|
||||
output.writeUTF(elt);
|
||||
}
|
||||
System.out.printf("(%s) PluginMessage <-> %s", info.getSocketAddress().toString(), output);
|
||||
info.sendData(channel, output.toByteArray(), true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import org.bukkit.plugin.messaging.PluginMessageListener;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class UpdateMessageHandler implements PluginMessageListener {
|
||||
public class PluginMessageHandler implements PluginMessageListener {
|
||||
@Override
|
||||
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
|
||||
if (!channel.equals(NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE)) {
|
||||
|
@ -21,7 +21,8 @@ public class UpdateMessageHandler implements PluginMessageListener {
|
|||
|
||||
final int payloadSize = in.readInt();
|
||||
if (payloadSize == 0 || payloadSize > 4) {
|
||||
NickoBukkit.getInstance().getLogger().severe("Prevented error by skipping malformed payload of size " + payloadSize + ".");
|
||||
NickoBukkit.getInstance().getLogger().severe("Prevented error by skipping malformed payload of size " + payloadSize + "!" +
|
||||
"This should not have happened, open an issue on the repository at https://atnrch.xyz/git/aro/Nicko !");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue