package net.t2code.t2codelib.SPIGOT.api.bungeePlayers; import lombok.Getter; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.system.T2CodeLibMain; import net.t2code.t2codelib.Util; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class T2CbungeePlayers implements PluginMessageListener { @Getter private static List bungeePlayers = new ArrayList<>(); @Override public void onPluginMessageReceived(String channel, Player player, byte[] message) { DataInputStream stream = new DataInputStream(new ByteArrayInputStream(message)); T2Csend.debug(T2CodeLibMain.getPlugin(), "stream: " + stream.toString()); try { T2CbungeePlayersEnum subChannel = T2CbungeePlayersEnum.valueOf(stream.readUTF()); String input = stream.readUTF(); String uuid = stream.readUTF(); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received channel: " + channel); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received subChannel: " + subChannel.name()); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received input: " + input); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received input2/uuid: " + uuid); switch (subChannel) { case JOIN: bungeePlayers.add(input); break; case QUIT: bungeePlayers.remove(input); break; case GIVEALL: if (!Util.getServerUUID().toString().equals(uuid)) { return; } bungeePlayers.clear(); String[] in = input.split(";"); bungeePlayers.addAll(Arrays.asList(in)); break; case CLEAR: bungeePlayers.clear(); break; } } catch (IOException e) { e.printStackTrace(); } } public static void callAllBungeePlayers() { if (Bukkit.getOnlinePlayers().isEmpty()) { Bukkit.getScheduler().runTaskLaterAsynchronously(T2CodeLibMain.getPlugin(), new Runnable() { @Override public void run() { callAllBungeePlayers(); } }, 20L); return; } ByteArrayOutputStream stream = new ByteArrayOutputStream(); DataOutputStream output = new DataOutputStream(stream); try { output.writeUTF(T2CbungeePlayersEnum.GIVEALL.name()); output.writeUTF(Util.getServerUUID().toString()); } catch (IOException e) { e.printStackTrace(); } for (Player player : Bukkit.getOnlinePlayers()) { player.sendPluginMessage(T2CodeLibMain.getPlugin(), "t2c:bonlp", stream.toByteArray()); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received channel: t2c:bonlp"); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage send subChannel: " + T2CbungeePlayersEnum.GIVEALL.name()); T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage send output/uuid: " + Util.getServerUUID().toString()); return; } } }