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.NickoBungee;
|
||||||
import net.artelnatif.nicko.bungee.pluginchannel.PluginMessageUtils;
|
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.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.connection.Server;
|
import net.md_5.bungee.api.connection.Server;
|
||||||
import net.md_5.bungee.api.event.ServerSwitchEvent;
|
import net.md_5.bungee.api.event.ServerSwitchEvent;
|
||||||
import net.md_5.bungee.api.plugin.Listener;
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
import net.md_5.bungee.event.EventHandler;
|
import net.md_5.bungee.event.EventHandler;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class ServerSwitchListener implements Listener {
|
public class ServerSwitchListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onSwitch(ServerSwitchEvent event) {
|
public void onSwitch(ServerSwitchEvent event) {
|
||||||
final ServerInfo from = event.getFrom();
|
|
||||||
final ProxiedPlayer player = event.getPlayer();
|
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);
|
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 com.google.common.io.ByteStreams;
|
||||||
import net.md_5.bungee.api.config.ServerInfo;
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class PluginMessageUtils {
|
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; }
|
if (info == null) { return; }
|
||||||
|
|
||||||
final ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
final ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||||
output.writeUTF(channel);
|
output.writeInt(payload.size());
|
||||||
for (String elt : data) {
|
for (String elt : payload) {
|
||||||
output.writeUTF(elt);
|
output.writeUTF(elt);
|
||||||
}
|
}
|
||||||
System.out.printf("(%s) PluginMessage <-> %s", info.getSocketAddress().toString(), output);
|
|
||||||
info.sendData(channel, output.toByteArray(), true);
|
info.sendData(channel, output.toByteArray(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class UpdateMessageHandler implements PluginMessageListener {
|
public class PluginMessageHandler implements PluginMessageListener {
|
||||||
@Override
|
@Override
|
||||||
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
|
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
|
||||||
if (!channel.equals(NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE)) {
|
if (!channel.equals(NickoBungee.NICKO_PLUGIN_CHANNEL_UPDATE)) {
|
||||||
|
@ -21,7 +21,8 @@ public class UpdateMessageHandler implements PluginMessageListener {
|
||||||
|
|
||||||
final int payloadSize = in.readInt();
|
final int payloadSize = in.readInt();
|
||||||
if (payloadSize == 0 || payloadSize > 4) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue