package net.ME1312.SubServers.Bungee.Network.Packet; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Server.Protocol.PacketObjectIn; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubServers.Bungee.SubProxy; import net.md_5.bungee.api.config.ListenerInfo; import java.util.LinkedList; import java.util.UUID; /** * Download Proxy Info Packet */ public class PacketDownloadPlatformInfo implements PacketObjectIn, PacketObjectOut { private SubProxy plugin; private UUID tracker; /** * New PacketDownloadPlatformInfo (In) * * @param plugin SubPlugin */ public PacketDownloadPlatformInfo(SubProxy plugin) { this.plugin = plugin; } /** * New PacketDownloadPlatformInfo (Out) * * @param plugin SubPlugin * @param tracker Receiver ID */ public PacketDownloadPlatformInfo(SubProxy plugin, UUID tracker) { this.plugin = plugin; this.tracker = tracker; } @Override public ObjectMap send(SubDataClient client) { ObjectMap data = new ObjectMap(); if (tracker != null) data.set(0x0000, tracker); ObjectMap info = new ObjectMap(); ObjectMap subservers = new ObjectMap(); subservers.set("version", plugin.api.getWrapperVersion().toString()); if (plugin.api.getWrapperBuild() != null) subservers.set("build", plugin.api.getWrapperBuild().toString()); subservers.set("last-reload", plugin.resetDate); subservers.set("proxies", plugin.api.getProxies().size()); subservers.set("hosts", plugin.api.getHosts().size()); subservers.set("subservers", plugin.api.getSubServers().size()); info.set("subservers", subservers); ObjectMap bungee = new ObjectMap(); bungee.set("version", plugin.api.getProxyVersion().toString()); bungee.set("disabled-cmds", plugin.getConfig().getDisabledCommands()); bungee.set("player-limit", plugin.getConfig().getPlayerLimit()); bungee.set("servers", plugin.api.getServers().size()); LinkedList> listeners = new LinkedList>(); for (ListenerInfo next : plugin.getConfig().getListeners()) { ObjectMap listener = new ObjectMap(); listener.set("forced-hosts", next.getForcedHosts()); listener.set("motd", next.getMotd()); listener.set("priorities", next.getServerPriority()); listener.set("player-limit", next.getMaxPlayers()); listeners.add(listener); } bungee.set("listeners", listeners); info.set("bungee", bungee); ObjectMap minecraft = new ObjectMap(); LinkedList mcversions = new LinkedList(); for (Version version : plugin.api.getGameVersion()) mcversions.add(version.toString()); minecraft.set("version", mcversions); minecraft.set("players", plugin.api.getRemotePlayers().size()); info.set("minecraft", minecraft); ObjectMap system = new ObjectMap(); ObjectMap os = new ObjectMap(); os.set("name", System.getProperty("os.name")); os.set("version", System.getProperty("os.version")); system.set("os", os); ObjectMap java = new ObjectMap(); java.set("version", System.getProperty("java.version")); system.set("java", java); info.set("system", system); data.set(0x0001, info); return data; } @Override public void receive(SubDataClient client, ObjectMap data) { client.sendPacket(new PacketDownloadPlatformInfo(plugin, (data != null && data.contains(0x0000))?data.getUUID(0x0000):null)); } }