package net.t2code.t2codelib.BUNGEE.api.bungeePlayers; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.event.PluginMessageEvent; import net.md_5.bungee.api.event.PostLoginEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.t2code.t2codelib.BUNGEE.api.messages.T2CBsend; import net.t2code.t2codelib.BUNGEE.system.T2CodeBMain; import net.t2code.t2codelib.SPIGOT.api.bungeePlayers.T2CbungeePlayersEnum; import java.io.*; import java.util.logging.Logger; public class T2CBbungeePlayers implements Listener { @EventHandler public void onJoin(PostLoginEvent e) { sendToSpigotPlayer(e.getPlayer().getName(), T2CbungeePlayersEnum.JOIN, ""); } @EventHandler public void onDisconnect(PlayerDisconnectEvent e) { sendToSpigotPlayer(e.getPlayer().getName(), T2CbungeePlayersEnum.QUIT, ""); } public static void sendToSpigotPlayer(String name, T2CbungeePlayersEnum value, String uuid) { switch (value) { case JOIN: case QUIT: sendToSpigotPlayerExecute(name, value, uuid); break; case GIVEALL: StringBuilder input = new StringBuilder(); for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { input.append(player.getName()).append(";"); } sendToSpigotPlayerExecute(input.toString(), T2CbungeePlayersEnum.GIVEALL, uuid); break; } } private static void sendToSpigotPlayerExecute(String name, T2CbungeePlayersEnum value, String uuid) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); DataOutputStream output = new DataOutputStream(stream); try { output.writeUTF(value.name()); output.writeUTF(name); output.writeUTF(uuid); } catch (IOException e) { Logger.getLogger(e.getMessage()); } T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received channel: t2c:bonlp"); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received subChannel: " + value.name()); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input: " + name); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input2/uuid: " + uuid); ProxyServer.getInstance().getServers().values().stream().forEach((server) -> { server.sendData("t2c:bonlp", stream.toByteArray()); }); } public static void sendToSpigotDeleteAll() { ByteArrayOutputStream stream = new ByteArrayOutputStream(); DataOutputStream output = new DataOutputStream(stream); try { output.writeUTF(T2CbungeePlayersEnum.CLEAR.name()); output.writeUTF(""); output.writeUTF(""); } catch (IOException e) { Logger.getLogger(e.getMessage()); } ProxyServer.getInstance().getServers().values().stream().forEach((server) -> { server.sendData("t2c:bonlp", stream.toByteArray()); }); } @EventHandler public void onPluginMessage(PluginMessageEvent event) { if (event.getTag().equalsIgnoreCase("t2c:bonlp")) { DataInputStream stream = new DataInputStream(new ByteArrayInputStream(event.getData())); event.setCancelled(true); try { T2CbungeePlayersEnum subChannel = T2CbungeePlayersEnum.valueOf(stream.readUTF()); String input = stream.readUTF(); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received channel: " + event.getTag()); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received subChannel: " + subChannel.name()); T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input/uuid: " + input); sendToSpigotPlayer("", subChannel, input); } catch (IOException e) { e.printStackTrace(); } } } }