diff --git a/SubServers.Bungee/common/pom.xml b/SubServers.Bungee/common/pom.xml index 38f15076..30390b60 100644 --- a/SubServers.Bungee/common/pom.xml +++ b/SubServers.Bungee/common/pom.xml @@ -31,7 +31,7 @@ net.ME1312.Galaxi GalaxiUtil 20w33a - compile + provided net.ME1312.Galaxi diff --git a/SubServers.Client/Bukkit/pom.xml b/SubServers.Client/Bukkit/pom.xml index 71d9d943..7575ab51 100644 --- a/SubServers.Client/Bukkit/pom.xml +++ b/SubServers.Client/Bukkit/pom.xml @@ -52,6 +52,13 @@ compile true + + net.ME1312.SubServers + SubServers.Client.Common + -PLACEHOLDER + compile + true + net.ME1312.SubData Client @@ -160,6 +167,10 @@ https://dev.me1312.net/jenkins/job/SubData/javadoc/Client/ https://hub.spigotmc.org/javadocs/spigot/ + true + + net.ME1312.SubServers:SubServers.Client.Common:* + diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java index be293c3c..d53cd2a4 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.SubServers.Client.Bukkit.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.SubAPI; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java index 8950173f..ea553ada 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java @@ -3,8 +3,8 @@ package net.ME1312.SubServers.Client.Bukkit.Event; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.Library.SubEvent; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.SubAPI; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIHandler.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIHandler.java index e8448e6e..432d44c0 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIHandler.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIHandler.java @@ -7,10 +7,12 @@ import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Host; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketCreateServer; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketUpdateServer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -26,6 +28,8 @@ import org.bukkit.event.player.PlayerQuitEvent; import java.util.HashMap; import java.util.UUID; +import static net.ME1312.SubServers.Client.Bukkit.Library.ObjectPermission.*; + /** * Default GUI Listener */ @@ -111,7 +115,8 @@ public class DefaultUIHandler implements UIHandler, Listener { if (player.hasPermission("subservers.host.*.*") || player.hasPermission("subservers.host.*.create") || player.hasPermission("subservers.host." + host + ".*") || player.hasPermission("subservers.host." + host + ".create")) { player.closeInventory(); gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response")); - ((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player.getUniqueId(), ((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), data -> { + UIRenderer.CreatorOptions options = ((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]); + ((SubDataClient) plugin.api.getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player.getUniqueId(), options.getName(), options.getHost(), options.getTemplate(), options.getVersion(), options.getPort(), data -> { gui.back(); })); } else { @@ -319,7 +324,7 @@ public class DefaultUIHandler implements UIHandler, Listener { gui.back(); } else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update"))) { player.closeInventory(); - if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.update")) { + if (permits((SubServer) gui.lastVisitedObjects[0], player, "subservers.subserver.%.*", "subservers.subserver.%.update")) { if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update.Title"), 4 * 20)) player.sendMessage(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update.Message")); input.put(player.getUniqueId(), m -> { @@ -332,7 +337,7 @@ public class DefaultUIHandler implements UIHandler, Listener { } else gui.reopen(); } else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start"))) { player.closeInventory(); - if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.start")) { + if (permits((SubServer) gui.lastVisitedObjects[0], player, "subservers.subserver.%.*", "subservers.subserver.%.start")) { gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response")); ((SubServer) gui.lastVisitedObjects[0]).start(player.getUniqueId(), response -> { gui.setDownloading(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start.Title")); @@ -341,7 +346,7 @@ public class DefaultUIHandler implements UIHandler, Listener { } else gui.reopen(); } else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop"))) { player.closeInventory(); - if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) { + if (permits((SubServer) gui.lastVisitedObjects[0], player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) { gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response")); final Container listening = new Container(true); PacketInExRunEvent.callback("SubStoppedEvent", new Callback>() { @@ -365,7 +370,7 @@ public class DefaultUIHandler implements UIHandler, Listener { } else gui.reopen(); } else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate"))) { player.closeInventory(); - if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) { + if (permits((SubServer) gui.lastVisitedObjects[0], player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) { gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response")); final Container listening = new Container(true); PacketInExRunEvent.callback("SubStoppedEvent", new Callback>() { @@ -389,7 +394,7 @@ public class DefaultUIHandler implements UIHandler, Listener { } else gui.reopen(); } else if (item.equals(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command"))) { player.closeInventory(); - if (((SubServer) gui.lastVisitedObjects[0]).permits(player, "subservers.subserver.%.*", "subservers.subserver.%.command")) { + if (permits((SubServer) gui.lastVisitedObjects[0], player, "subservers.subserver.%.*", "subservers.subserver.%.command")) { if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command.Title"), 4 * 20)) player.sendMessage(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command.Message")); input.put(player.getUniqueId(), m -> { diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIRenderer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIRenderer.java index d56a56b4..3b43ed6c 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIRenderer.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/DefaultUIRenderer.java @@ -3,10 +3,10 @@ package net.ME1312.SubServers.Client.Bukkit.Graphic; import net.ME1312.Galaxi.Library.Container.Container; import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Host; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Server; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubCreator; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.Server; +import net.ME1312.SubServers.Client.Common.Network.API.SubCreator; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -19,6 +19,8 @@ import org.bukkit.inventory.meta.ItemMeta; import java.text.DecimalFormat; import java.util.*; +import static net.ME1312.SubServers.Client.Bukkit.Library.ObjectPermission.*; + /** * Default GUI Renderer Class */ @@ -1003,7 +1005,7 @@ public class DefaultUIRenderer extends UIRenderer { Player player = Bukkit.getPlayer(this.player); if (subserver.isRunning()) { - if (!subserver.permits(player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) { + if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) { block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7); blockMeta = block.getItemMeta(); blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate"))); @@ -1018,7 +1020,7 @@ public class DefaultUIRenderer extends UIRenderer { inv.setItem(1, block); inv.setItem(10, block); - if (!subserver.permits(player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) { + if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) { block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7); blockMeta = block.getItemMeta(); blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop"))); @@ -1034,7 +1036,7 @@ public class DefaultUIRenderer extends UIRenderer { inv.setItem(11, block); inv.setItem(12, block); - if (!subserver.permits(player, "subservers.subserver.%.*", "subservers.subserver.%.command")) { + if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.command")) { block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7); blockMeta = block.getItemMeta(); blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command"))); @@ -1052,7 +1054,7 @@ public class DefaultUIRenderer extends UIRenderer { inv.setItem(15, block); inv.setItem(16, block); } else { - if (!subserver.permits(player, "subservers.subserver.%.*", "subservers.subserver.%.start")) { + if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.start")) { block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7); blockMeta = block.getItemMeta(); blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start"))); @@ -1083,7 +1085,7 @@ public class DefaultUIRenderer extends UIRenderer { inv.setItem(11, block); inv.setItem(12, block); - if (!subserver.permits(player, "subservers.subserver.%.*", "subservers.subserver.%.update")) { + if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.update")) { block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7); blockMeta = block.getItemMeta(); blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update"))); diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/UIRenderer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/UIRenderer.java index 8c5d706d..19a78d4e 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/UIRenderer.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/UIRenderer.java @@ -4,8 +4,8 @@ import net.ME1312.Galaxi.Library.Container.Container; import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Host; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/BungeeChat.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/BungeeChat.java index 76cb52d9..34535d9d 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/BungeeChat.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/BungeeChat.java @@ -1,9 +1,6 @@ package net.ME1312.SubServers.Client.Bukkit.Library.Compatibility; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Host; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Proxy; -import net.ME1312.SubServers.Client.Bukkit.Network.API.Server; -import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.*; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.ClickEvent; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/PlaceholderImpl.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/PlaceholderImpl.java index ae046da6..1436b20c 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/PlaceholderImpl.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/Compatibility/PlaceholderImpl.java @@ -6,8 +6,8 @@ import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.Taskable; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Client.Common.Network.API.*; import net.ME1312.SubServers.Client.Bukkit.Event.*; -import net.ME1312.SubServers.Client.Bukkit.Network.API.*; import net.ME1312.SubServers.Client.Bukkit.SubAPI; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; import org.bukkit.Bukkit; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/ObjectPermission.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/ObjectPermission.java new file mode 100644 index 00000000..e51f1b3b --- /dev/null +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Library/ObjectPermission.java @@ -0,0 +1,104 @@ +package net.ME1312.SubServers.Client.Bukkit.Library; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.Proxy; +import net.ME1312.SubServers.Client.Common.Network.API.Server; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; +import org.bukkit.permissions.Permissible; + +import java.util.List; + +/** + * Object Permissions Class + */ +public class ObjectPermission { + private ObjectPermission() {} + + /** + * Determine if an object can perform some action on this proxy using possible permissions + * + * @param proxy Proxy to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the proxy name) + * @return Permission Check Result + */ + public static boolean permits(Proxy proxy, Permissible object, String... permissions) { + return permits(proxy.getName(), object, permissions); + } + + /** + * Determine if an object can perform some action on a host using possible permissions + * + * @param host Host to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the host name) + * @return Permission Check Result + */ + public static boolean permits(Host host, Permissible object, String... permissions) { + return permits(host.getName(), object, permissions); + } + + /** + * Determine if an object can perform some action on another object using possible permissions + * + * @param string String to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the object name) + * @return Permission Check Result + */ + private static boolean permits(String string, Permissible object, String... permissions) { + if (Util.isNull(object)) throw new NullPointerException(); + boolean permitted = false; + + for (int p = 0; !permitted && p < permissions.length; p++) { + String perm = permissions[p]; + if (perm != null) { + // Check all proxies & individual proxies permission + permitted = object.hasPermission(perm.replace("%", "*")) + || object.hasPermission(perm.replace("%", string.toLowerCase())); + } + } + + return permitted; + } + + /** + * Determine if an object can perform some action on a server using possible permissions + * + * @param server Server to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the server name) + * @return Permission Check Result + */ + public static boolean permits(Server server, Permissible object, String... permissions) { + if (Util.isNull(object)) throw new NullPointerException(); + boolean permitted = false; + + for (int p = 0; !permitted && p < permissions.length; p++) { + String perm = permissions[p]; + if (perm != null) { + // Check all servers & individual servers permission + permitted = object.hasPermission(perm.replace("%", "*")) + || object.hasPermission(perm.replace("%", server.getName().toLowerCase())); + + // Check all hosts & individual hosts permission + if (server instanceof SubServer) { + permitted = permitted || object.hasPermission(perm.replace("%", "::*")) + || object.hasPermission(perm.replace("%", "::" + ((SubServer) server).getHost().toLowerCase())); + } + + // Check all groups & individual groups permission + List groups = server.getGroups(); + if (groups.size() > 0) { + permitted = permitted || object.hasPermission(perm.replace("%", ":*")); + for (int g = 0; !permitted && g < groups.size(); g++) { + permitted = object.hasPermission(perm.replace("%", ":" + groups.get(g).toLowerCase())); + } + } + } + } + + return permitted; + } +} \ No newline at end of file diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Host.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Host.java deleted file mode 100644 index ebb92590..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Host.java +++ /dev/null @@ -1,777 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; -import org.bukkit.permissions.Permissible; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.*; - -/** - * Simplified Host Data Class - */ -public class Host { - HashMap servers = new HashMap(); - private SubCreator creator; - private List players = null; - ObjectMap raw; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Host - * - * @param raw Raw representation of the Host - */ - public Host(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Host - * - * @param client SubData connection - * @param raw Raw representation of the Host - */ - Host(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Host && getSignature().equals(((Host) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - - servers.clear(); - this.creator = new SubCreator(this, raw.getMap("creator")); - for (String server : raw.getMap("servers").getKeys()) { - servers.put(server.toLowerCase(), new SubServer(this, raw.getMap("servers").getMap(server))); - } - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array (may be empty if unsupported) - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - if (raw.contains("subdata")) { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } else { - return new SubDataSender[0]; - } - } - - /** - * Determine if an object can perform some action on this host using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the host name) - * @return Permission Check Result - */ - public boolean permits(Permissible object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all proxies & individual proxies permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - } - } - - return permitted; - } - - /** - * Is this Host Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * Is this Host Enabled? - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Address of this Host - * - * @return Host Address - */ - public InetAddress getAddress() { - try { - return InetAddress.getByName(raw.getRawString("address")); - } catch (UnknownHostException e) { - throw new IllegalStateException("Invalid address response from raw data key: address"); - } - } - - /** - * Get the host Directory Path - * - * @return Host Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Name of this Host - * - * @return Host Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Host - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get players on servers provided by this host across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on servers provided by this host across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (SubServer server : getSubServers().values()) for (NamedContainer player : server.getGlobalPlayers()) ids.add(player.get()); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Starts the Servers Specified - * - * @param servers Servers - */ - public void start(String... servers) { - start(null, servers); - } - - /** - * Starts the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void start(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).start(player); - } - } - - /** - * Stops the Servers Specified - * - * @param servers Servers - */ - public void stop(String... servers) { - stop(null, servers); - } - - /** - * Stops the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void stop(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).stop(player); - } - } - - /** - * Terminates the Servers Specified - * - * @param servers Servers - */ - public void terminate(String... servers) { - terminate(null, servers); - } - - /** - * Terminates the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void terminate(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).terminate(player); - } - } - - /** - * Commands the Servers Specified - * - * @param command Command to send - * @param servers Servers - */ - public void command(String command, String... servers) { - command(null, command, servers); - } - - /** - * Commands the Servers Specified - * - * @param player Player who started - * @param command Command to send - * @param servers Servers - * @return Success Status - */ - public void command(UUID player, String command, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).command(player, command); - } - } - - /** - * Gets the SubCreator Instance for this Host - * - * @return SubCreator - */ - public SubCreator getCreator() { - return creator; - } - - /** - * Gets the SubServers on this Host - * - * @return SubServer Map - */ - public Map getSubServers() { - return new TreeMap(servers); - } - - /** - * Gets a SubServer - * - * @param name SubServer Name - * @return a SubServer - */ - public SubServer getSubServer(String name) { - if (Util.isNull(name)) throw new NullPointerException(); - return getSubServers().get(name.toLowerCase()); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, response); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketAddServer(player, name, enabled, getName(), port, motd, log, directory, executable, stopcmd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(player, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - */ - public void removeSubServer(String name) { - removeSubServer(null, name); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void removeSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, i -> {}); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - */ - public void forceRemoveSubServer(String name) { - forceRemoveSubServer(null, name); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void forceRemoveSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(String name, Callback response) { - removeSubServer(null, name, response); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(String name, Callback response) { - forceRemoveSubServer(null, name, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, response); - } - - private void removeSubServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void recycleSubServer(String name) { - recycleSubServer(null, name); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void recycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void forceRecycleSubServer(String name) { - forceRecycleSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void forceRecycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, i -> {}); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(String name, Callback response) { - recycleSubServer(null, name, response); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(String name, Callback response) { - forceRecycleSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, response); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name) { - deleteSubServer(null, name); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name) { - forceDeleteSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, i -> {}); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name, Callback response) { - deleteSubServer(null, name, response); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name, Callback response) { - forceDeleteSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, response); - } - - private void deleteSubServer(UUID player, String name, boolean recycle, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketDeleteServer(player, name, recycle, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Host - * - * @return Raw Host - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Proxy.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Proxy.java deleted file mode 100644 index c3db929c..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Proxy.java +++ /dev/null @@ -1,243 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadProxyInfo; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; -import org.bukkit.permissions.Permissible; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Proxy Data Class - */ -public class Proxy { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Proxy - * - * @param raw Raw representation of the Proxy - */ - public Proxy(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Proxy - * - * @param client SubData connection - * @param raw Raw representation of the Proxy - */ - Proxy(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Proxy && getSignature().equals(((Proxy) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Determine if an object can perform some action on this proxy using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the proxy name) - * @return Permission Check Result - */ - public boolean permits(Permissible object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all proxies & individual proxies permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - } - } - - return permitted; - } - - /** - * Get the Name of this Proxy - * - * @return Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Proxy - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Determine if the proxy is the Master Proxy - * - * @return Master Proxy Status - */ - public boolean isMaster() { - return raw.getBoolean("master"); - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @return Remote Player Collection - */ - public Collection> getPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @param callback Remote Player Collection - */ - public void getPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Proxy - * - * @return Raw Proxy - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/RemotePlayer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/RemotePlayer.java deleted file mode 100644 index 8f3ae15e..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/RemotePlayer.java +++ /dev/null @@ -1,188 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.util.*; - -/** - * Simplified RemotePlayer Data Class - */ -public class RemotePlayer { - ObjectMap raw; - private Proxy proxy = null; - private Server server = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Remote Player - * - * @param raw Raw representation of the Remote Player - */ - public RemotePlayer(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Remote Player - * - * @param client SubData connection - * @param raw Raw representation of the Remote Player - */ - RemotePlayer(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof RemotePlayer && getUniqueId().equals(((RemotePlayer) obj).getUniqueId()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.proxy = null; - this.server = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - UUID id = getUniqueId(); - client().sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> load(data.getMap(id.toString())))); - } - - /** - * Get the UUID of this player. - * - * @return the UUID - */ - public UUID getUniqueId() { - return raw.getUUID("id"); - } - - /** - * Get the unique name of this player. - * - * @return the players username - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Gets the remote address of this connection. - * - * @return the remote address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Gets the proxy this player is connected to. - * - * @return the proxy this player is connected to - */ - public String getProxy() { - return raw.getRawString("proxy"); - } - - /** - * Gets the proxy this player is connected to. - * - * @param callback the proxy this player is connected to - */ - public void getProxy(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (proxy == null || !proxy.getName().equalsIgnoreCase(raw.getRawString("proxy"))) { - SubAPI.getInstance().getProxy(raw.getRawString("proxy"), proxy -> { - this.proxy = proxy; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Gets the server this player is connected to. - * - * @return the server this player is connected to - */ - public String getServer() { - return raw.getRawString("server"); - } - - /** - * Gets the server this player is connected to. - * - * @param callback the server this player is connected to - */ - public void getServer(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (server == null || !server.getName().equalsIgnoreCase(raw.getRawString("server"))) { - SubAPI.getInstance().getServer(raw.getRawString("server"), server -> { - this.server = server; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Server.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Server.java deleted file mode 100644 index fb12f717..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/Server.java +++ /dev/null @@ -1,281 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerInfo; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; -import org.bukkit.permissions.Permissible; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.util.*; - -/** - * Simplified Server Data Class - */ -public class Server { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Server - * - * @param raw Raw representation of the Server - */ - public Server(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Server - * - * @param client SubData connection - * @param raw Raw representation of the Server - */ - Server(DataClient client, ObjectMap raw) { - this.client = (SubDataClient) client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Server && getSignature().equals(((Server) obj).getSignature()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Determine if an object can perform some action on this server using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the server name) - * @return Permission Check Result - */ - public boolean permits(Permissible object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all servers & individual servers permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - - // Check all hosts & individual hosts permission - if (this instanceof SubServer) { - permitted = permitted || object.hasPermission(perm.replace("%", "::*")) - || object.hasPermission(perm.replace("%", "::" + ((SubServer) this).getHost().toLowerCase())); - } - - // Check all groups & individual groups permission - List groups = this.getGroups(); - if (groups.size() > 0) { - permitted = permitted || object.hasPermission(perm.replace("%", ":*")); - for (int g = 0; !permitted && g < groups.size(); g++) { - permitted = object.hasPermission(perm.replace("%", ":" + groups.get(g).toLowerCase())); - } - } - } - } - - return permitted; - } - - /** - * Get the Name of this Server - * - * @return Server Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Server - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - /** - * Get the Address of this Server - * - * @return Server Address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Get this Server's Groups - * - * @return Group names - */ - public List getGroups() { - return new LinkedList(raw.getRawStringList("group")); - } - - /** - * Get players on this server across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get players on this server across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * If the server is hidden from players - * - * @return Hidden Status - */ - public boolean isHidden() { - return raw.getBoolean("hidden"); - } - - /** - * Gets the MOTD of the Server - * - * @return Server MOTD - */ - public String getMotd() { - return raw.getRawString("motd"); - } - - /** - * Gets if the Server is Restricted - * - * @return Restricted Status - */ - public boolean isRestricted() { - return raw.getBoolean("restricted"); - } - - /** - * Get a copy of the current whitelist - * - * @return Player Whitelist - */ - public Collection getWhitelist() { - return raw.getUUIDList("whitelist"); - } - - /** - * See if a player is whitelisted - * - * @param player Player to check - * @return Whitelisted Status - */ - public boolean isWhitelisted(UUID player) { - return getWhitelist().contains(player); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SimplifiedData.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SimplifiedData.java deleted file mode 100644 index a6f16ffc..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SimplifiedData.java +++ /dev/null @@ -1,400 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Data Requesting Class - */ -public final class SimplifiedData { - private SimplifiedData() {} - static SubDataClient client(DataClient client) { - return (SubDataClient) ((client != null)? client : SubAPI.getInstance().getSubDataNetwork()[0]); - } - - /** - * Requests the Hosts - * - * @param client SubData connection - * @param callback Host Map - */ - public static void requestHosts(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(null, data -> { - TreeMap hosts = new TreeMap(); - for (String host : data.getKeys()) { - hosts.put(host.toLowerCase(), new Host(client, data.getMap(host))); - } - - try { - callback.run(hosts); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Host - * - * @param client SubData connection - * @param name Host name - * @param callback a Host - */ - public static void requestHost(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> { - Host host = null; - if (data.getKeys().size() > 0) { - host = new Host(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are case sensitive here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(null, data -> { - TreeMap> groups = new TreeMap>(); - for (String group : data.getKeys()) { - ArrayList servers = new ArrayList(); - for (String server : data.getMap(group).getKeys()) { - if (data.getMap(group).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(group).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(group).getMap(server))); - } - } - if (servers.size() > 0) groups.put(group, servers); - } - - try { - callback.run(groups); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are all lowercase here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestLowercaseGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestGroups(client, groups -> { - TreeMap> lowercaseGroups = new TreeMap>(); - for (String key : groups.keySet()) { - lowercaseGroups.put(key.toLowerCase(), groups.get(key)); - } - callback.run(lowercaseGroups); - }); - } - - /** - * Requests a Server Group (Group names are case insensitive here) - * - * @param client SubData connection - * @param name Group name - * @param callback a Server Group - */ - public static void requestGroup(DataClient client, String name, Callback>> callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(Collections.singletonList(name), data -> { - NamedContainer> group = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - List servers = new ArrayList(); - for (String server : data.getMap(key).getKeys()) { - if (data.getMap(key).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(key).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(key).getMap(server))); - } - } - group = new NamedContainer<>(key, servers); - } - - try { - callback.run(group); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Servers (including SubServers) - * - * @param client SubData connection - * @param callback Server Map - */ - public static void requestServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(null, data -> { - TreeMap servers = new TreeMap(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.put(server.toLowerCase(), new SubServer(client, data.getMap(server))); - } else { - servers.put(server.toLowerCase(), new Server(client, data.getMap(server))); - } - } - - try { - callback.run(servers); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Server - * - * @param client SubData connection - * @param name Server name - * @param callback a Server - */ - public static void requestServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> { - Server server = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - if (data.getMap(key).getRawString("type", "Server").equals("SubServer")) { - server = new SubServer(client, data.getMap(key)); - } else { - server = new Server(client, data.getMap(key)); - } - } - - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the SubServers - * - * @param client SubData connection - * @param callback SubServer Map - */ - public static void requestSubServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestServers(client, servers -> { - TreeMap subservers = new TreeMap(); - for (String server : servers.keySet()) { - if (servers.get(server) instanceof SubServer) subservers.put(server, (SubServer) servers.get(server)); - } - callback.run(subservers); - }); - } - - /** - * Requests a SubServer - * - * @param client SubData connection - * @param name SubServer name - * @param callback a SubServer - */ - public static void requestSubServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - requestServer(client, name, server -> callback.run((server instanceof SubServer)?(SubServer) server:null)); - } - - /** - * Requests the known Proxies - * - * @param client SubData connection - * @param callback Proxy Map - */ - public static void requestProxies(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(null, data -> { - TreeMap proxies = new TreeMap(); - for (String proxy : data.getKeys()) { - proxies.put(proxy.toLowerCase(), new Proxy(client, data.getMap(proxy))); - } - - try { - callback.run(proxies); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Proxy - * - * @param client SubData connection - * @param name Proxy name - * @param callback a Proxy - */ - public static void requestProxy(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Request the Master Proxy redis container (null if unavailable) - * - * @param client SubData connection - * @param callback Master Proxy - */ - public static void requestMasterProxy(DataClient client, Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.emptyList(), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests players on this network across all known proxies - * - * @param client SubData connection - * @param callback Remote Player Collection - */ - public static void requestGlobalPlayers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo((List) null, data -> { - TreeMap players = new TreeMap(); - for (String player : data.getKeys()) { - players.put(UUID.fromString(player), new RemotePlayer(client, data.getMap(player))); - } - - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param name Player name - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(name), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param id Player UUID - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, UUID id, Callback callback) { - if (Util.isNull(id, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubServer.java deleted file mode 100644 index f65fd45d..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubServer.java +++ /dev/null @@ -1,948 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified SubServer Data Class - */ -public class SubServer extends Server { - private List incompatibilities = null; - private List currentIncompatibilities = null; - private Host host = null; - - /** - * SubServer Stop Action Class - */ - public enum StopAction { - NONE, - RESTART, - REMOVE_SERVER, - RECYCLE_SERVER, - DELETE_SERVER; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase().replace('_', ' '); - } - } - - /** - * Create an API representation of a SubServer - * - * @param raw JSON representation of the SubServer - */ - public SubServer(ObjectMap raw) { - super(null, raw); - } - - /** - * Create an API representation of a SubServer - * - * @param client SubData connection - * @param raw JSON representation of the SubServer - */ - SubServer(DataClient client, ObjectMap raw) { - super(client, raw); - } - - - /** - * Create an API representation of a SubServer - * - * @param host Host - * @param raw JSON representation of the SubServer - */ - SubServer(Host host, ObjectMap raw) { - super(host.client, raw); - this.host = host; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubServer && super.equals(obj); - } - - @Override - public void refresh() { - host = null; - incompatibilities = null; - currentIncompatibilities = null; - super.refresh(); - } - - /** - * Starts the Server - * - * @param player Player who Started - * @param response Response Code - */ - public void start(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStartServer(player, getName(), data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Starts the Server - * - * @param response Response Code - */ - public void start(Callback response) { - start(null, response); - } - - /** - * Starts the Server - * - * @param player Player who Started - */ - public void start(UUID player) { - start(player, i -> {}); - } - - /** - * Starts the Server - */ - public void start() { - start(i -> {}); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - * @param response Response Code - */ - public void stop(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), false, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Stops the Server - * - * @param response Response Code - */ - public void stop(Callback response) { - stop(null, response); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - */ - public void stop(UUID player) { - stop(player, i -> {}); - } - - /** - * Stops the Server - */ - public void stop() { - stop(i -> {}); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - * @param response Response Code - */ - public void terminate(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), true, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Terminates the Server - * - * @param response Response Code - */ - public void terminate(Callback response) { - terminate(null, response); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - */ - public void terminate(UUID player) { - terminate(player, i -> {}); - } - - /** - * Terminates the Server - */ - public void terminate() { - terminate(i -> {}); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Commmand to Send - * @param response Response Code - */ - public void command(UUID player, String command, Callback response) { - if (Util.isNull(command, response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketCommandServer(player, getName(), command, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Commands the Server - * - * @param command Commmand to Send - * @param response Response Code - */ - public void command(String command, Callback response) { - command(null, command, response); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Command to Send - */ - public void command(UUID player, String command) { - command(player, command, i -> {}); - } - - /** - * Commands the Server - * - * @param command Command to Send - */ - public void command(String command) { - command(command, i -> {}); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, false, response); - } - - /** - * Edits the Server - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(ObjectMap edit, Callback response) { - edit(null, edit, response); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - */ - public void edit(UUID player, ObjectMap edit) { - edit(player, edit, i -> {}); - } - - /** - * Edits the Server - * - * @param edit Edits - */ - public void edit(ObjectMap edit) { - edit(null, edit); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, true, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(ObjectMap edit, Callback response) { - permaEdit(null, edit, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - */ - public void permaEdit(UUID player, ObjectMap edit) { - permaEdit(player, edit, i -> {}); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - */ - public void permaEdit(ObjectMap edit) { - permaEdit(null, edit); - } - - private void edit(UUID player, ObjectMap edit, boolean perma, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketEditServer(player, getName(), edit, perma, data -> { - try { - if (data.getInt(0x0001) != 0) { - response.run(data.getInt(0x0001) * -1); - } else { - response.run(data.getInt(0x0002)); - } - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * If the Server is Running - * - * @return Running Status - */ - public boolean isRunning() { - return raw.getBoolean("running"); - } - - /** - * If the Server is Online
- * This method can only be true when a SubData connection is made! - * - * @return Online Status - */ - public boolean isOnline() { - return raw.getBoolean("online"); - } - - /** - * Grabs the Host of the Server - * - * @return The Host Name - */ - public String getHost() { - return raw.getRawString("host"); - } - - /** - * Grabs the Host of the Server - * - * @param callback The Host - */ - public void getHost(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (host == null || !host.getName().equalsIgnoreCase(raw.getRawString("host"))) { - SubAPI.getInstance().getHost(raw.getRawString("host"), host -> { - this.host = host; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Grabs the Template this Server was created from - * - * @return The Template - */ - public String getTemplate() { - return raw.getRawString("template"); - } - - /** - * Is this Server Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * If the Server is Enabled - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - */ - public void setEnabled(boolean value) { - setEnabled(value, b -> {}); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - * @param response Success Status - */ - public void setEnabled(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("enabled", value); - edit(edit, r -> { - if (r > 0) raw.set("enabled", value); - response.run(r > 0); - }); - } - - /** - * If the Server is accepting requests to edit() - * - * @return Edit Status - */ - public boolean isEditable() { - return raw.getBoolean("editable"); - } - - /** - * If the Server is Logging - * - * @return Logging Status - */ - public boolean isLogging() { - return raw.getBoolean("log"); - } - - /** - * Set if the Server is Logging - * - * @param value Value - */ - public void setLogging(boolean value) { - setLogging(value, b -> {}); - } - - /** - * Set if the Server is Logging - * - * @param value Value - * @param response Success Status - */ - public void setLogging(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("log", value); - edit(edit, r -> { - if (r > 0) raw.set("log", value); - response.run(r > 0); - }); - } - - /** - * Get the Server Directory Path - * - * @return Server Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Server's Executable String - * - * @return Executable String - */ - public String getExecutable() { - return raw.getRawString("exec"); - } - - /** - * Grab the Command to Stop the Server - * - * @return Stop Command - */ - public String getStopCommand() { - return raw.getRawString("stop-cmd"); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - */ - public void setStopCommand(String value) { - setStopCommand(value, b -> {}); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - * @param response Success Status - */ - public void setStopCommand(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-cmd", value); - edit(edit, r -> { - if (r > 0) raw.set("stop-cmd", value); - response.run(r > 0); - }); - } - - /** - * Get the action the Server will take when it stops - * - * @return Stop Action - */ - public StopAction getStopAction() { - return Util.getDespiteException(() -> StopAction.valueOf(raw.getRawString("stop-action").toUpperCase().replace('-', '_').replace(' ', '_')), StopAction.NONE); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - */ - public void setStopAction(StopAction action) { - setStopAction(action, b -> {}); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - * @param response Success Status - */ - public void setStopAction(StopAction action, Callback response) { - if (Util.isNull(action, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-action", action.toString()); - edit(edit, r -> { - if (r > 0) raw.set("stop-action", action.toString()); - response.run(r > 0); - }); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server) { - toggleCompatibility(server, b -> {}); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server, Callback response) { - if (Util.isNull(server, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getIncompatibilities()); - if (!value.contains(server)) value.add(server); - else value.remove(server); - - ObjectMap edit = new ObjectMap(); - edit.set("incompatible", value); - edit(edit, r -> { - if (r > 0) raw.set("incompatible", value); - response.run(r > 0); - }); - } - - /** - * Checks if a Server is compatible - * - * @param server Server name to check - * @return Compatible Status - */ - public boolean isCompatible(String server) { - LinkedList lowercaseIncompatibilities = new LinkedList(); - for (String key : getIncompatibilities()) { - lowercaseIncompatibilities.add(key.toLowerCase()); - } - return lowercaseIncompatibilities.contains(server.toLowerCase()); - } - - /** - * Get all listed incompatibilities for this Server - * - * @return Incompatibility List - */ - public List getIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible-list")); - } - - /** - * Get all listed incompatibilities for this Server - * - * @param callback Incompatibility List - */ - public void getIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(incompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (incompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible-list")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.incompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get incompatibility issues this server currently has - * - * @return Current Incompatibility List - */ - public List getCurrentIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible")); - } - - /** - * Get incompatibility issues this server currently has - * - * @param callback Current Incompatibility List - */ - public void getCurrentIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(currentIncompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (currentIncompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.currentIncompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - */ - public void setDisplayName(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - * @param response Success Status - */ - public void setDisplayName(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("display", (value == null)?"":value); - edit(edit, r -> { - if (r > 0) raw.set("display", (value == null)?getName():value); - response.run(r > 0); - }); - } - - /** - * Add this Server to a Group - * - * @param value Group name - */ - public void addGroup(String value) { - addGroup(value, b -> {}); - } - - /** - * Add this Server to a Group - * - * @param value Group name - * @param response Success Status - */ - public void addGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getGroups()); - if (!v.contains(value)) v.add(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - */ - public void removeGroup(String value) { - removeGroup(value, b -> {}); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - * @param response Success Status - */ - public void removeGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getWhitelist()); - v.remove(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - */ - public void setHidden(boolean value) { - setHidden(value, b -> {}); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - * @param response Success Status - */ - public void setHidden(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - */ - public void setMotd(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - * @param response Success Status - */ - public void setMotd(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("motd", value); - edit(edit, r -> { - if (r > 0) raw.set("motd", value); - response.run(r > 0); - }); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - */ - public void setRestricted(boolean value) { - setRestricted(value, b -> {}); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - * @param response Success Status - */ - public void setRestricted(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - */ - public void whitelist(UUID player) { - whitelist(player, b -> {}); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - * @param response Success Status - */ - public void whitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - if (!value.contains(player)) value.add(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - */ - public void unwhitelist(UUID player) { - unwhitelist(player, b -> {}); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - * @param response Success Status - */ - public void unwhitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - value.remove(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketAddServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketAddServer.java deleted file mode 100644 index dab9ffc4..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketAddServer.java +++ /dev/null @@ -1,125 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Graphic.UIRenderer; - -import java.net.InetAddress; -import java.util.HashMap; -import java.util.UUID; - -/** - * Add Server Packet - */ -public class PacketAddServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private ObjectMap opt; - private boolean subserver; - private UUID tracker; - - /** - * New PacketAddServer (In) - */ - public PacketAddServer() {} - - /** - * New PacketCreateServer [Server] (Out) - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(name, ip, port, motd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = false; - - ObjectMap opt = new ObjectMap(); - opt.set("address", ip.getHostAddress() + ':' + port); - opt.set("motd", motd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketAddServer [SubServer] (Out) - * - * @param player Player who Added - * @param name Name of Server - * @param enabled Enabled Status - * @param host Host of Server - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, boolean enabled, String host, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(host, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = true; - - ObjectMap opt = new ObjectMap(); - opt.set("enabled", enabled); - opt.set("host", host); - opt.set("port", port); - opt.set("motd", motd); - opt.set("log", log); - opt.set("dir", directory); - opt.set("exec", executable); - opt.set("stop-cmd", stopcmd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, subserver); - data.set(0x0003, opt); - if (player != null) data.set(0x0004, player); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCreateServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCreateServer.java deleted file mode 100644 index f1d9f904..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCreateServer.java +++ /dev/null @@ -1,135 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Graphic.UIRenderer; -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketCreateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String host; - private String template; - private Version version; - private Integer port; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketCreateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, Callback>... callback) { - this(player, name, host, template, version, port, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, host, template, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.host = host; - this.template = template; - this.version = version; - this.port = port; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param options Creator UI Options - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, UIRenderer.CreatorOptions options, Callback>... callback) { - this(player, options, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param options Creator UI Options - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, UIRenderer.CreatorOptions options, boolean waitfor, Callback>... callback) { - if (Util.isNull(options, callback)) throw new NullPointerException(); - this.player = player; - this.name = options.getName(); - this.host = options.getHost(); - this.template = options.getTemplate(); - this.version = options.getVersion(); - this.port = options.getPort(); - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, host); - data.set(0x0003, template); - if (version != null) data.set(0x0004, version); - if (port != null) data.set(0x0005, port); - if (player != null) data.set(0x0006, player); - if (waitfor) data.set(0x0007, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDeleteServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDeleteServer.java deleted file mode 100644 index 0006190d..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDeleteServer.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Delete Server Packet - */ -public class PacketDeleteServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean recycle; - private boolean force; - private UUID tracker; - - /** - * New PacketDeleteServer (In) - */ - public PacketDeleteServer() {} - - /** - * New PacketDeleteServer (Out) - * - * @param player Player Deleting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketDeleteServer(UUID player, String server, boolean recycle, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.recycle = recycle; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, recycle); - data.set(0x0003, force); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadGroupInfo.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadGroupInfo.java deleted file mode 100644 index d3ea91c5..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadGroupInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Group Info Packet - */ -public class PacketDownloadGroupInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List groups; - private UUID tracker; - - /** - * New PacketDownloadGroupInfo (In) - */ - public PacketDownloadGroupInfo() {} - - /** - * New PacketDownloadGroupInfo (Out) - * - * @param groups Group names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadGroupInfo(List groups, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.groups = groups; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (groups != null) json.set(0x0001, groups); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadHostInfo.java deleted file mode 100644 index 44ce7808..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadHostInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Host Info Packet - */ -public class PacketDownloadHostInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List hosts; - private UUID tracker; - - /** - * New PacketDownloadHostInfo (In) - */ - public PacketDownloadHostInfo() {} - - /** - * New PacketDownloadHostInfo (Out) - * - * @param hosts Host names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadHostInfo(List hosts, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.hosts = hosts; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (hosts != null) json.set(0x0001, hosts); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java deleted file mode 100644 index 912a8a68..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadPlatformInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID tracker; - /** - * New PacketDownloadPlatformInfo - * - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlatformInfo(Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - return data; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketEditServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketEditServer.java deleted file mode 100644 index c4b88804..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketEditServer.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Edit Server Packet - */ -public class PacketEditServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private ObjectMap edit; - private boolean perma; - private UUID tracker; - - /** - * New PacketEditServer (In) - */ - public PacketEditServer() {} - - /** - * New PacketEditServer (Out) - * - * @param player Player Editing - * @param server Server - * @param edit Edits - * @param perma Save Changes - * @param callback Callbacks - */ - @SafeVarargs - public PacketEditServer(UUID player, String server, ObjectMap edit, boolean perma, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.edit = edit; - this.perma = perma; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, edit); - data.set(0x0003, perma); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRemoveServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRemoveServer.java deleted file mode 100644 index c49ae722..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRemoveServer.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Remove Server Packet - */ -public class PacketRemoveServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean force; - private UUID tracker; - - /** - * New PacketRemoveServer (In) - */ - public PacketRemoveServer() {} - - /** - * New PacketRemoveServer (Out) - * - * @param player Player Removing - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRemoveServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStartServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStartServer.java deleted file mode 100644 index b7a75806..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Start Server Packet - */ -public class PacketStartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketStartServer (In) - */ - public PacketStartServer() {} - - /** - * New PacketStartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketStartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketUpdateServer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketUpdateServer.java deleted file mode 100644 index e80f9b23..00000000 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketUpdateServer.java +++ /dev/null @@ -1,90 +0,0 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Bukkit.Graphic.UIRenderer; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketUpdateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String template; - private Version version; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketUpdateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, Callback>... callback) { - this(player, name, template, version, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.template = template; - this.version = version; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - if (template != null) data.set(0x0002, template); - if (version != null) data.set(0x0003, version); - if (player != null) data.set(0x0004, player); - if (waitfor) data.set(0x0005, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubProtocol.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubProtocol.java index 83db8260..bbabab38 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubProtocol.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubProtocol.java @@ -12,6 +12,7 @@ import net.ME1312.SubServers.Client.Bukkit.Event.SubNetworkDisconnectEvent; import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; import net.ME1312.SubServers.Client.Bukkit.SubAPI; import net.ME1312.SubServers.Client.Bukkit.SubPlugin; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import org.bukkit.Bukkit; import java.io.IOException; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java index 0d1426fc..69912b59 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java @@ -1,27 +1,20 @@ package net.ME1312.SubServers.Client.Bukkit; +import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.DataClient; import net.ME1312.SubData.Client.DataProtocol; -import net.ME1312.SubServers.Client.Bukkit.Graphic.UIHandler; -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Bukkit.Network.API.*; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Client.Bukkit.Graphic.UIHandler; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Client.Common.ClientAPI; import org.bukkit.Bukkit; -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; import java.util.*; -import static net.ME1312.SubServers.Client.Bukkit.Network.API.SimplifiedData.*; - /** * SubAPI Class */ -public final class SubAPI { +public final class SubAPI extends ClientAPI { LinkedList reloadListeners = new LinkedList(); private final SubPlugin plugin; private static SubAPI api; @@ -71,316 +64,6 @@ public final class SubAPI { return name; } - /** - * Gets the Hosts - * - * @param callback Host Map - */ - public void getHosts(Callback> callback) { - requestHosts(null, callback); - } - - /** - * Gets a Host - * - * @param name Host name - * @param callback a Host - */ - public void getHost(String name, Callback callback) { - requestHost(null, name, callback); - } - - /** - * Gets the Server Groups (Group names are case sensitive here) - * - * @param callback Group Map - */ - public void getGroups(Callback>> callback) { - requestGroups(null, callback); - } - - /** - * Gets the Server Groups (Group names are all lowercase here) - * - * @param callback Group Map - */ - public void getLowercaseGroups(Callback>> callback) { - requestLowercaseGroups(null, callback); - } - - /** - * Gets a Server Group (Group names are case insensitive here) - * - * @param name Group name - * @param callback a Server Group - */ - public void getGroup(String name, Callback>> callback) { - requestGroup(null, name, callback); - } - - /** - * Gets the Servers (including SubServers) - * - * @param callback Server Map - */ - public void getServers(Callback> callback) { - requestServers(null, callback); - } - - /** - * Gets a Server - * - * @param name Server name - * @param callback a Server - */ - public void getServer(String name, Callback callback) { - requestServer(null, name, callback); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - addServer(null, name, ip, port, motd, hidden, restricted, response); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketAddServer(player, name, ip, port, motd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(null, name, ip, port, motd, hidden, restricted); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(player, name, ip, port, motd, hidden, restricted, i -> {}); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(String name, Callback response) { - removeServer(null, name, response); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, false, response); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - */ - public void removeServer(String name) { - removeServer(null, name); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void removeServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, i -> {}); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(String name, Callback response) { - forceRemoveServer(null, name, response); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, true, response); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - */ - public void forceRemoveServer(String name) { - forceRemoveServer(null, name); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void forceRemoveServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - forceRemoveServer(player, name, i -> {}); - } - - private void removeServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Gets the SubServers - * - * @param callback SubServer Map - */ - public void getSubServers(Callback> callback) { - requestSubServers(null, callback); - } - - /** - * Gets a SubServer - * - * @param name SubServer name - * @param callback a SubServer - */ - public void getSubServer(String name, Callback callback) { - requestSubServer(null, name, callback); - } - - /** - * Gets the known Proxies - * - * @param callback Proxy Map - */ - public void getProxies(Callback> callback) { - requestProxies(null, callback); - } - - /** - * Gets a Proxy - * - * @param name Proxy name - * @param callback a Proxy - */ - public void getProxy(String name, Callback callback) { - requestProxy(null, name, callback); - } - - /** - * Get the Master Proxy Container - * - * @param callback Master Proxy - */ - public void getMasterProxy(Callback callback) { - requestMasterProxy(null, callback); - } - - /** - * Gets players on this network across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - requestGlobalPlayers(null, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param name Player name - * @param callback Remote Player - */ - public void getGlobalPlayer(String name, Callback callback) { - requestGlobalPlayer(null, name, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param id Player UUID - * @param callback Remote Player - */ - public void getGlobalPlayer(UUID id, Callback callback) { - requestGlobalPlayer(null, id, callback); - } - /** * Gets the SubData Network Connections * @@ -423,18 +106,6 @@ public final class SubAPI { return new LinkedHashMap<>(plugin.lang.get().get(channel.toLowerCase())); } - /** - * Gets a value from the SubServers Lang - * - * @param channel Lang Channel - * @param key Key - * @return Lang Values - */ - public String getLang(String channel, String key) { - if (Util.isNull(channel, key)) throw new NullPointerException(); - return getLang(channel).get(key); - } - /** * Gets the Graphics Handler * diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java index 3f6a2c61..080a764e 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java @@ -10,7 +10,10 @@ import net.ME1312.SubServers.Client.Bukkit.Graphic.UIRenderer; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Config.YAMLSection; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Bukkit.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketCreateServer; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketRestartServer; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketUpdateServer; import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -26,6 +29,8 @@ import java.net.URL; import java.nio.charset.Charset; import java.util.*; +import static net.ME1312.SubServers.Client.Bukkit.Library.ObjectPermission.*; + public final class SubCommand extends BukkitCommand { private SubPlugin plugin; @@ -726,11 +731,11 @@ public final class SubCommand extends BukkitCommand { String select = args[(args.length > 2)?2:1]; plugin.api.getServer(select, server -> { if (server != null) { - if (server.permits(sender, "subservers.server.%.*", "subservers.server.%.teleport")) { + if (permits(server, sender, "subservers.server.%.*", "subservers.server.%.teleport")) { if (!(server instanceof SubServer) || ((SubServer) server).isRunning()) { Player target = (args.length > 2)?Bukkit.getPlayer(args[1]):null; if (target != null || args.length == 2) { - if (target == null || target == sender || server.permits(sender, "subservers.server.%.*", "subservers.server.%.teleport-others")) { + if (target == null || target == sender || permits(server, sender, "subservers.server.%.*", "subservers.server.%.teleport-others")) { if (target == null) target = (Player) sender; sender.sendMessage(plugin.api.getLang("SubServers", "Command.Teleport").replace("$str$", target.getName())); @@ -870,7 +875,7 @@ public final class SubCommand extends BukkitCommand { List[] checks = permissions.toArray(new List[0]); for (int p = 0; permitted && p < permissions.size(); p++) { if (checks[p] == null || checks[p].size() <= 0) continue; - else permitted = server.permits(sender, checks[p].toArray(new String[0])); + else permitted = permits(server, sender, checks[p].toArray(new String[0])); } } diff --git a/SubServers.Client/Common/pom.xml b/SubServers.Client/Common/pom.xml new file mode 100644 index 00000000..0b900fb7 --- /dev/null +++ b/SubServers.Client/Common/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + net.ME1312.SubServers + SubServers.Client.Common + -PLACEHOLDER + jar + + + + me1312-repo + https://dev.me1312.net/maven + + + + + + net.ME1312.Galaxi + GalaxiUtil + 20w33a + provided + + + net.ME1312.SubData + Client + 20w46b + provided + + + + + ../../out/compile/target/SubServers.Client.Common + src + + + src + + **/*.java + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/ClientAPI.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/ClientAPI.java new file mode 100644 index 00000000..8eb0682e --- /dev/null +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/ClientAPI.java @@ -0,0 +1,391 @@ +package net.ME1312.SubServers.Client.Common; + +import net.ME1312.Galaxi.Library.Callback.Callback; +import net.ME1312.Galaxi.Library.Container.NamedContainer; +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubData.Client.DataClient; +import net.ME1312.SubData.Client.DataProtocol; +import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Client.Common.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; + +import java.lang.reflect.InvocationTargetException; +import java.net.InetAddress; +import java.util.*; + +import static net.ME1312.SubServers.Client.Common.Network.API.SimplifiedData.*; + +public abstract class ClientAPI { + private static ClientAPI api; + + protected ClientAPI() { + api = this; + } + + /** + * Gets the SubAPI Client Common Methods + * + * @return SubAPI Client Common + */ + public static ClientAPI getInstance() { + return api; + } + + /** + * Get the Server Name + * + * @return Server Name + */ + public abstract String getName(); + + /** + * Gets the Hosts + * + * @param callback Host Map + */ + public void getHosts(Callback> callback) { + requestHosts(null, callback); + } + + /** + * Gets a Host + * + * @param name Host name + * @param callback a Host + */ + public void getHost(String name, Callback callback) { + requestHost(null, name, callback); + } + + /** + * Gets the Server Groups (Group names are case sensitive here) + * + * @param callback Group Map + */ + public void getGroups(Callback>> callback) { + requestGroups(null, callback); + } + + /** + * Gets the Server Groups (Group names are all lowercase here) + * + * @param callback Group Map + */ + public void getLowercaseGroups(Callback>> callback) { + requestLowercaseGroups(null, callback); + } + + /** + * Gets a Server Group (Group names are case insensitive here) + * + * @param name Group name + * @param callback a Server Group + */ + public void getGroup(String name, Callback>> callback) { + requestGroup(null, name, callback); + } + + /** + * Gets the Servers (including SubServers) + * + * @param callback Server Map + */ + public void getServers(Callback> callback) { + requestServers(null, callback); + } + + /** + * Gets a Server + * + * @param name Server name + * @param callback a Server + */ + public void getServer(String name, Callback callback) { + requestServer(null, name, callback); + } + + /** + * Adds a Server to the Network + * + * @param name Name of the Server + * @param ip IP of the Server + * @param port Port of the Server + * @param motd MOTD of the Server + * @param hidden if the server should be hidden from players + * @param restricted Players will need a permission to join if true + * @param response Response Code + */ + public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { + addServer(null, name, ip, port, motd, hidden, restricted, response); + } + + /** + * Adds a Server to the Network + * + * @param player Player who added + * @param name Name of the Server + * @param ip IP of the Server + * @param port Port of the Server + * @param motd MOTD of the Server + * @param hidden If the server should be hidden from players + * @param restricted Players will need a permission to join if true + * @param response Response Code + */ + public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { + if (Util.isNull(response)) throw new NullPointerException(); + StackTraceElement[] origin = new Exception().getStackTrace(); + ((SubDataClient) getSubDataNetwork()[0]).sendPacket(new PacketAddServer(player, name, ip, port, motd, hidden, restricted, data -> { + try { + response.run(data.getInt(0x0001)); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.setStackTrace(origin); + ew.printStackTrace(); + } + })); + } + + /** + * Adds a Server to the Network + * + * @param name Name of the Server + * @param ip IP of the Server + * @param port Port of the Server + * @param motd MOTD of the Server + * @param hidden if the server should be hidden from players + * @param restricted Players will need a permission to join if true + */ + public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { + addServer(null, name, ip, port, motd, hidden, restricted); + } + + /** + * Adds a Server to the Network + * + * @param player Player who added + * @param name Name of the Server + * @param ip IP of the Server + * @param port Port of the Server + * @param motd MOTD of the Server + * @param hidden If the server should be hidden from players + * @param restricted Players will need a permission to join if true + */ + public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { + addServer(player, name, ip, port, motd, hidden, restricted, i -> {}); + } + + /** + * Remove a Server from the Network + * + * @param name Name of the Server + * @param response Response Code + */ + public void removeServer(String name, Callback response) { + removeServer(null, name, response); + } + + /** + * Remove a Server from the Network + * + * @param player Player Removing + * @param name Name of the Server + * @param response Response Code + */ + public void removeServer(UUID player, String name, Callback response) { + if (Util.isNull(name)) throw new NullPointerException(); + removeServer(player, name, false, response); + } + + /** + * Remove a Server from the Network + * + * @param name Name of the Server + */ + public void removeServer(String name) { + removeServer(null, name); + } + + /** + * Remove a Server from the Network + * + * @param player Player Removing + * @param name Name of the Server + */ + public void removeServer(UUID player, String name) { + if (Util.isNull(name)) throw new NullPointerException(); + removeServer(player, name, i -> {}); + } + + /** + * Force Remove a Server from the Network + * + * @param name Name of the Server + * @param response Response Code + */ + public void forceRemoveServer(String name, Callback response) { + forceRemoveServer(null, name, response); + } + + /** + * Force Remove a Server from the Network + * + * @param player Player Removing + * @param name Name of the Server + * @param response Response Code + */ + public void forceRemoveServer(UUID player, String name, Callback response) { + if (Util.isNull(name)) throw new NullPointerException(); + removeServer(player, name, true, response); + } + + /** + * Force Remove a Server from the Network + * + * @param name Name of the Server + */ + public void forceRemoveServer(String name) { + forceRemoveServer(null, name); + } + + /** + * Force Remove a Server from the Network + * + * @param player Player Removing + * @param name Name of the Server + */ + public void forceRemoveServer(UUID player, String name) { + if (Util.isNull(name)) throw new NullPointerException(); + forceRemoveServer(player, name, i -> {}); + } + + private void removeServer(UUID player, String name, boolean force, Callback response) { + if (Util.isNull(response)) throw new NullPointerException(); + StackTraceElement[] origin = new Exception().getStackTrace(); + ((SubDataClient) getSubDataNetwork()[0]).sendPacket(new PacketRemoveServer(player, name, force, data -> { + try { + response.run(data.getInt(0x0001)); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.setStackTrace(origin); + ew.printStackTrace(); + } + })); + } + + /** + * Gets the SubServers + * + * @param callback SubServer Map + */ + public void getSubServers(Callback> callback) { + requestSubServers(null, callback); + } + + /** + * Gets a SubServer + * + * @param name SubServer name + * @param callback a SubServer + */ + public void getSubServer(String name, Callback callback) { + requestSubServer(null, name, callback); + } + + /** + * Gets the known Proxies + * + * @param callback Proxy Map + */ + public void getProxies(Callback> callback) { + requestProxies(null, callback); + } + + /** + * Gets a Proxy + * + * @param name Proxy name + * @param callback a Proxy + */ + public void getProxy(String name, Callback callback) { + requestProxy(null, name, callback); + } + + /** + * Get the Master Proxy Container + * + * @param callback Master Proxy + */ + public void getMasterProxy(Callback callback) { + requestMasterProxy(null, callback); + } + + /** + * Gets players on this network across all known proxies + * + * @param callback Remote Player Collection + */ + public void getGlobalPlayers(Callback> callback) { + requestGlobalPlayers(null, callback); + } + + /** + * Gets a player on this network by searching across all known proxies + * + * @param name Player name + * @param callback Remote Player + */ + public void getGlobalPlayer(String name, Callback callback) { + requestGlobalPlayer(null, name, callback); + } + + /** + * Gets a player on this network by searching across all known proxies + * + * @param id Player UUID + * @param callback Remote Player + */ + public void getGlobalPlayer(UUID id, Callback callback) { + requestGlobalPlayer(null, id, callback); + } + + /** + * Gets the SubData Network Connections + * + * @return SubData Network Connections + */ + public abstract DataClient[] getSubDataNetwork(); + + /** + * Gets the SubData Network Protocol + * + * @return SubData Network Protocol + */ + public abstract DataProtocol getSubDataProtocol(); + + /** + * Gets the current SubServers Lang Channels + * + * @return SubServers Lang Channel list + */ + public abstract Collection getLangChannels(); + + /** + * Gets values from the SubServers Lang + * + * @param channel Lang Channel + * @return Lang Value + */ + public abstract Map getLang(String channel); + + /** + * Gets a value from the SubServers Lang + * + * @param channel Lang Channel + * @param key Key + * @return Lang Values + */ + public String getLang(String channel, String key) { + if (Util.isNull(channel, key)) throw new NullPointerException(); + return getLang(channel).get(key); + } +} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Host.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Host.java similarity index 98% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Host.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Host.java index 254c2504..60ca412b 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Host.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Host.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Host.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Container.NamedContainer; @@ -10,8 +10,8 @@ import net.ME1312.SubData.Client.DataSender; import net.ME1312.SubData.Client.Library.ForwardedDataSender; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Host.Network.Packet.*; -import net.ME1312.SubServers.Host.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; @@ -90,7 +90,7 @@ public class Host { LinkedList keys = new LinkedList(subdata.getKeys()); LinkedList channels = new LinkedList(); Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); + for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); return channels.toArray(new SubDataSender[0]); } else { return new SubDataSender[0]; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Proxy.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Proxy.java similarity index 93% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Proxy.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Proxy.java index 20a67d8b..062d2a9f 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Proxy.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Proxy.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Host.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Container.NamedContainer; @@ -10,9 +10,9 @@ import net.ME1312.SubData.Client.DataSender; import net.ME1312.SubData.Client.Library.ForwardedDataSender; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Host.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Host.Network.Packet.PacketDownloadProxyInfo; -import net.ME1312.SubServers.Host.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketDownloadPlayerInfo; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketDownloadProxyInfo; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -80,7 +80,7 @@ public class Proxy { LinkedList keys = new LinkedList(subdata.getKeys()); LinkedList channels = new LinkedList(); Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); + for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); return channels.toArray(new SubDataSender[0]); } diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/RemotePlayer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/RemotePlayer.java similarity index 89% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/RemotePlayer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/RemotePlayer.java index c66a39bc..cc827082 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/RemotePlayer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/RemotePlayer.java @@ -1,12 +1,12 @@ -package net.ME1312.SubServers.Host.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.DataClient; import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Host.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Host.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketDownloadPlayerInfo; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.net.InetSocketAddress; @@ -123,7 +123,7 @@ public class RemotePlayer { }; if (proxy == null || !proxy.getName().equalsIgnoreCase(raw.getRawString("proxy"))) { - SubAPI.getInstance().getProxy(raw.getRawString("proxy"), proxy -> { + ClientAPI.getInstance().getProxy(raw.getRawString("proxy"), proxy -> { this.proxy = proxy; run.run(); }); @@ -160,7 +160,7 @@ public class RemotePlayer { }; if (server == null || !server.getName().equalsIgnoreCase(raw.getRawString("server"))) { - SubAPI.getInstance().getServer(raw.getRawString("server"), server -> { + ClientAPI.getInstance().getServer(raw.getRawString("server"), server -> { this.server = server; run.run(); }); @@ -186,4 +186,13 @@ public class RemotePlayer { public ObjectMap getRaw() { return raw.clone(); } + + /** + * Get the raw representation of the Server + * + * @return Raw Server + */ + protected static ObjectMap raw(RemotePlayer player) { + return player.raw; + } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Server.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Server.java similarity index 94% rename from SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Server.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Server.java index 97b250d4..85bdecaf 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Server.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/Server.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Sync.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Container.NamedContainer; @@ -9,9 +9,9 @@ import net.ME1312.SubData.Client.DataSender; import net.ME1312.SubData.Client.Library.ForwardedDataSender; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadServerInfo; -import net.ME1312.SubServers.Sync.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketDownloadPlayerInfo; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketDownloadServerInfo; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.net.InetSocketAddress; @@ -80,7 +80,7 @@ public class Server { LinkedList keys = new LinkedList(subdata.getKeys()); LinkedList channels = new LinkedList(); Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); + for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); return channels.toArray(new SubDataSender[0]); } diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SimplifiedData.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SimplifiedData.java similarity index 98% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SimplifiedData.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SimplifiedData.java index e21d04eb..14ac7127 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SimplifiedData.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SimplifiedData.java @@ -1,12 +1,12 @@ -package net.ME1312.SubServers.Host.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.DataClient; import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Host.Network.Packet.*; -import net.ME1312.SubServers.Host.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -17,7 +17,7 @@ import java.util.*; public final class SimplifiedData { private SimplifiedData() {} static SubDataClient client(DataClient client) { - return (SubDataClient) ((client != null)? client : SubAPI.getInstance().getSubDataNetwork()[0]); + return (SubDataClient) ((client != null)? client : ClientAPI.getInstance().getSubDataNetwork()[0]); } /** diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubCreator.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubCreator.java similarity index 93% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubCreator.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubCreator.java index 815b0df2..4a5a1353 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/API/SubCreator.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubCreator.java @@ -1,13 +1,13 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketCreateServer; -import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketUpdateServer; -import net.ME1312.SubServers.Client.Bukkit.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketCreateServer; +import net.ME1312.SubServers.Client.Common.Network.Packet.PacketUpdateServer; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -135,7 +135,7 @@ public class SubCreator { public void create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback response) { if (Util.isNull(response)) throw new NullPointerException(); StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player, name, host.getName(), template.getName(), version, port, data -> { + ((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player, name, host.getName(), template.getName(), version, port, data -> { try { response.run(data.getInt(0x0001)); } catch (Throwable e) { @@ -196,7 +196,7 @@ public class SubCreator { public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback response) { if (Util.isNull(response)) throw new NullPointerException(); StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> { + ((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> { try { response.run(data.getInt(0x0001)); } catch (Throwable e) { diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubServer.java similarity index 99% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubServer.java index ea92d108..a4e11904 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/API/SubServer.java @@ -1,11 +1,11 @@ -package net.ME1312.SubServers.Host.Network.API; +package net.ME1312.SubServers.Client.Common.Network.API; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubServers.Host.Network.Packet.*; -import net.ME1312.SubServers.Host.SubAPI; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; +import net.ME1312.SubServers.Client.Common.ClientAPI; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -411,7 +411,7 @@ public class SubServer extends Server { }; if (host == null || !host.getName().equalsIgnoreCase(raw.getRawString("host"))) { - SubAPI.getInstance().getHost(raw.getRawString("host"), host -> { + ClientAPI.getInstance().getHost(raw.getRawString("host"), host -> { this.host = host; run.run(); }); diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketAddServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketAddServer.java similarity index 98% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketAddServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketAddServer.java index 8b67c765..b07be264 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketAddServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketAddServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Host.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCommandServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCommandServer.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCommandServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCommandServer.java index 75050e19..844dad1c 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketCommandServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCommandServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCreateServer.java similarity index 98% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCreateServer.java index 75dc158e..e5310b94 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketCreateServer.java @@ -1,12 +1,12 @@ -package net.ME1312.SubServers.Host.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; +import net.ME1312.SubData.Client.Protocol.PacketObjectIn; +import net.ME1312.SubData.Client.Protocol.PacketObjectOut; +import net.ME1312.SubData.Client.SubDataSender; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; import java.util.HashMap; import java.util.UUID; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDeleteServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDeleteServer.java similarity index 97% rename from SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDeleteServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDeleteServer.java index f4aca29d..305fb542 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDeleteServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDeleteServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadGroupInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadGroupInfo.java similarity index 97% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadGroupInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadGroupInfo.java index a2f8cbfc..06db6e2d 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadGroupInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadGroupInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Host.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadHostInfo.java similarity index 97% rename from SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadHostInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadHostInfo.java index d54e8733..fd6e3c83 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadHostInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadHostInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlatformInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlatformInfo.java similarity index 96% rename from SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlatformInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlatformInfo.java index 822859b3..438498ff 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlatformInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlatformInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Sync.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlayerInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlayerInfo.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlayerInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlayerInfo.java index 70de31fa..4d3ab0d3 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlayerInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadPlayerInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadProxyInfo.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadProxyInfo.java index d1528cf2..30ecafa9 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadProxyInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadServerInfo.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadServerInfo.java index 79f782d1..de020bff 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketDownloadServerInfo.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketEditServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketEditServer.java similarity index 97% rename from SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketEditServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketEditServer.java index cc302f63..06128ab6 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketEditServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketEditServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Host.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRemoveServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRemoveServer.java similarity index 97% rename from SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRemoveServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRemoveServer.java index 9c565b81..8543ce99 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRemoveServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRemoveServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Sync.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRestartServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRestartServer.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRestartServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRestartServer.java index dba42f83..93a1b58d 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketRestartServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketRestartServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStartServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStartServer.java similarity index 96% rename from SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStartServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStartServer.java index f0824a91..788f5ff0 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStartServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStartServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Sync.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStopServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStopServer.java similarity index 97% rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStopServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStopServer.java index 74f4e7d1..89b2e476 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketStopServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketStopServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Client.Bukkit.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketUpdateServer.java b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketUpdateServer.java similarity index 98% rename from SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketUpdateServer.java rename to SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketUpdateServer.java index 6e5ead67..d6b63667 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketUpdateServer.java +++ b/SubServers.Client/Common/src/net/ME1312/SubServers/Client/Common/Network/Packet/PacketUpdateServer.java @@ -1,4 +1,4 @@ -package net.ME1312.SubServers.Sync.Network.Packet; +package net.ME1312.SubServers.Client.Common.Network.Packet; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Map.ObjectMap; diff --git a/SubServers.Client/Sponge/pom.xml b/SubServers.Client/Sponge/pom.xml index 3fff8bf0..02002783 100644 --- a/SubServers.Client/Sponge/pom.xml +++ b/SubServers.Client/Sponge/pom.xml @@ -34,6 +34,13 @@ compile true
+ + net.ME1312.SubServers + SubServers.Client.Common + -PLACEHOLDER + compile + true + net.ME1312.SubData Client @@ -130,6 +137,10 @@ https://dev.me1312.net/jenkins/job/SubData/javadoc/Client/ https://jd.spongepowered.org/ + true + + net.ME1312.SubServers:SubServers.Client.Common:* + diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddProxyEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddProxyEvent.java index ebab4f6a..155242d1 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddProxyEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddProxyEvent.java @@ -1,6 +1,5 @@ package net.ME1312.SubServers.Client.Sponge.Event; - import net.ME1312.SubServers.Client.Sponge.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import org.spongepowered.api.event.cause.Cause; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java index 6df06c92..6159eab6 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.SubServers.Client.Sponge.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Sponge.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Sponge.SubAPI; import org.spongepowered.api.event.cause.Cause; import org.spongepowered.api.event.impl.AbstractEvent; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java index f477db49..d395e088 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.SubServers.Client.Sponge.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Sponge.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Sponge.SubAPI; import org.spongepowered.api.event.cause.Cause; import org.spongepowered.api.event.impl.AbstractEvent; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java index dedd5aec..0cafbaea 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java @@ -1,6 +1,5 @@ package net.ME1312.SubServers.Client.Sponge.Event; - import net.ME1312.SubServers.Client.Sponge.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import org.spongepowered.api.event.cause.Cause; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Graphic/UIRenderer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Graphic/UIRenderer.java index 2f8ef5d0..1e77dc52 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Graphic/UIRenderer.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Graphic/UIRenderer.java @@ -5,8 +5,8 @@ import net.ME1312.Galaxi.Library.Container.Container; import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Sponge.Network.API.Host; -import net.ME1312.SubServers.Client.Sponge.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Client.Sponge.SubPlugin; import org.spongepowered.api.Sponge; import org.spongepowered.api.item.ItemType; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/ObjectPermission.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/ObjectPermission.java new file mode 100644 index 00000000..ccc18891 --- /dev/null +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/ObjectPermission.java @@ -0,0 +1,104 @@ +package net.ME1312.SubServers.Client.Sponge.Library; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Client.Common.Network.API.Host; +import net.ME1312.SubServers.Client.Common.Network.API.Proxy; +import net.ME1312.SubServers.Client.Common.Network.API.Server; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; +import org.spongepowered.api.service.permission.Subject; + +import java.util.List; + +/** + * Object Permissions Class + */ +public class ObjectPermission { + private ObjectPermission() {} + + /** + * Determine if an object can perform some action on this proxy using possible permissions + * + * @param proxy Proxy to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the proxy name) + * @return Permission Check Result + */ + public static boolean permits(Proxy proxy, Subject object, String... permissions) { + return permits(proxy.getName(), object, permissions); + } + + /** + * Determine if an object can perform some action on a host using possible permissions + * + * @param host Host to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the host name) + * @return Permission Check Result + */ + public static boolean permits(Host host, Subject object, String... permissions) { + return permits(host.getName(), object, permissions); + } + + /** + * Determine if an object can perform some action on another object using possible permissions + * + * @param string String to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the object name) + * @return Permission Check Result + */ + private static boolean permits(String string, Subject object, String... permissions) { + if (Util.isNull(object)) throw new NullPointerException(); + boolean permitted = false; + + for (int p = 0; !permitted && p < permissions.length; p++) { + String perm = permissions[p]; + if (perm != null) { + // Check all proxies & individual proxies permission + permitted = object.hasPermission(perm.replace("%", "*")) + || object.hasPermission(perm.replace("%", string.toLowerCase())); + } + } + + return permitted; + } + + /** + * Determine if an object can perform some action on a server using possible permissions + * + * @param server Server to check against + * @param object Object to check against + * @param permissions Permissions to check (use % as a placeholder for the server name) + * @return Permission Check Result + */ + public static boolean permits(Server server, Subject object, String... permissions) { + if (Util.isNull(object)) throw new NullPointerException(); + boolean permitted = false; + + for (int p = 0; !permitted && p < permissions.length; p++) { + String perm = permissions[p]; + if (perm != null) { + // Check all servers & individual servers permission + permitted = object.hasPermission(perm.replace("%", "*")) + || object.hasPermission(perm.replace("%", server.getName().toLowerCase())); + + // Check all hosts & individual hosts permission + if (server instanceof SubServer) { + permitted = permitted || object.hasPermission(perm.replace("%", "::*")) + || object.hasPermission(perm.replace("%", "::" + ((SubServer) server).getHost().toLowerCase())); + } + + // Check all groups & individual groups permission + List groups = server.getGroups(); + if (groups.size() > 0) { + permitted = permitted || object.hasPermission(perm.replace("%", ":*")); + for (int g = 0; !permitted && g < groups.size(); g++) { + permitted = object.hasPermission(perm.replace("%", ":" + groups.get(g).toLowerCase())); + } + } + } + } + + return permitted; + } +} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Host.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Host.java deleted file mode 100644 index f45899f3..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Host.java +++ /dev/null @@ -1,777 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; -import net.ME1312.SubServers.Client.Sponge.SubAPI; -import org.spongepowered.api.service.permission.Subject; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.*; - -/** - * Simplified Host Data Class - */ -public class Host { - HashMap servers = new HashMap(); - private SubCreator creator; - private List players = null; - ObjectMap raw; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Host - * - * @param raw Raw representation of the Host - */ - public Host(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Host - * - * @param client SubData connection - * @param raw Raw representation of the Host - */ - Host(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Host && getSignature().equals(((Host) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - - servers.clear(); - this.creator = new SubCreator(this, raw.getMap("creator")); - for (String server : raw.getMap("servers").getKeys()) { - servers.put(server.toLowerCase(), new SubServer(this, raw.getMap("servers").getMap(server))); - } - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array (may be empty if unsupported) - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - if (raw.contains("subdata")) { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } else { - return new SubDataSender[0]; - } - } - - /** - * Determine if an object can perform some action on this host using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the host name) - * @return Permission Check Result - */ - public boolean permits(Subject object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all proxies & individual proxies permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - } - } - - return permitted; - } - - /** - * Is this Host Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * Is this Host Enabled? - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Address of this Host - * - * @return Host Address - */ - public InetAddress getAddress() { - try { - return InetAddress.getByName(raw.getRawString("address")); - } catch (UnknownHostException e) { - throw new IllegalStateException("Invalid address response from raw data key: address"); - } - } - - /** - * Get the host Directory Path - * - * @return Host Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Name of this Host - * - * @return Host Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Host - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get players on servers provided by this host across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on servers provided by this host across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (SubServer server : getSubServers().values()) for (NamedContainer player : server.getGlobalPlayers()) ids.add(player.get()); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Starts the Servers Specified - * - * @param servers Servers - */ - public void start(String... servers) { - start(null, servers); - } - - /** - * Starts the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void start(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).start(player); - } - } - - /** - * Stops the Servers Specified - * - * @param servers Servers - */ - public void stop(String... servers) { - stop(null, servers); - } - - /** - * Stops the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void stop(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).stop(player); - } - } - - /** - * Terminates the Servers Specified - * - * @param servers Servers - */ - public void terminate(String... servers) { - terminate(null, servers); - } - - /** - * Terminates the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void terminate(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).terminate(player); - } - } - - /** - * Commands the Servers Specified - * - * @param command Command to send - * @param servers Servers - */ - public void command(String command, String... servers) { - command(null, command, servers); - } - - /** - * Commands the Servers Specified - * - * @param player Player who started - * @param command Command to send - * @param servers Servers - * @return Success Status - */ - public void command(UUID player, String command, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).command(player, command); - } - } - - /** - * Gets the SubCreator Instance for this Host - * - * @return SubCreator - */ - public SubCreator getCreator() { - return creator; - } - - /** - * Gets the SubServers on this Host - * - * @return SubServer Map - */ - public Map getSubServers() { - return new TreeMap(servers); - } - - /** - * Gets a SubServer - * - * @param name SubServer Name - * @return a SubServer - */ - public SubServer getSubServer(String name) { - if (Util.isNull(name)) throw new NullPointerException(); - return getSubServers().get(name.toLowerCase()); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, response); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketAddServer(player, name, enabled, getName(), port, motd, log, directory, executable, stopcmd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(player, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - */ - public void removeSubServer(String name) { - removeSubServer(null, name); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void removeSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, i -> {}); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - */ - public void forceRemoveSubServer(String name) { - forceRemoveSubServer(null, name); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void forceRemoveSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(String name, Callback response) { - removeSubServer(null, name, response); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(String name, Callback response) { - forceRemoveSubServer(null, name, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, response); - } - - private void removeSubServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void recycleSubServer(String name) { - recycleSubServer(null, name); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void recycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void forceRecycleSubServer(String name) { - forceRecycleSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void forceRecycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, i -> {}); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(String name, Callback response) { - recycleSubServer(null, name, response); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(String name, Callback response) { - forceRecycleSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, response); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name) { - deleteSubServer(null, name); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name) { - forceDeleteSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, i -> {}); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name, Callback response) { - deleteSubServer(null, name, response); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name, Callback response) { - forceDeleteSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, response); - } - - private void deleteSubServer(UUID player, String name, boolean recycle, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketDeleteServer(player, name, recycle, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Host - * - * @return Raw Host - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Proxy.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Proxy.java deleted file mode 100644 index ef750edc..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Proxy.java +++ /dev/null @@ -1,243 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadProxyInfo; -import net.ME1312.SubServers.Client.Sponge.SubAPI; -import org.spongepowered.api.service.permission.Subject; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Proxy Data Class - */ -public class Proxy { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Proxy - * - * @param raw Raw representation of the Proxy - */ - public Proxy(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Proxy - * - * @param client SubData connection - * @param raw Raw representation of the Proxy - */ - Proxy(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Proxy && getSignature().equals(((Proxy) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Determine if an object can perform some action on this proxy using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the proxy name) - * @return Permission Check Result - */ - public boolean permits(Subject object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all proxies & individual proxies permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - } - } - - return permitted; - } - - /** - * Get the Name of this Proxy - * - * @return Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Proxy - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Determine if the proxy is the Master Proxy - * - * @return Master Proxy Status - */ - public boolean isMaster() { - return raw.getBoolean("master"); - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @return Remote Player Collection - */ - public Collection> getPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @param callback Remote Player Collection - */ - public void getPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Proxy - * - * @return Raw Proxy - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/RemotePlayer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/RemotePlayer.java deleted file mode 100644 index 18097a81..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/RemotePlayer.java +++ /dev/null @@ -1,187 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Sponge.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.util.*; - -/** - * Simplified RemotePlayer Data Class - */ -public class RemotePlayer { - ObjectMap raw; - private Proxy proxy = null; - private Server server = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Remote Player - * - * @param raw Raw representation of the Remote Player - */ - public RemotePlayer(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Remote Player - * - * @param client SubData connection - * @param raw Raw representation of the Remote Player - */ - RemotePlayer(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof RemotePlayer && getUniqueId().equals(((RemotePlayer) obj).getUniqueId()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.proxy = null; - this.server = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - UUID id = getUniqueId(); - client().sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> load(data.getMap(id.toString())))); - } - - /** - * Get the UUID of this player. - * - * @return the UUID - */ - public UUID getUniqueId() { - return raw.getUUID("id"); - } - - /** - * Get the unique name of this player. - * - * @return the players username - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Gets the remote address of this connection. - * - * @return the remote address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Gets the proxy this player is connected to. - * - * @return the proxy this player is connected to - */ - public String getProxy() { - return raw.getRawString("proxy"); - } - - /** - * Gets the proxy this player is connected to. - * - * @param callback the proxy this player is connected to - */ - public void getProxy(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (proxy == null || !proxy.getName().equalsIgnoreCase(raw.getRawString("proxy"))) { - SubAPI.getInstance().getProxy(raw.getRawString("proxy"), proxy -> { - this.proxy = proxy; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Gets the server this player is connected to. - * - * @return the server this player is connected to - */ - public String getServer() { - return raw.getRawString("server"); - } - - /** - * Gets the server this player is connected to. - * - * @param callback the server this player is connected to - */ - public void getServer(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (server == null || !server.getName().equalsIgnoreCase(raw.getRawString("server"))) { - SubAPI.getInstance().getServer(raw.getRawString("server"), server -> { - this.server = server; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Server.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Server.java deleted file mode 100644 index 5c3aec0a..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/Server.java +++ /dev/null @@ -1,281 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadServerInfo; -import net.ME1312.SubServers.Client.Sponge.SubAPI; -import org.spongepowered.api.service.permission.Subject; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.util.*; - -/** - * Simplified Server Data Class - */ -public class Server { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Server - * - * @param raw Raw representation of the Server - */ - public Server(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Server - * - * @param client SubData connection - * @param raw Raw representation of the Server - */ - Server(DataClient client, ObjectMap raw) { - this.client = (SubDataClient) client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Server && getSignature().equals(((Server) obj).getSignature()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Determine if an object can perform some action on this server using possible permissions - * - * @param object Object to check against - * @param permissions Permissions to check (use % as a placeholder for the server name) - * @return Permission Check Result - */ - public boolean permits(Subject object, String... permissions) { - if (Util.isNull(object)) throw new NullPointerException(); - boolean permitted = false; - - for (int p = 0; !permitted && p < permissions.length; p++) { - String perm = permissions[p]; - if (perm != null) { - // Check all servers & individual servers permission - permitted = object.hasPermission(perm.replace("%", "*")) - || object.hasPermission(perm.replace("%", this.getName().toLowerCase())); - - // Check all hosts & individual hosts permission - if (this instanceof SubServer) { - permitted = permitted || object.hasPermission(perm.replace("%", "::*")) - || object.hasPermission(perm.replace("%", "::" + ((SubServer) this).getHost().toLowerCase())); - } - - // Check all groups & individual groups permission - List groups = this.getGroups(); - if (groups.size() > 0) { - permitted = permitted || object.hasPermission(perm.replace("%", ":*")); - for (int g = 0; !permitted && g < groups.size(); g++) { - permitted = object.hasPermission(perm.replace("%", ":" + groups.get(g).toLowerCase())); - } - } - } - } - - return permitted; - } - - /** - * Get the Name of this Server - * - * @return Server Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Server - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - /** - * Get the Address of this Server - * - * @return Server Address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Get this Server's Groups - * - * @return Group names - */ - public List getGroups() { - return new LinkedList(raw.getRawStringList("group")); - } - - /** - * Get players on this server across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get players on this server across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * If the server is hidden from players - * - * @return Hidden Status - */ - public boolean isHidden() { - return raw.getBoolean("hidden"); - } - - /** - * Gets the MOTD of the Server - * - * @return Server MOTD - */ - public String getMotd() { - return raw.getRawString("motd"); - } - - /** - * Gets if the Server is Restricted - * - * @return Restricted Status - */ - public boolean isRestricted() { - return raw.getBoolean("restricted"); - } - - /** - * Get a copy of the current whitelist - * - * @return Player Whitelist - */ - public Collection getWhitelist() { - return raw.getUUIDList("whitelist"); - } - - /** - * See if a player is whitelisted - * - * @param player Player to check - * @return Whitelisted Status - */ - public boolean isWhitelisted(UUID player) { - return getWhitelist().contains(player); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SimplifiedData.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SimplifiedData.java deleted file mode 100644 index 2d4736b4..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SimplifiedData.java +++ /dev/null @@ -1,400 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; -import net.ME1312.SubServers.Client.Sponge.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Data Requesting Class - */ -public final class SimplifiedData { - private SimplifiedData() {} - static SubDataClient client(DataClient client) { - return (SubDataClient) ((client != null)? client : SubAPI.getInstance().getSubDataNetwork()[0]); - } - - /** - * Requests the Hosts - * - * @param client SubData connection - * @param callback Host Map - */ - public static void requestHosts(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(null, data -> { - TreeMap hosts = new TreeMap(); - for (String host : data.getKeys()) { - hosts.put(host.toLowerCase(), new Host(client, data.getMap(host))); - } - - try { - callback.run(hosts); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Host - * - * @param client SubData connection - * @param name Host name - * @param callback a Host - */ - public static void requestHost(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> { - Host host = null; - if (data.getKeys().size() > 0) { - host = new Host(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are case sensitive here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(null, data -> { - TreeMap> groups = new TreeMap>(); - for (String group : data.getKeys()) { - ArrayList servers = new ArrayList(); - for (String server : data.getMap(group).getKeys()) { - if (data.getMap(group).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(group).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(group).getMap(server))); - } - } - if (servers.size() > 0) groups.put(group, servers); - } - - try { - callback.run(groups); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are all lowercase here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestLowercaseGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestGroups(client, groups -> { - TreeMap> lowercaseGroups = new TreeMap>(); - for (String key : groups.keySet()) { - lowercaseGroups.put(key.toLowerCase(), groups.get(key)); - } - callback.run(lowercaseGroups); - }); - } - - /** - * Requests a Server Group (Group names are case insensitive here) - * - * @param client SubData connection - * @param name Group name - * @param callback a Server Group - */ - public static void requestGroup(DataClient client, String name, Callback>> callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(Collections.singletonList(name), data -> { - NamedContainer> group = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - List servers = new ArrayList(); - for (String server : data.getMap(key).getKeys()) { - if (data.getMap(key).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(key).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(key).getMap(server))); - } - } - group = new NamedContainer<>(key, servers); - } - - try { - callback.run(group); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Servers (including SubServers) - * - * @param client SubData connection - * @param callback Server Map - */ - public static void requestServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(null, data -> { - TreeMap servers = new TreeMap(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.put(server.toLowerCase(), new SubServer(client, data.getMap(server))); - } else { - servers.put(server.toLowerCase(), new Server(client, data.getMap(server))); - } - } - - try { - callback.run(servers); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Server - * - * @param client SubData connection - * @param name Server name - * @param callback a Server - */ - public static void requestServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> { - Server server = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - if (data.getMap(key).getRawString("type", "Server").equals("SubServer")) { - server = new SubServer(client, data.getMap(key)); - } else { - server = new Server(client, data.getMap(key)); - } - } - - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the SubServers - * - * @param client SubData connection - * @param callback SubServer Map - */ - public static void requestSubServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestServers(client, servers -> { - TreeMap subservers = new TreeMap(); - for (String server : servers.keySet()) { - if (servers.get(server) instanceof SubServer) subservers.put(server, (SubServer) servers.get(server)); - } - callback.run(subservers); - }); - } - - /** - * Requests a SubServer - * - * @param client SubData connection - * @param name SubServer name - * @param callback a SubServer - */ - public static void requestSubServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - requestServer(client, name, server -> callback.run((server instanceof SubServer)?(SubServer) server:null)); - } - - /** - * Requests the known Proxies - * - * @param client SubData connection - * @param callback Proxy Map - */ - public static void requestProxies(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(null, data -> { - TreeMap proxies = new TreeMap(); - for (String proxy : data.getKeys()) { - proxies.put(proxy.toLowerCase(), new Proxy(client, data.getMap(proxy))); - } - - try { - callback.run(proxies); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Proxy - * - * @param client SubData connection - * @param name Proxy name - * @param callback a Proxy - */ - public static void requestProxy(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Request the Master Proxy redis container (null if unavailable) - * - * @param client SubData connection - * @param callback Master Proxy - */ - public static void requestMasterProxy(DataClient client, Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.emptyList(), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests players on this network across all known proxies - * - * @param client SubData connection - * @param callback Remote Player Collection - */ - public static void requestGlobalPlayers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo((List) null, data -> { - TreeMap players = new TreeMap(); - for (String player : data.getKeys()) { - players.put(UUID.fromString(player), new RemotePlayer(client, data.getMap(player))); - } - - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param name Player name - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(name), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param id Player UUID - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, UUID id, Callback callback) { - if (Util.isNull(id, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubCreator.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubCreator.java deleted file mode 100644 index b341f8c0..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubCreator.java +++ /dev/null @@ -1,293 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketCreateServer; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketUpdateServer; -import net.ME1312.SubServers.Client.Sponge.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; -import java.util.UUID; - -/** - * Simplified SubCreator Data Class - */ -public class SubCreator { - HashMap templates = new HashMap(); - Host host; - ObjectMap raw; - - SubCreator(Host host, ObjectMap raw) { - this.host = host; - this.raw = raw; - - for (String template : raw.getMap("templates").getKeys()) { - templates.put(template.toLowerCase(), new ServerTemplate(raw.getMap("templates").getMap(template))); - } - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubCreator && host.getSignature().equals(((SubCreator) obj).host.getSignature()); - } - - public static class ServerTemplate { - private ObjectMap raw; - private ServerType type; - - public ServerTemplate(ObjectMap raw) { - this.raw = raw; - this.type = Util.getDespiteException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase().replace('-', '_').replace(' ', '_')), ServerType.CUSTOM); - } - - /** - * Get the Name of this Template - * - * @return Template Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Template - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get the Enabled Status of this Template - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Item Icon for this Template - * - * @return Item Icon Name/ID - */ - public String getIcon() { - return raw.getString("icon"); - } - - /** - * Get the Type of this Template - * - * @return Template Type - */ - public ServerType getType() { - return type; - } - - /** - * Get whether this Template requires the Version argument - * - * @return Version Requirement - */ - public boolean requiresVersion() { - return raw.getBoolean("version-req"); - } - - /** - * Get whether this Template can be used to update it's servers - * - * @return Updatable Status - */ - public boolean canUpdate() { - return raw.getBoolean("can-update"); - } - } - public enum ServerType { - SPIGOT, - VANILLA, - FORGE, - SPONGE, - CUSTOM; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase(); - } - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player, name, host.getName(), template.getName(), version, port, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(String name, ServerTemplate template, Version version, Integer port, Callback response) { - create(null, name, template, version, port, response); - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port) { - create(player, name, template, version, port, i -> {}); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(String name, ServerTemplate template, Version version, Integer port) { - create(name, template, version, port, i -> {}); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - }; - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version) { - update(player, server, template, version, null); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(SubServer server, ServerTemplate template, Version version, Callback response) { - update(null, server, template, version, response); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(SubServer server, ServerTemplate template, Version version) { - update(null, server, template, version); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, Version version) { - update(player, server, null, version); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(SubServer server, Version version) { - update(null, server, version); - } - - /** - * Gets the host this creator belongs to - * - * @return Host - */ - public Host getHost() { - return host; - } - - /** - * Gets the Templates that can be used in this SubCreator instance - * - * @return Template Map - */ - public Map getTemplates() { - return new TreeMap(templates); - } - - /** - * Gets a SubCreator Template by name - * - * @param name Template Name - * @return Template - */ - public ServerTemplate getTemplate(String name) { - return getTemplates().get(name.toLowerCase()); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubServer.java deleted file mode 100644 index 8ef54032..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/API/SubServer.java +++ /dev/null @@ -1,947 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; -import net.ME1312.SubServers.Client.Sponge.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified SubServer Data Class - */ -public class SubServer extends Server { - private List incompatibilities = null; - private List currentIncompatibilities = null; - private Host host = null; - - /** - * SubServer Stop Action Class - */ - public enum StopAction { - NONE, - RESTART, - REMOVE_SERVER, - RECYCLE_SERVER, - DELETE_SERVER; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase().replace('_', ' '); - } - } - - /** - * Create an API representation of a SubServer - * - * @param raw JSON representation of the SubServer - */ - public SubServer(ObjectMap raw) { - super(null, raw); - } - - /** - * Create an API representation of a SubServer - * - * @param client SubData connection - * @param raw JSON representation of the SubServer - */ - SubServer(DataClient client, ObjectMap raw) { - super(client, raw); - } - - - /** - * Create an API representation of a SubServer - * - * @param host Host - * @param raw JSON representation of the SubServer - */ - SubServer(Host host, ObjectMap raw) { - super(host.client, raw); - this.host = host; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubServer && super.equals(obj); - } - - @Override - public void refresh() { - host = null; - incompatibilities = null; - currentIncompatibilities = null; - super.refresh(); - } - - /** - * Starts the Server - * - * @param player Player who Started - * @param response Response Code - */ - public void start(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStartServer(player, getName(), data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Starts the Server - * - * @param response Response Code - */ - public void start(Callback response) { - start(null, response); - } - - /** - * Starts the Server - * - * @param player Player who Started - */ - public void start(UUID player) { - start(player, i -> {}); - } - - /** - * Starts the Server - */ - public void start() { - start(i -> {}); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - * @param response Response Code - */ - public void stop(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), false, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Stops the Server - * - * @param response Response Code - */ - public void stop(Callback response) { - stop(null, response); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - */ - public void stop(UUID player) { - stop(player, i -> {}); - } - - /** - * Stops the Server - */ - public void stop() { - stop(i -> {}); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - * @param response Response Code - */ - public void terminate(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), true, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Terminates the Server - * - * @param response Response Code - */ - public void terminate(Callback response) { - terminate(null, response); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - */ - public void terminate(UUID player) { - terminate(player, i -> {}); - } - - /** - * Terminates the Server - */ - public void terminate() { - terminate(i -> {}); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Commmand to Send - * @param response Response Code - */ - public void command(UUID player, String command, Callback response) { - if (Util.isNull(command, response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketCommandServer(player, getName(), command, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Commands the Server - * - * @param command Commmand to Send - * @param response Response Code - */ - public void command(String command, Callback response) { - command(null, command, response); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Command to Send - */ - public void command(UUID player, String command) { - command(player, command, i -> {}); - } - - /** - * Commands the Server - * - * @param command Command to Send - */ - public void command(String command) { - command(command, i -> {}); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, false, response); - } - - /** - * Edits the Server - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(ObjectMap edit, Callback response) { - edit(null, edit, response); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - */ - public void edit(UUID player, ObjectMap edit) { - edit(player, edit, i -> {}); - } - - /** - * Edits the Server - * - * @param edit Edits - */ - public void edit(ObjectMap edit) { - edit(null, edit); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, true, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(ObjectMap edit, Callback response) { - permaEdit(null, edit, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - */ - public void permaEdit(UUID player, ObjectMap edit) { - permaEdit(player, edit, i -> {}); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - */ - public void permaEdit(ObjectMap edit) { - permaEdit(null, edit); - } - - private void edit(UUID player, ObjectMap edit, boolean perma, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketEditServer(player, getName(), edit, perma, data -> { - try { - if (data.getInt(0x0001) != 0) { - response.run(data.getInt(0x0001) * -1); - } else { - response.run(data.getInt(0x0002)); - } - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * If the Server is Running - * - * @return Running Status - */ - public boolean isRunning() { - return raw.getBoolean("running"); - } - - /** - * If the Server is Online
- * This method can only be true when a SubData connection is made! - * - * @return Online Status - */ - public boolean isOnline() { - return raw.getBoolean("online"); - } - - /** - * Grabs the Host of the Server - * - * @return The Host Name - */ - public String getHost() { - return raw.getRawString("host"); - } - - /** - * Grabs the Host of the Server - * - * @param callback The Host - */ - public void getHost(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (host == null || !host.getName().equalsIgnoreCase(raw.getRawString("host"))) { - SubAPI.getInstance().getHost(raw.getRawString("host"), host -> { - this.host = host; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Grabs the Template this Server was created from - * - * @return The Template - */ - public String getTemplate() { - return raw.getRawString("template"); - } - - /** - * Is this Server Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * If the Server is Enabled - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - */ - public void setEnabled(boolean value) { - setEnabled(value, b -> {}); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - * @param response Success Status - */ - public void setEnabled(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("enabled", value); - edit(edit, r -> { - if (r > 0) raw.set("enabled", value); - response.run(r > 0); - }); - } - - /** - * If the Server is accepting requests to edit() - * - * @return Edit Status - */ - public boolean isEditable() { - return raw.getBoolean("editable"); - } - - /** - * If the Server is Logging - * - * @return Logging Status - */ - public boolean isLogging() { - return raw.getBoolean("log"); - } - - /** - * Set if the Server is Logging - * - * @param value Value - */ - public void setLogging(boolean value) { - setLogging(value, b -> {}); - } - - /** - * Set if the Server is Logging - * - * @param value Value - * @param response Success Status - */ - public void setLogging(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("log", value); - edit(edit, r -> { - if (r > 0) raw.set("log", value); - response.run(r > 0); - }); - } - - /** - * Get the Server Directory Path - * - * @return Server Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Server's Executable String - * - * @return Executable String - */ - public String getExecutable() { - return raw.getRawString("exec"); - } - - /** - * Grab the Command to Stop the Server - * - * @return Stop Command - */ - public String getStopCommand() { - return raw.getRawString("stop-cmd"); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - */ - public void setStopCommand(String value) { - setStopCommand(value, b -> {}); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - * @param response Success Status - */ - public void setStopCommand(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-cmd", value); - edit(edit, r -> { - if (r > 0) raw.set("stop-cmd", value); - response.run(r > 0); - }); - } - - /** - * Get the action the Server will take when it stops - * - * @return Stop Action - */ - public StopAction getStopAction() { - return Util.getDespiteException(() -> StopAction.valueOf(raw.getRawString("stop-action").toUpperCase().replace('-', '_').replace(' ', '_')), StopAction.NONE); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - */ - public void setStopAction(StopAction action) { - setStopAction(action, b -> {}); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - * @param response Success Status - */ - public void setStopAction(StopAction action, Callback response) { - if (Util.isNull(action, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-action", action.toString()); - edit(edit, r -> { - if (r > 0) raw.set("stop-action", action.toString()); - response.run(r > 0); - }); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server) { - toggleCompatibility(server, b -> {}); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server, Callback response) { - if (Util.isNull(server, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getIncompatibilities()); - if (!value.contains(server)) value.add(server); - else value.remove(server); - - ObjectMap edit = new ObjectMap(); - edit.set("incompatible", value); - edit(edit, r -> { - if (r > 0) raw.set("incompatible", value); - response.run(r > 0); - }); - } - - /** - * Checks if a Server is compatible - * - * @param server Server name to check - * @return Compatible Status - */ - public boolean isCompatible(String server) { - LinkedList lowercaseIncompatibilities = new LinkedList(); - for (String key : getIncompatibilities()) { - lowercaseIncompatibilities.add(key.toLowerCase()); - } - return lowercaseIncompatibilities.contains(server.toLowerCase()); - } - - /** - * Get all listed incompatibilities for this Server - * - * @return Incompatibility List - */ - public List getIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible-list")); - } - - /** - * Get all listed incompatibilities for this Server - * - * @param callback Incompatibility List - */ - public void getIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(incompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (incompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible-list")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.incompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get incompatibility issues this server currently has - * - * @return Current Incompatibility List - */ - public List getCurrentIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible")); - } - - /** - * Get incompatibility issues this server currently has - * - * @param callback Current Incompatibility List - */ - public void getCurrentIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(currentIncompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (currentIncompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.currentIncompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - */ - public void setDisplayName(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - * @param response Success Status - */ - public void setDisplayName(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("display", (value == null)?"":value); - edit(edit, r -> { - if (r > 0) raw.set("display", (value == null)?getName():value); - response.run(r > 0); - }); - } - - /** - * Add this Server to a Group - * - * @param value Group name - */ - public void addGroup(String value) { - addGroup(value, b -> {}); - } - - /** - * Add this Server to a Group - * - * @param value Group name - * @param response Success Status - */ - public void addGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getGroups()); - if (!v.contains(value)) v.add(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - */ - public void removeGroup(String value) { - removeGroup(value, b -> {}); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - * @param response Success Status - */ - public void removeGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getWhitelist()); - v.remove(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - */ - public void setHidden(boolean value) { - setHidden(value, b -> {}); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - * @param response Success Status - */ - public void setHidden(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - */ - public void setMotd(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - * @param response Success Status - */ - public void setMotd(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("motd", value); - edit(edit, r -> { - if (r > 0) raw.set("motd", value); - response.run(r > 0); - }); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - */ - public void setRestricted(boolean value) { - setRestricted(value, b -> {}); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - * @param response Success Status - */ - public void setRestricted(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - */ - public void whitelist(UUID player) { - whitelist(player, b -> {}); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - * @param response Success Status - */ - public void whitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - if (!value.contains(player)) value.add(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - */ - public void unwhitelist(UUID player) { - unwhitelist(player, b -> {}); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - * @param response Success Status - */ - public void unwhitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - value.remove(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketAddServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketAddServer.java deleted file mode 100644 index 142859ec..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketAddServer.java +++ /dev/null @@ -1,123 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.net.InetAddress; -import java.util.HashMap; -import java.util.UUID; - -/** - * Add Server Packet - */ -public class PacketAddServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private ObjectMap opt; - private boolean subserver; - private UUID tracker; - - /** - * New PacketAddServer (In) - */ - public PacketAddServer() {} - - /** - * New PacketCreateServer [Server] (Out) - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(name, ip, port, motd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = false; - - ObjectMap opt = new ObjectMap(); - opt.set("address", ip.getHostAddress() + ':' + port); - opt.set("motd", motd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketAddServer [SubServer] (Out) - * - * @param player Player who Added - * @param name Name of Server - * @param enabled Enabled Status - * @param host Host of Server - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, boolean enabled, String host, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(host, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = true; - - ObjectMap opt = new ObjectMap(); - opt.set("enabled", enabled); - opt.set("host", host); - opt.set("port", port); - opt.set("motd", motd); - opt.set("log", log); - opt.set("dir", directory); - opt.set("exec", executable); - opt.set("stop-cmd", stopcmd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, subserver); - data.set(0x0003, opt); - if (player != null) data.set(0x0004, player); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCommandServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCommandServer.java deleted file mode 100644 index c5d123f7..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCommandServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Command Server Packet - */ -public class PacketCommandServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private String command; - private UUID tracker; - - /** - * New PacketCommandServer (In) - */ - public PacketCommandServer() {} - - /** - * New PacketCommandServer (Out) - * - * @param player Player Sending - * @param server Server to send to - * @param command Command to send - * @param callback Callbacks - */ - @SafeVarargs - public PacketCommandServer(UUID player, String server, String command, Callback>... callback) { - if (Util.isNull(server, command, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.command = command; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, command); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCreateServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCreateServer.java deleted file mode 100644 index 875a193f..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketCreateServer.java +++ /dev/null @@ -1,135 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Client.Sponge.Graphic.UIRenderer; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketCreateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String host; - private String template; - private Version version; - private Integer port; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketCreateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, Callback>... callback) { - this(player, name, host, template, version, port, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, host, template, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.host = host; - this.template = template; - this.version = version; - this.port = port; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param options Creator UI Options - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, UIRenderer.CreatorOptions options, Callback>... callback) { - this(player, options, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param options Creator UI Options - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, UIRenderer.CreatorOptions options, boolean waitfor, Callback>... callback) { - if (Util.isNull(options, callback)) throw new NullPointerException(); - this.player = player; - this.name = options.getName(); - this.host = options.getHost(); - this.template = options.getTemplate(); - this.version = options.getVersion(); - this.port = options.getPort(); - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, host); - data.set(0x0003, template); - if (version != null) data.set(0x0004, version); - if (port != null) data.set(0x0005, port); - if (player != null) data.set(0x0006, player); - if (waitfor) data.set(0x0007, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadGroupInfo.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadGroupInfo.java deleted file mode 100644 index 63f94067..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadGroupInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Group Info Packet - */ -public class PacketDownloadGroupInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List groups; - private UUID tracker; - - /** - * New PacketDownloadGroupInfo (In) - */ - public PacketDownloadGroupInfo() {} - - /** - * New PacketDownloadGroupInfo (Out) - * - * @param groups Group names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadGroupInfo(List groups, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.groups = groups; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (groups != null) json.set(0x0001, groups); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlatformInfo.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlatformInfo.java deleted file mode 100644 index 0cd17cb0..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlatformInfo.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadPlatformInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID tracker; - /** - * New PacketDownloadPlatformInfo - * - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlatformInfo(Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - return data; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlayerInfo.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlayerInfo.java deleted file mode 100644 index eebbb792..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadPlayerInfo.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.*; - -/** - * Download Player Info Packet - */ -public class PacketDownloadPlayerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private Collection names; - private Collection ids; - private UUID tracker; - - /** - * New PacketDownloadPlayerInfo (In) - */ - public PacketDownloadPlayerInfo() {} - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player Names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(Collection players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.names = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player IDs (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(List players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.ids = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (names != null) json.set(0x0001, names); - if (ids != null) json.set(0x0002, ids); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadProxyInfo.java deleted file mode 100644 index 27e48ed0..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadProxyInfo.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadProxyInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List proxies; - private UUID tracker; - - /** - * New PacketDownloadProxyInfo (In) - */ - public PacketDownloadProxyInfo() {} - - /** - * New PacketDownloadProxyInfo (Out) - * - * @param proxies Proxies name (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadProxyInfo(List proxies, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.proxies = proxies; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (proxies != null) json.set(0x0001, proxies); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) { - ObjectMap map = new ObjectMap((Map) data.getObject(0x0001)); - ObjectMap master = (data.contains(0x0002))?new ObjectMap((Map) data.getObject(0x0002)):null; - - if (master != null) map.set(master.getString("name"), master); - callback.run(map); - } - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadServerInfo.java deleted file mode 100644 index f890fe60..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketDownloadServerInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Server Info Packet - */ -public class PacketDownloadServerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List servers; - private UUID tracker; - - /** - * New PacketDownloadServerInfo (In) - */ - public PacketDownloadServerInfo() {} - - /** - * New PacketDownloadServerInfo (Out) - * - * @param servers Server names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadServerInfo(List servers, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.servers = servers; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (servers != null) json.set(0x0001, servers); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketEditServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketEditServer.java deleted file mode 100644 index b6303f94..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketEditServer.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Edit Server Packet - */ -public class PacketEditServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private ObjectMap edit; - private boolean perma; - private UUID tracker; - - /** - * New PacketEditServer (In) - */ - public PacketEditServer() {} - - /** - * New PacketEditServer (Out) - * - * @param player Player Editing - * @param server Server - * @param edit Edits - * @param perma Save Changes - * @param callback Callbacks - */ - @SafeVarargs - public PacketEditServer(UUID player, String server, ObjectMap edit, boolean perma, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.edit = edit; - this.perma = perma; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, edit); - data.set(0x0003, perma); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRemoveServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRemoveServer.java deleted file mode 100644 index bdbb8347..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRemoveServer.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Remove Server Packet - */ -public class PacketRemoveServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean force; - private UUID tracker; - - /** - * New PacketRemoveServer (In) - */ - public PacketRemoveServer() {} - - /** - * New PacketRemoveServer (Out) - * - * @param player Player Removing - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRemoveServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRestartServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRestartServer.java deleted file mode 100644 index 0f778395..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketRestartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Restart Server Packet - */ -public class PacketRestartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketRestartServer (In) - */ - public PacketRestartServer() {} - - /** - * New PacketRestartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRestartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStartServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStartServer.java deleted file mode 100644 index 352a0939..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Start Server Packet - */ -public class PacketStartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketStartServer (In) - */ - public PacketStartServer() {} - - /** - * New PacketStartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketStartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStopServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStopServer.java deleted file mode 100644 index 69354fce..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketStopServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Stop Server Packet - */ -public class PacketStopServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private boolean force; - private String server; - private UUID id; - - /** - * New PacketStopServer (In) - */ - public PacketStopServer() {} - - /** - * New PacketStopServer (Out) - * - * @param player Player Starting - * @param server Server - * @param force Force Stop - * @param callback Callbacks - */ - @SafeVarargs - public PacketStopServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, force, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(id, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, id); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketUpdateServer.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketUpdateServer.java deleted file mode 100644 index c5249db1..00000000 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketUpdateServer.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.ME1312.SubServers.Client.Sponge.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketUpdateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String template; - private Version version; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketUpdateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, Callback>... callback) { - this(player, name, template, version, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.template = template; - this.version = version; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - if (template != null) data.set(0x0002, template); - if (version != null) data.set(0x0003, version); - if (player != null) data.set(0x0004, player); - if (waitfor) data.set(0x0005, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/SubProtocol.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/SubProtocol.java index 7b3a85dd..4688c76a 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/SubProtocol.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/SubProtocol.java @@ -7,6 +7,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataProtocol; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Client.Sponge.Event.SubNetworkConnectEvent; import net.ME1312.SubServers.Client.Sponge.Event.SubNetworkDisconnectEvent; import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java index 72132639..330033fa 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java @@ -3,27 +3,20 @@ package net.ME1312.SubServers.Client.Sponge; import net.ME1312.SubData.Client.DataClient; import net.ME1312.SubData.Client.DataProtocol; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Client.Common.ClientAPI; import net.ME1312.SubServers.Client.Sponge.Graphic.UIHandler; -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Client.Sponge.Network.API.*; -import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; import org.spongepowered.api.Platform; import org.spongepowered.api.Sponge; import org.spongepowered.api.plugin.PluginContainer; -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; import java.util.*; -import static net.ME1312.SubServers.Client.Sponge.Network.API.SimplifiedData.*; - /** * SubAPI Class */ -public final class SubAPI { +public final class SubAPI extends ClientAPI { LinkedList reloadListeners = new LinkedList(); private final SubPlugin plugin; private static SubAPI api; @@ -73,316 +66,6 @@ public final class SubAPI { return name; } - /** - * Gets the Hosts - * - * @param callback Host Map - */ - public void getHosts(Callback> callback) { - requestHosts(null, callback); - } - - /** - * Gets a Host - * - * @param name Host name - * @param callback a Host - */ - public void getHost(String name, Callback callback) { - requestHost(null, name, callback); - } - - /** - * Gets the Server Groups (Group names are case sensitive here) - * - * @param callback Group Map - */ - public void getGroups(Callback>> callback) { - requestGroups(null, callback); - } - - /** - * Gets the Server Groups (Group names are all lowercase here) - * - * @param callback Group Map - */ - public void getLowercaseGroups(Callback>> callback) { - requestLowercaseGroups(null, callback); - } - - /** - * Gets a Server Group (Group names are case insensitive here) - * - * @param name Group name - * @param callback a Server Group - */ - public void getGroup(String name, Callback>> callback) { - requestGroup(null, name, callback); - } - - /** - * Gets the Servers (including SubServers) - * - * @param callback Server Map - */ - public void getServers(Callback> callback) { - requestServers(null, callback); - } - - /** - * Gets a Server - * - * @param name Server name - * @param callback a Server - */ - public void getServer(String name, Callback callback) { - requestServer(null, name, callback); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - addServer(null, name, ip, port, motd, hidden, restricted, response); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketAddServer(player, name, ip, port, motd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(null, name, ip, port, motd, hidden, restricted); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(player, name, ip, port, motd, hidden, restricted, i -> {}); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(String name, Callback response) { - removeServer(null, name, response); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, false, response); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - */ - public void removeServer(String name) { - removeServer(null, name); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void removeServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, i -> {}); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(String name, Callback response) { - forceRemoveServer(null, name, response); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, true, response); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - */ - public void forceRemoveServer(String name) { - forceRemoveServer(null, name); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void forceRemoveServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - forceRemoveServer(player, name, i -> {}); - } - - private void removeServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Gets the SubServers - * - * @param callback SubServer Map - */ - public void getSubServers(Callback> callback) { - requestSubServers(null, callback); - } - - /** - * Gets a SubServer - * - * @param name SubServer name - * @param callback a SubServer - */ - public void getSubServer(String name, Callback callback) { - requestSubServer(null, name, callback); - } - - /** - * Gets the known Proxies - * - * @param callback Proxy Map - */ - public void getProxies(Callback> callback) { - requestProxies(null, callback); - } - - /** - * Gets a Proxy - * - * @param name Proxy name - * @param callback a Proxy - */ - public void getProxy(String name, Callback callback) { - requestProxy(null, name, callback); - } - - /** - * Get the Master Proxy Container - * - * @param callback Master Proxy - */ - public void getMasterProxy(Callback callback) { - requestMasterProxy(null, callback); - } - - /** - * Gets players on this network across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - requestGlobalPlayers(null, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param name Player name - * @param callback Remote Player - */ - public void getGlobalPlayer(String name, Callback callback) { - requestGlobalPlayer(null, name, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param id Player UUID - * @param callback Remote Player - */ - public void getGlobalPlayer(UUID id, Callback callback) { - requestGlobalPlayer(null, id, callback); - } - /** * Gets the SubData Network Connections * @@ -425,18 +108,6 @@ public final class SubAPI { return new LinkedHashMap<>(plugin.lang.get().get(channel.toLowerCase())); } - /** - * Gets a value from the SubServers Lang - * - * @param channel Lang Channel - * @param key Key - * @return Lang Values - */ - public String getLang(String channel, String key) { - if (Util.isNull(channel, key)) throw new NullPointerException(); - return getLang(channel).get(key); - } - /** * Gets the Graphics Handler * diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java index db7fd079..812cd5b3 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java @@ -14,7 +14,8 @@ import net.ME1312.Galaxi.Library.Container.Container; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubServers.Client.Sponge.Library.Compatibility.ListArgument; -import net.ME1312.SubServers.Client.Sponge.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Client.Sponge.Network.Packet.*; import org.spongepowered.api.Sponge; import org.spongepowered.api.command.CommandException; @@ -41,6 +42,8 @@ import java.text.DecimalFormat; import java.util.*; import java.util.concurrent.TimeUnit; +import static net.ME1312.SubServers.Client.Sponge.Library.ObjectPermission.*; + public final class SubCommand implements CommandExecutor { private SubPlugin plugin; @@ -1139,11 +1142,11 @@ public final class SubCommand implements CommandExecutor { String select = s.get(); plugin.api.getServer(select, server -> { if (server != null) { - if (server.permits(sender, "subservers.server.%.*", "subservers.server.%.teleport")) { + if (permits(server, sender, "subservers.server.%.*", "subservers.server.%.teleport")) { if (!(server instanceof SubServer) || ((SubServer) server).isRunning()) { Container msg = new Container<>(false); Callback action = target -> { - if (target == sender || server.permits(sender, "subservers.server.%.*", "subservers.server.%.teleport-others")) { + if (target == sender || permits(server, sender, "subservers.server.%.*", "subservers.server.%.teleport-others")) { sender.sendMessage(ChatColor.convertColor(plugin.api.getLang("SubServers", "Command.Teleport").replace("$str$", target.getName()))); plugin.pmc(target, "Connect", server.getName()); } else if (!msg.get()) { @@ -1282,7 +1285,7 @@ public final class SubCommand implements CommandExecutor { List[] checks = permissions.toArray(new List[0]); for (int p = 0; permitted && p < permissions.size(); p++) { if (checks[p] == null || checks[p].size() <= 0) continue; - else permitted = server.permits(sender, checks[p].toArray(new String[0])); + else permitted = permits(server, sender, checks[p].toArray(new String[0])); } } diff --git a/SubServers.Client/pom.xml b/SubServers.Client/pom.xml index 8bd3d917..945225b2 100644 --- a/SubServers.Client/pom.xml +++ b/SubServers.Client/pom.xml @@ -8,6 +8,7 @@ pom + Common Bukkit Sponge Universal diff --git a/SubServers.Host/pom.xml b/SubServers.Host/pom.xml index bafa0dad..3b93acfe 100644 --- a/SubServers.Host/pom.xml +++ b/SubServers.Host/pom.xml @@ -24,6 +24,13 @@ compile true
+ + net.ME1312.SubServers + SubServers.Client.Common + -PLACEHOLDER + compile + true + net.ME1312.SubData Client @@ -142,6 +149,10 @@ https://dev.me1312.net/jenkins/job/GalaxiEngine/javadoc/GalaxiEngine/ https://dev.me1312.net/jenkins/job/SubData/javadoc/Client/ + true + + net.ME1312.SubServers:SubServers.Client.Common:* + diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java index a2b26b59..6de77f46 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Event.Event; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Host.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Host.SubAPI; import java.lang.reflect.InvocationTargetException; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java index 4634e6d7..002ed5b2 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Event.Event; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Host.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Host.SubAPI; import java.lang.reflect.InvocationTargetException; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java index 30e3e693..3ffd0c96 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubCreatorImpl.java @@ -12,12 +12,13 @@ import net.ME1312.Galaxi.Library.UniversalFile; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Client.Common.Network.API.SubCreator; +import net.ME1312.SubServers.Client.Common.Network.API.SubCreator.ServerType; import net.ME1312.SubServers.Host.ExHost; import net.ME1312.SubServers.Host.Library.Exception.InvalidServerException; import net.ME1312.SubServers.Host.Library.Exception.InvalidTemplateException; import net.ME1312.SubServers.Host.Library.Exception.SubCreatorException; import net.ME1312.SubServers.Host.Library.ReplacementScanner; -import net.ME1312.SubServers.Host.Network.API.SubCreator.ServerType; import net.ME1312.SubServers.Host.Network.Packet.PacketExCreateServer; import net.ME1312.SubServers.Host.Network.Packet.PacketOutExLogMessage; import net.ME1312.SubServers.Host.SubAPI; @@ -39,7 +40,7 @@ public class SubCreatorImpl { private ExHost host; private TreeMap thread; - public static class ServerTemplate extends net.ME1312.SubServers.Host.Network.API.SubCreator.ServerTemplate { + public static class ServerTemplate extends SubCreator.ServerTemplate { private String name; private String nick = null; private boolean enabled; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Server.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Server.java deleted file mode 100644 index 8c5da752..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/Server.java +++ /dev/null @@ -1,242 +0,0 @@ -package net.ME1312.SubServers.Host.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Host.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Host.Network.Packet.PacketDownloadServerInfo; -import net.ME1312.SubServers.Host.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.util.*; - -/** - * Simplified Server Data Class - */ -public class Server { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Server - * - * @param raw Raw representation of the Server - */ - public Server(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Server - * - * @param client SubData connection - * @param raw Raw representation of the Server - */ - Server(DataClient client, ObjectMap raw) { - this.client = (SubDataClient) client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Server && getSignature().equals(((Server) obj).getSignature()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Get the Name of this Server - * - * @return Server Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Server - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - /** - * Get the Address of this Server - * - * @return Server Address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Get this Server's Groups - * - * @return Group names - */ - public List getGroups() { - return new LinkedList(raw.getRawStringList("group")); - } - - /** - * Get players on this server across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get players on this server across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * If the server is hidden from players - * - * @return Hidden Status - */ - public boolean isHidden() { - return raw.getBoolean("hidden"); - } - - /** - * Gets the MOTD of the Server - * - * @return Server MOTD - */ - public String getMotd() { - return raw.getRawString("motd"); - } - - /** - * Gets if the Server is Restricted - * - * @return Restricted Status - */ - public boolean isRestricted() { - return raw.getBoolean("restricted"); - } - - /** - * Get a copy of the current whitelist - * - * @return Player Whitelist - */ - public Collection getWhitelist() { - return raw.getUUIDList("whitelist"); - } - - /** - * See if a player is whitelisted - * - * @param player Player to check - * @return Whitelisted Status - */ - public boolean isWhitelisted(UUID player) { - return getWhitelist().contains(player); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubCreator.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubCreator.java deleted file mode 100644 index 6ed494b0..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/API/SubCreator.java +++ /dev/null @@ -1,293 +0,0 @@ -package net.ME1312.SubServers.Host.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Host.Network.Packet.PacketCreateServer; -import net.ME1312.SubServers.Host.Network.Packet.PacketUpdateServer; -import net.ME1312.SubServers.Host.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; -import java.util.UUID; - -/** - * Simplified SubCreator Data Class - */ -public class SubCreator { - HashMap templates = new HashMap(); - Host host; - ObjectMap raw; - - SubCreator(Host host, ObjectMap raw) { - this.host = host; - this.raw = raw; - - for (String template : raw.getMap("templates").getKeys()) { - templates.put(template.toLowerCase(), new ServerTemplate(raw.getMap("templates").getMap(template))); - } - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubCreator && host.getSignature().equals(((SubCreator) obj).host.getSignature()); - } - - public static class ServerTemplate { - private ObjectMap raw; - private ServerType type; - - public ServerTemplate(ObjectMap raw) { - this.raw = raw; - this.type = Util.getDespiteException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase().replace('-', '_').replace(' ', '_')), ServerType.CUSTOM); - } - - /** - * Get the Name of this Template - * - * @return Template Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Template - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get the Enabled Status of this Template - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Item Icon for this Template - * - * @return Item Icon Name/ID - */ - public String getIcon() { - return raw.getString("icon"); - } - - /** - * Get the Type of this Template - * - * @return Template Type - */ - public ServerType getType() { - return type; - } - - /** - * Get whether this Template requires the Version argument - * - * @return Version Requirement - */ - public boolean requiresVersion() { - return raw.getBoolean("version-req"); - } - - /** - * Get whether this Template can be used to update it's servers - * - * @return Updatable Status - */ - public boolean canUpdate() { - return raw.getBoolean("can-update"); - } - } - public enum ServerType { - SPIGOT, - VANILLA, - FORGE, - SPONGE, - CUSTOM; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase(); - } - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player, name, host.getName(), template.getName(), version, port, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(String name, ServerTemplate template, Version version, Integer port, Callback response) { - create(null, name, template, version, port, response); - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port) { - create(player, name, template, version, port, i -> {}); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(String name, ServerTemplate template, Version version, Integer port) { - create(name, template, version, port, i -> {}); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - }; - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version) { - update(player, server, template, version, null); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(SubServer server, ServerTemplate template, Version version, Callback response) { - update(null, server, template, version, response); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(SubServer server, ServerTemplate template, Version version) { - update(null, server, template, version); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, Version version) { - update(player, server, null, version); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(SubServer server, Version version) { - update(null, server, version); - } - - /** - * Gets the host this creator belongs to - * - * @return Host - */ - public Host getHost() { - return host; - } - - /** - * Gets the Templates that can be used in this SubCreator instance - * - * @return Template Map - */ - public Map getTemplates() { - return new TreeMap(templates); - } - - /** - * Gets a SubCreator Template by name - * - * @param name Template Name - * @return Template - */ - public ServerTemplate getTemplate(String name) { - return getTemplates().get(name.toLowerCase()); - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCommandServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCommandServer.java deleted file mode 100644 index 068cc03c..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketCommandServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Command Server Packet - */ -public class PacketCommandServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private String command; - private UUID tracker; - - /** - * New PacketCommandServer (In) - */ - public PacketCommandServer() {} - - /** - * New PacketCommandServer (Out) - * - * @param player Player Sending - * @param server Server to send to - * @param command Command to send - * @param callback Callbacks - */ - @SafeVarargs - public PacketCommandServer(UUID player, String server, String command, Callback>... callback) { - if (Util.isNull(server, command, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.command = command; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, command); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDeleteServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDeleteServer.java deleted file mode 100644 index 7d61f0e1..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDeleteServer.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Delete Server Packet - */ -public class PacketDeleteServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean recycle; - private boolean force; - private UUID tracker; - - /** - * New PacketDeleteServer (In) - */ - public PacketDeleteServer() {} - - /** - * New PacketDeleteServer (Out) - * - * @param player Player Deleting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketDeleteServer(UUID player, String server, boolean recycle, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.recycle = recycle; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, recycle); - data.set(0x0003, force); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadHostInfo.java deleted file mode 100644 index 32f588d7..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadHostInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Host Info Packet - */ -public class PacketDownloadHostInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List hosts; - private UUID tracker; - - /** - * New PacketDownloadHostInfo (In) - */ - public PacketDownloadHostInfo() {} - - /** - * New PacketDownloadHostInfo (Out) - * - * @param hosts Host names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadHostInfo(List hosts, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.hosts = hosts; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (hosts != null) json.set(0x0001, hosts); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlatformInfo.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlatformInfo.java deleted file mode 100644 index 57657bbf..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlatformInfo.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadPlatformInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID tracker; - /** - * New PacketDownloadPlatformInfo - * - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlatformInfo(Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - return data; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlayerInfo.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlayerInfo.java deleted file mode 100644 index 4e6015c5..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadPlayerInfo.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.*; - -/** - * Download Player Info Packet - */ -public class PacketDownloadPlayerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private Collection names; - private Collection ids; - private UUID tracker; - - /** - * New PacketDownloadPlayerInfo (In) - */ - public PacketDownloadPlayerInfo() {} - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player Names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(Collection players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.names = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player IDs (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(List players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.ids = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (names != null) json.set(0x0001, names); - if (ids != null) json.set(0x0002, ids); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadProxyInfo.java deleted file mode 100644 index 22bb74dd..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadProxyInfo.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadProxyInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List proxies; - private UUID tracker; - - /** - * New PacketDownloadProxyInfo (In) - */ - public PacketDownloadProxyInfo() {} - - /** - * New PacketDownloadProxyInfo (Out) - * - * @param proxies Proxies name (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadProxyInfo(List proxies, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.proxies = proxies; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (proxies != null) json.set(0x0001, proxies); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) { - ObjectMap map = new ObjectMap((Map) data.getObject(0x0001)); - ObjectMap master = (data.contains(0x0002))?new ObjectMap((Map) data.getObject(0x0002)):null; - - if (master != null) map.set(master.getString("name"), master); - callback.run(map); - } - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadServerInfo.java deleted file mode 100644 index 59a77d42..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketDownloadServerInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Server Info Packet - */ -public class PacketDownloadServerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List servers; - private UUID tracker; - - /** - * New PacketDownloadServerInfo (In) - */ - public PacketDownloadServerInfo() {} - - /** - * New PacketDownloadServerInfo (Out) - * - * @param servers Server names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadServerInfo(List servers, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.servers = servers; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (servers != null) json.set(0x0001, servers); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRemoveServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRemoveServer.java deleted file mode 100644 index 7209a6bb..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRemoveServer.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Remove Server Packet - */ -public class PacketRemoveServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean force; - private UUID tracker; - - /** - * New PacketRemoveServer (In) - */ - public PacketRemoveServer() {} - - /** - * New PacketRemoveServer (Out) - * - * @param player Player Removing - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRemoveServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRestartServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRestartServer.java deleted file mode 100644 index 0af1fdb5..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketRestartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Restart Server Packet - */ -public class PacketRestartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketRestartServer (In) - */ - public PacketRestartServer() {} - - /** - * New PacketRestartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRestartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStartServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStartServer.java deleted file mode 100644 index a3917561..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Start Server Packet - */ -public class PacketStartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketStartServer (In) - */ - public PacketStartServer() {} - - /** - * New PacketStartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketStartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.java deleted file mode 100644 index 3bcfe33d..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Stop Server Packet - */ -public class PacketStopServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private boolean force; - private String server; - private UUID id; - - /** - * New PacketStopServer (In) - */ - public PacketStopServer() {} - - /** - * New PacketStopServer (Out) - * - * @param player Player Starting - * @param server Server - * @param force Force Stop - * @param callback Callbacks - */ - @SafeVarargs - public PacketStopServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, force, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(id, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, id); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketUpdateServer.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketUpdateServer.java deleted file mode 100644 index b40fdcd8..00000000 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketUpdateServer.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.ME1312.SubServers.Host.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketUpdateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String template; - private Version version; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketUpdateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, Callback>... callback) { - this(player, name, template, version, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketUpdateServer(UUID player, String name, String template, Version version, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.template = template; - this.version = version; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - if (template != null) data.set(0x0002, template); - if (version != null) data.set(0x0003, version); - if (player != null) data.set(0x0004, player); - if (waitfor) data.set(0x0005, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubProtocol.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubProtocol.java index 759799cd..9f8541e1 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubProtocol.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/SubProtocol.java @@ -8,6 +8,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataProtocol; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Host.Event.SubNetworkConnectEvent; import net.ME1312.SubServers.Host.Event.SubNetworkDisconnectEvent; import net.ME1312.SubServers.Host.ExHost; diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java b/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java index e85a1089..a600d458 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java @@ -1,25 +1,18 @@ package net.ME1312.SubServers.Host; -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Plugin.PluginInfo; import net.ME1312.SubData.Client.DataClient; import net.ME1312.SubData.Client.DataProtocol; import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Host.Network.API.*; -import net.ME1312.SubServers.Host.Network.Packet.*; +import net.ME1312.SubServers.Client.Common.ClientAPI; -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; import java.util.*; -import static net.ME1312.SubServers.Host.Network.API.SimplifiedData.*; - /** * SubAPI Class */ -public final class SubAPI { +public final class SubAPI extends ClientAPI { private final ExHost host; private static SubAPI api; String name; @@ -58,316 +51,6 @@ public final class SubAPI { return name; } - /** - * Gets the Hosts - * - * @param callback Host Map - */ - public void getHosts(Callback> callback) { - requestHosts(null, callback); - } - - /** - * Gets a Host - * - * @param name Host name - * @param callback a Host - */ - public void getHost(String name, Callback callback) { - requestHost(null, name, callback); - } - - /** - * Gets the Server Groups (Group names are case sensitive here) - * - * @param callback Group Map - */ - public void getGroups(Callback>> callback) { - requestGroups(null, callback); - } - - /** - * Gets the Server Groups (Group names are all lowercase here) - * - * @param callback Group Map - */ - public void getLowercaseGroups(Callback>> callback) { - requestLowercaseGroups(null, callback); - } - - /** - * Gets a Server Group (Group names are case insensitive here) - * - * @param name Group name - * @param callback a Server Group - */ - public void getGroup(String name, Callback>> callback) { - requestGroup(null, name, callback); - } - - /** - * Gets the Servers (including SubServers) - * - * @param callback Server Map - */ - public void getServers(Callback> callback) { - requestServers(null, callback); - } - - /** - * Gets a Server - * - * @param name Server name - * @param callback a Server - */ - public void getServer(String name, Callback callback) { - requestServer(null, name, callback); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - addServer(null, name, ip, port, motd, hidden, restricted, response); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketAddServer(player, name, ip, port, motd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(null, name, ip, port, motd, hidden, restricted); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(player, name, ip, port, motd, hidden, restricted, i -> {}); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(String name, Callback response) { - removeServer(null, name, response); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, false, response); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - */ - public void removeServer(String name) { - removeServer(null, name); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void removeServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, i -> {}); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(String name, Callback response) { - forceRemoveServer(null, name, response); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, true, response); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - */ - public void forceRemoveServer(String name) { - forceRemoveServer(null, name); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void forceRemoveServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - forceRemoveServer(player, name, i -> {}); - } - - private void removeServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Gets the SubServers - * - * @param callback SubServer Map - */ - public void getSubServers(Callback> callback) { - requestSubServers(null, callback); - } - - /** - * Gets a SubServer - * - * @param name SubServer name - * @param callback a SubServer - */ - public void getSubServer(String name, Callback callback) { - requestSubServer(null, name, callback); - } - - /** - * Gets the known Proxies - * - * @param callback Proxy Map - */ - public void getProxies(Callback> callback) { - requestProxies(null, callback); - } - - /** - * Gets a Proxy - * - * @param name Proxy name - * @param callback a Proxy - */ - public void getProxy(String name, Callback callback) { - requestProxy(null, name, callback); - } - - /** - * Get the Master Proxy Container - * - * @param callback Master Proxy - */ - public void getMasterProxy(Callback callback) { - requestMasterProxy(null, callback); - } - - /** - * Gets players on this network across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - requestGlobalPlayers(null, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param name Player name - * @param callback Remote Player - */ - public void getGlobalPlayer(String name, Callback callback) { - requestGlobalPlayer(null, name, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param id Player UUID - * @param callback Remote Player - */ - public void getGlobalPlayer(UUID id, Callback callback) { - requestGlobalPlayer(null, id, callback); - } - /** * Gets the SubData Network Connections * @@ -410,18 +93,6 @@ public final class SubAPI { return new LinkedHashMap<>(host.lang.get().get(channel.toLowerCase())); } - /** - * Gets a value from the SubServers Lang - * - * @param channel Lang Channel - * @param key Key - * @return Lang Values - */ - public String getLang(String channel, String key) { - if (Util.isNull(channel, key)) throw new NullPointerException(); - return getLang(channel).get(key); - } - /** * Gets the SubServers App Info * diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java b/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java index bdc1e36f..16778915 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java @@ -15,8 +15,9 @@ import net.ME1312.Galaxi.Plugin.Command.Command; import net.ME1312.Galaxi.Plugin.Command.CommandSender; import net.ME1312.Galaxi.Plugin.Command.CompletionHandler; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Client.Common.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Host.Library.TextColor; -import net.ME1312.SubServers.Host.Network.API.*; import net.ME1312.SubServers.Host.Network.Packet.*; import java.lang.reflect.InvocationTargetException; diff --git a/SubServers.Sync/pom.xml b/SubServers.Sync/pom.xml index 24d6740e..117179e3 100644 --- a/SubServers.Sync/pom.xml +++ b/SubServers.Sync/pom.xml @@ -47,6 +47,13 @@ compile true + + net.ME1312.SubServers + SubServers.Client.Common + -PLACEHOLDER + compile + true + net.ME1312.SubData Client @@ -174,6 +181,7 @@ true net.ME1312.SubServers:SubServers.Bungee.Common:* + net.ME1312.SubServers:SubServers.Client.Common:* diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java index 44b04edc..795b8d22 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.SubServers.Sync.Library.SubEvent; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubServers.Sync.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Sync.SubAPI; import net.md_5.bungee.api.plugin.Event; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java index af450b6a..2456762b 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java @@ -4,7 +4,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubServers.Sync.Library.SubEvent; -import net.ME1312.SubServers.Sync.Network.API.SubServer; +import net.ME1312.SubServers.Client.Common.Network.API.SubServer; import net.ME1312.SubServers.Sync.SubAPI; import net.md_5.bungee.api.plugin.Event; diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/ExProxy.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/ExProxy.java index 619845df..2f701355 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/ExProxy.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/ExProxy.java @@ -24,7 +24,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubServers.Sync.Library.ConfigUpdater; -import net.ME1312.SubServers.Sync.Network.API.RemotePlayer; +import net.ME1312.SubServers.Sync.Server.CachedPlayer; import net.ME1312.SubServers.Sync.Network.Packet.PacketDisconnectPlayer; import net.ME1312.SubServers.Sync.Network.Packet.PacketExSyncPlayer; import net.ME1312.SubServers.Sync.Network.SubProtocol; @@ -60,7 +60,7 @@ public final class ExProxy extends BungeeCommon implements Listener { public final Map servers = new TreeMap(); public final HashMap rPlayerLinkS = new HashMap(); public final HashMap rPlayerLinkP = new HashMap(); - public final HashMap rPlayers = new HashMap(); + public final HashMap rPlayers = new HashMap(); private final HashMap> fallbackLimbo = new HashMap>(); public final PrintStream out; @@ -90,7 +90,7 @@ public final class ExProxy extends BungeeCommon implements Listener { this.out = out; if (!(new UniversalFile(dir, "config.yml").exists())) { - Util.copyFromJar(ExProxy.class.getClassLoader(), "net/ME1312/SubServers/Sync/Library/Files/bungee.yml", new UniversalFile(dir, "config.yml").getPath()); + Util.copyFromJar(ExProxy.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/bungee.yml", new UniversalFile(dir, "config.yml").getPath()); YAMLConfig tmp = new YAMLConfig(new UniversalFile("config.yml")); tmp.get().set("stats", UUID.randomUUID().toString()); tmp.save(); @@ -269,17 +269,17 @@ public final class ExProxy extends BungeeCommon implements Listener { if (api.getSubDataNetwork()[0] != null && !api.getSubDataNetwork()[0].isClosed()) { api.getProxy(api.getName(), proxy -> { synchronized (rPlayers) { - ArrayList add = new ArrayList(); + ArrayList add = new ArrayList(); for (ProxiedPlayer player : getPlayers()) { if (!rPlayers.containsKey(player.getUniqueId())) { // Add players that don't exist - RemotePlayer p = new RemotePlayer(player); + CachedPlayer p = new CachedPlayer(player); rPlayerLinkP.put(player.getUniqueId(), p.getProxy().toLowerCase()); rPlayers.put(player.getUniqueId(), p); if (player.getServer().getInfo() instanceof ServerImpl) rPlayerLinkS.put(player.getUniqueId(), (ServerImpl) player.getServer().getInfo()); add.add(p); } } - ArrayList remove = new ArrayList(); + ArrayList remove = new ArrayList(); for (NamedContainer player : proxy.getPlayers()) { // Remove players that shouldn't exist if (getPlayer(player.get()) == null) { remove.add(rPlayers.get(player.get())); @@ -296,8 +296,8 @@ public final class ExProxy extends BungeeCommon implements Listener { } } LinkedList packets = new LinkedList(); // Compile change data for external proxies - if (add.size() > 0) packets.add(new PacketExSyncPlayer(true, add.toArray(new RemotePlayer[0]))); - if (remove.size() > 0) packets.add(new PacketExSyncPlayer(false, remove.toArray(new RemotePlayer[0]))); + if (add.size() > 0) packets.add(new PacketExSyncPlayer(true, add.toArray(new CachedPlayer[0]))); + if (remove.size() > 0) packets.add(new PacketExSyncPlayer(false, remove.toArray(new CachedPlayer[0]))); if (packets.size() > 0) { PacketExSyncPlayer[] packet = packets.toArray(new PacketExSyncPlayer[0]); if (api.getSubDataNetwork()[0] != null) { @@ -453,7 +453,7 @@ public final class ExProxy extends BungeeCommon implements Listener { super.getLogger().info("UUID of player " + e.getConnection().getName() + " is " + e.getConnection().getUniqueId()); if (rPlayers.containsKey(e.getConnection().getUniqueId())) { Logger.get("SubServers").warning(e.getConnection().getName() + " connected, but already had a database entry"); - RemotePlayer player = rPlayers.get(e.getConnection().getUniqueId()); + CachedPlayer player = rPlayers.get(e.getConnection().getUniqueId()); if (player.getProxy() != null && player.getProxy().equalsIgnoreCase(api.getName())) { ProxiedPlayer p = getPlayer(player.getUniqueId()); if (p != null) p.disconnect(new TextComponent(getTranslation("already_connected_proxy"))); @@ -512,9 +512,9 @@ public final class ExProxy extends BungeeCommon implements Listener { public void connected(ServerConnectedEvent e) { if (e.getPlayer().isConnected()) { synchronized (rPlayers) { - ObjectMap raw = RemotePlayer.translate(e.getPlayer()); + ObjectMap raw = CachedPlayer.translate(e.getPlayer()); raw.set("server", e.getServer().getInfo().getName()); - RemotePlayer player = new RemotePlayer(raw); + CachedPlayer player = new CachedPlayer(raw); rPlayerLinkP.put(player.getUniqueId(), player.getProxy().toLowerCase()); rPlayers.put(player.getUniqueId(), player); if (e.getServer().getInfo() instanceof ServerImpl) rPlayerLinkS.put(player.getUniqueId(), (ServerImpl) e.getServer().getInfo()); @@ -572,7 +572,7 @@ public final class ExProxy extends BungeeCommon implements Listener { synchronized (rPlayers) { if (rPlayers.containsKey(id) && (!rPlayerLinkP.containsKey(id) || rPlayerLinkP.get(id).equalsIgnoreCase(api.getName()))) { - RemotePlayer player = rPlayers.get(id); + CachedPlayer player = rPlayers.get(id); rPlayerLinkS.remove(id); rPlayerLinkP.remove(id); rPlayers.remove(id); @@ -585,7 +585,7 @@ public final class ExProxy extends BungeeCommon implements Listener { } @SuppressWarnings("unchecked") - private Map getSubDataAsMap(net.ME1312.SubServers.Sync.Network.API.Server server) { + private Map getSubDataAsMap(net.ME1312.SubServers.Client.Common.Network.API.Server server) { HashMap map = new HashMap(); ObjectMap subdata = new ObjectMap((Map) server.getRaw().getObject("subdata")); for (Integer channel : subdata.getKeys()) map.put(channel, subdata.getUUID(channel)); @@ -596,9 +596,9 @@ public final class ExProxy extends BungeeCommon implements Listener { public void add(SubAddServerEvent e) { api.getServer(e.getServer(), server -> { if (server != null) { - if (server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer) { + if (server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer) { servers.put(server.getName().toLowerCase(), SubServerImpl.construct(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), - getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist(), ((net.ME1312.SubServers.Sync.Network.API.SubServer) server).isRunning())); + getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist(), ((net.ME1312.SubServers.Client.Common.Network.API.SubServer) server).isRunning())); Logger.get("SubServers").info("Added SubServer: " + e.getServer()); } else { servers.put(server.getName().toLowerCase(), ServerImpl.construct(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), @@ -609,24 +609,24 @@ public final class ExProxy extends BungeeCommon implements Listener { }); } - public Boolean merge(net.ME1312.SubServers.Sync.Network.API.Server server) { + public Boolean merge(net.ME1312.SubServers.Client.Common.Network.API.Server server) { ServerImpl current = servers.get(server.getName().toLowerCase()); - if (current == null || server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer || !(current instanceof SubServerImpl)) { + if (current == null || server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer || !(current instanceof SubServerImpl)) { if (current == null || !current.getSignature().equals(server.getSignature())) { - if (server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer) { + if (server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer) { servers.put(server.getName().toLowerCase(), SubServerImpl.construct(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), - getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist(), ((net.ME1312.SubServers.Sync.Network.API.SubServer) server).isRunning())); + getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist(), ((net.ME1312.SubServers.Client.Common.Network.API.SubServer) server).isRunning())); } else { servers.put(server.getName().toLowerCase(), ServerImpl.construct(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist())); } - Logger.get("SubServers").info("Added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); + Logger.get("SubServers").info("Added "+((server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); return true; } else { - if (server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer) { - if (((net.ME1312.SubServers.Sync.Network.API.SubServer) server).isRunning() != ((SubServerImpl) current).isRunning()) - ((SubServerImpl) current).setRunning(((net.ME1312.SubServers.Sync.Network.API.SubServer) server).isRunning()); + if (server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer) { + if (((net.ME1312.SubServers.Client.Common.Network.API.SubServer) server).isRunning() != ((SubServerImpl) current).isRunning()) + ((SubServerImpl) current).setRunning(((net.ME1312.SubServers.Client.Common.Network.API.SubServer) server).isRunning()); } if (!server.getMotd().equals(current.getMotd())) current.setMotd(server.getMotd()); @@ -637,7 +637,7 @@ public final class ExProxy extends BungeeCommon implements Listener { if (!server.getDisplayName().equals(current.getDisplayName())) current.setDisplayName(server.getDisplayName()); - Logger.get("SubServers").info("Re-added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); + Logger.get("SubServers").info("Re-added "+((server instanceof net.ME1312.SubServers.Client.Common.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); return false; } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Host.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Host.java deleted file mode 100644 index cf07fcf9..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Host.java +++ /dev/null @@ -1,753 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Sync.Network.Packet.*; -import net.ME1312.SubServers.Sync.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.*; - -/** - * Simplified Host Data Class - */ -public class Host { - HashMap servers = new HashMap(); - private SubCreator creator; - private List players = null; - ObjectMap raw; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Host - * - * @param raw Raw representation of the Host - */ - public Host(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Host - * - * @param client SubData connection - * @param raw Raw representation of the Host - */ - Host(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Host && getSignature().equals(((Host) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - - servers.clear(); - this.creator = new SubCreator(this, raw.getMap("creator")); - for (String server : raw.getMap("servers").getKeys()) { - servers.put(server.toLowerCase(), new SubServer(this, raw.getMap("servers").getMap(server))); - } - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array (may be empty if unsupported) - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - if (raw.contains("subdata")) { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } else { - return new SubDataSender[0]; - } - } - - /** - * Is this Host Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * Is this Host Enabled? - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Address of this Host - * - * @return Host Address - */ - public InetAddress getAddress() { - try { - return InetAddress.getByName(raw.getRawString("address")); - } catch (UnknownHostException e) { - throw new IllegalStateException("Invalid address response from raw data key: address"); - } - } - - /** - * Get the host Directory Path - * - * @return Host Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Name of this Host - * - * @return Host Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Host - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get players on servers provided by this host across all known proxies - * - * @return Remote Player Collection - */ - public Collection> getGlobalPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on servers provided by this host across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (SubServer server : getSubServers().values()) for (NamedContainer player : server.getGlobalPlayers()) ids.add(player.get()); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Starts the Servers Specified - * - * @param servers Servers - */ - public void start(String... servers) { - start(null, servers); - } - - /** - * Starts the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void start(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).start(player); - } - } - - /** - * Stops the Servers Specified - * - * @param servers Servers - */ - public void stop(String... servers) { - stop(null, servers); - } - - /** - * Stops the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void stop(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).stop(player); - } - } - - /** - * Terminates the Servers Specified - * - * @param servers Servers - */ - public void terminate(String... servers) { - terminate(null, servers); - } - - /** - * Terminates the Servers Specified - * - * @param player Player who started - * @param servers Servers - */ - public void terminate(UUID player, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).terminate(player); - } - } - - /** - * Commands the Servers Specified - * - * @param command Command to send - * @param servers Servers - */ - public void command(String command, String... servers) { - command(null, command, servers); - } - - /** - * Commands the Servers Specified - * - * @param player Player who started - * @param command Command to send - * @param servers Servers - * @return Success Status - */ - public void command(UUID player, String command, String... servers) { - for (String server : servers) { - getSubServer(server.toLowerCase()).command(player, command); - } - } - - /** - * Gets the SubCreator Instance for this Host - * - * @return SubCreator - */ - public SubCreator getCreator() { - return creator; - } - - /** - * Gets the SubServers on this Host - * - * @return SubServer Map - */ - public Map getSubServers() { - return new TreeMap(servers); - } - - /** - * Gets a SubServer - * - * @param name SubServer Name - * @return a SubServer - */ - public SubServer getSubServer(String name) { - if (Util.isNull(name)) throw new NullPointerException(); - return getSubServers().get(name.toLowerCase()); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, response); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketAddServer(player, name, enabled, getName(), port, motd, log, directory, executable, stopcmd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a SubServer - * - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(null, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted); - } - - /** - * Adds a SubServer - * - * @param player Player adding - * @param name Name of Server - * @param enabled Enabled Status - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @return The SubServer - */ - public void addSubServer(UUID player, String name, boolean enabled, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted) { - addSubServer(player, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - */ - public void removeSubServer(String name) { - removeSubServer(null, name); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void removeSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, i -> {}); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - */ - public void forceRemoveSubServer(String name) { - forceRemoveSubServer(null, name); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - */ - public void forceRemoveSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, i -> {}); - } - - /** - * Removes a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(String name, Callback response) { - removeSubServer(null, name, response); - } - - /** - * Removes a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void removeSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, false, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(String name, Callback response) { - forceRemoveSubServer(null, name, response); - } - - /** - * Forces the Removal of a SubServer - * - * @param player Player Removing - * @param name SubServer Name - * @param response Response Code - */ - public void forceRemoveSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeSubServer(player, name, true, response); - } - - private void removeSubServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void recycleSubServer(String name) { - recycleSubServer(null, name); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void recycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - */ - public void forceRecycleSubServer(String name) { - forceRecycleSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - */ - public void forceRecycleSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, i -> {}); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(String name, Callback response) { - recycleSubServer(null, name, response); - } - - /** - * Deletes a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void recycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, false, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(String name, Callback response) { - forceRecycleSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer (will move to 'Recently Deleted') - * - * @param player Player Deleting - * @param name SubServer Name - * @param response Response Code - */ - public void forceRecycleSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, true, true, response); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name) { - deleteSubServer(null, name); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, i -> {}); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name) { - forceDeleteSubServer(null, name); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, i -> {}); - } - - /** - * Deletes a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(String name, Callback response) { - deleteSubServer(null, name, response); - } - - /** - * Deletes a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void deleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, false, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(String name, Callback response) { - forceDeleteSubServer(null, name, response); - } - - /** - * Forces the Deletion of a SubServer - * - * @param player Player Deleting - * @param name SubServer Name - * @return Success Status - */ - public void forceDeleteSubServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - deleteSubServer(player, name, false, true, response); - } - - private void deleteSubServer(UUID player, String name, boolean recycle, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketDeleteServer(player, name, recycle, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Host - * - * @return Raw Host - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Proxy.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Proxy.java deleted file mode 100644 index 15296d3c..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/Proxy.java +++ /dev/null @@ -1,219 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Map.ObjectMapValue; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.DataSender; -import net.ME1312.SubData.Client.Library.ForwardedDataSender; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadProxyInfo; -import net.ME1312.SubServers.Sync.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Proxy Data Class - */ -public class Proxy { - ObjectMap raw; - private List players = null; - DataClient client; - long timestamp; - - /** - * Create an API representation of a Proxy - * - * @param raw Raw representation of the Proxy - */ - public Proxy(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Proxy - * - * @param client SubData connection - * @param raw Raw representation of the Proxy - */ - Proxy(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Proxy && getSignature().equals(((Proxy) obj).getSignature()); - } - - private void load(ObjectMap raw) { - this.raw = raw; - this.players = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - String name = getName(); - client().sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> load(data.getMap(name)))); - } - - /** - * Gets the SubData Client Channel IDs - * - * @return SubData Client Channel ID Array - */ - @SuppressWarnings("unchecked") - public DataSender[] getSubData() { - ObjectMap subdata = new ObjectMap((Map) raw.getObject("subdata")); - LinkedList keys = new LinkedList(subdata.getKeys()); - LinkedList channels = new LinkedList(); - Collections.sort(keys); - for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel))); - return channels.toArray(new SubDataSender[0]); - } - - /** - * Get the Name of this Proxy - * - * @return Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Proxy - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Determine if the proxy is the Master Proxy - * - * @return Master Proxy Status - */ - public boolean isMaster() { - return raw.getBoolean("master"); - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @return Remote Player Collection - */ - public Collection> getPlayers() { - List> players = new ArrayList>(); - for (String id : raw.getMap("players").getKeys()) { - players.add(new NamedContainer(raw.getMap("players").getRawString(id), UUID.fromString(id))); - } - return players; - } - - /** - * Get the players on this proxy (via RedisBungee) - * - * @param callback Remote Player Collection - */ - public void getPlayers(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (players == null) { - LinkedList ids = new LinkedList(); - for (String id : raw.getMap("players").getKeys()) ids.add(UUID.fromString(id)); - client().sendPacket(new PacketDownloadPlayerInfo(ids, data -> { - LinkedList players = new LinkedList(); - for (String player : data.getKeys()) { - players.add(new RemotePlayer(data.getMap(player))); - } - - this.players = players; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get the Signature of this Object - * - * @return Object Signature - */ - public final String getSignature() { - return raw.getRawString("signature"); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Determine if an extra value exists - * - * @param handle Handle - * @return Value Status - */ - public boolean hasExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").getKeys().contains(handle); - } - - /** - * Get an extra value - * - * @param handle Handle - * @return Value - */ - public ObjectMapValue getExtra(String handle) { - if (Util.isNull(handle)) throw new NullPointerException(); - return raw.getMap("extra").get(handle); - } - - /** - * Get the extra value section - * - * @return Extra Value Section - */ - public ObjectMap getExtra() { - return raw.getMap("extra").clone(); - } - - /** - * Get the raw representation of the Proxy - * - * @return Raw Proxy - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/RemotePlayer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/RemotePlayer.java deleted file mode 100644 index 865c5326..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/RemotePlayer.java +++ /dev/null @@ -1,226 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadPlayerInfo; -import net.ME1312.SubServers.Sync.SubAPI; -import net.md_5.bungee.api.connection.ProxiedPlayer; - -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.util.Calendar; -import java.util.Collections; -import java.util.UUID; - -/** - * Simplified RemotePlayer Data Class - */ -public class RemotePlayer implements net.ME1312.SubServers.Bungee.Library.Compatibility.RemotePlayer { - ObjectMap raw; - private Proxy proxy = null; - private Server server = null; - DataClient client; - long timestamp; - - /** - * Convert a Local Player to a Raw representation of a Remote Player - * - * @param player Local Player - * @return Raw representation of the Remote Player - */ - public static ObjectMap translate(ProxiedPlayer player) { - ObjectMap raw = new ObjectMap(); - raw = new ObjectMap(); - raw.set("name", player.getName()); - raw.set("id", player.getUniqueId()); - raw.set("address", player.getAddress().getAddress().getHostAddress() + ':' + player.getAddress().getPort()); - if (player.getServer() != null) raw.set("server", player.getServer().getInfo().getName()); - if (SubAPI.getInstance().getName() != null) raw.set("proxy", SubAPI.getInstance().getName()); - return raw; - } - - /** - * Convert a Local Player to an API representation of a Remote Player - * - * @param player Local Player - */ - public RemotePlayer(ProxiedPlayer player) { - this(translate(player)); - } - - /** - * Create an API representation of a Remote Player - * - * @param raw Raw representation of the Remote Player - */ - public RemotePlayer(ObjectMap raw) { - this(null, raw); - } - - /** - * Create an API representation of a Remote Player - * - * @param client SubData connection - * @param raw Raw representation of the Remote Player - */ - RemotePlayer(DataClient client, ObjectMap raw) { - this.client = client; - load(raw); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof RemotePlayer && getUniqueId().equals(((RemotePlayer) obj).getUniqueId()); - } - - void load(ObjectMap raw) { - this.raw = raw; - this.proxy = null; - this.server = null; - this.timestamp = Calendar.getInstance().getTime().getTime(); - } - - private SubDataClient client() { - return SimplifiedData.client(client); - } - - /** - * Download a new copy of the data from SubData - */ - public void refresh() { - UUID id = getUniqueId(); - client().sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> load(data.getMap(id.toString())))); - } - - /** - * Get the UUID of this player. - * - * @return the UUID - */ - public UUID getUniqueId() { - return raw.getUUID("id"); - } - - /** - * Get the unique name of this player. - * - * @return the players username - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Gets the remote address of this connection. - * - * @return the remote address - */ - public InetSocketAddress getAddress() { - return new InetSocketAddress(raw.getRawString("address").split(":")[0], Integer.parseInt(raw.getRawString("address").split(":")[1])); - } - - /** - * Gets the proxy this player is connected to. - * - * @return the proxy this player is connected to - */ - public String getProxy() { - return raw.getRawString("proxy"); - } - - /** - * Gets the proxy this player is connected to. - * - * @param callback the proxy this player is connected to - */ - public void getProxy(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (proxy == null || !proxy.getName().equalsIgnoreCase(raw.getRawString("proxy"))) { - SubAPI.getInstance().getProxy(raw.getRawString("proxy"), proxy -> { - this.proxy = proxy; - run.run(); - }); - } else { - run.run(); - } - } - - @Override - public String getProxyName() { - return getProxy(); - } - - /** - * Gets the server this player is connected to. - * - * @return the server this player is connected to - */ - public String getServer() { - return raw.getRawString("server"); - } - - /** - * Gets the server this player is connected to. - * - * @param callback the server this player is connected to - */ - public void getServer(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (server == null || !server.getName().equalsIgnoreCase(raw.getRawString("server"))) { - SubAPI.getInstance().getServer(raw.getRawString("server"), server -> { - this.server = server; - run.run(); - }); - } else { - run.run(); - } - } - - @Override - public String getServerName() { - return getServer(); - } - - /** - * Get the Timestamp for when the data was last refreshed - * - * @return Data Timestamp - */ - public long getTimestamp() { - return timestamp; - } - - /** - * Get the raw representation of the Server - * - * @return Raw Server - */ - public ObjectMap getRaw() { - return raw.clone(); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SimplifiedData.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SimplifiedData.java deleted file mode 100644 index 03e69eb2..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SimplifiedData.java +++ /dev/null @@ -1,400 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Sync.Network.Packet.*; -import net.ME1312.SubServers.Sync.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -/** - * Simplified Data Requesting Class - */ -public final class SimplifiedData { - private SimplifiedData() {} - static SubDataClient client(DataClient client) { - return (SubDataClient) ((client != null)? client : SubAPI.getInstance().getSubDataNetwork()[0]); - } - - /** - * Requests the Hosts - * - * @param client SubData connection - * @param callback Host Map - */ - public static void requestHosts(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(null, data -> { - TreeMap hosts = new TreeMap(); - for (String host : data.getKeys()) { - hosts.put(host.toLowerCase(), new Host(client, data.getMap(host))); - } - - try { - callback.run(hosts); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Host - * - * @param client SubData connection - * @param name Host name - * @param callback a Host - */ - public static void requestHost(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadHostInfo(Collections.singletonList(name), data -> { - Host host = null; - if (data.getKeys().size() > 0) { - host = new Host(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are case sensitive here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(null, data -> { - TreeMap> groups = new TreeMap>(); - for (String group : data.getKeys()) { - ArrayList servers = new ArrayList(); - for (String server : data.getMap(group).getKeys()) { - if (data.getMap(group).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(group).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(group).getMap(server))); - } - } - if (servers.size() > 0) groups.put(group, servers); - } - - try { - callback.run(groups); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Server Groups (Group names are all lowercase here) - * - * @param client SubData connection - * @param callback Group Map - */ - public static void requestLowercaseGroups(DataClient client, Callback>> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestGroups(client, groups -> { - TreeMap> lowercaseGroups = new TreeMap>(); - for (String key : groups.keySet()) { - lowercaseGroups.put(key.toLowerCase(), groups.get(key)); - } - callback.run(lowercaseGroups); - }); - } - - /** - * Requests a Server Group (Group names are case insensitive here) - * - * @param client SubData connection - * @param name Group name - * @param callback a Server Group - */ - public static void requestGroup(DataClient client, String name, Callback>> callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadGroupInfo(Collections.singletonList(name), data -> { - NamedContainer> group = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - List servers = new ArrayList(); - for (String server : data.getMap(key).getKeys()) { - if (data.getMap(key).getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.add(new SubServer(client, data.getMap(key).getMap(server))); - } else { - servers.add(new Server(client, data.getMap(key).getMap(server))); - } - } - group = new NamedContainer<>(key, servers); - } - - try { - callback.run(group); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the Servers (including SubServers) - * - * @param client SubData connection - * @param callback Server Map - */ - public static void requestServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(null, data -> { - TreeMap servers = new TreeMap(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) { - servers.put(server.toLowerCase(), new SubServer(client, data.getMap(server))); - } else { - servers.put(server.toLowerCase(), new Server(client, data.getMap(server))); - } - } - - try { - callback.run(servers); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Server - * - * @param client SubData connection - * @param name Server name - * @param callback a Server - */ - public static void requestServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadServerInfo(Collections.singletonList(name), data -> { - Server server = null; - if (data.getKeys().size() > 0) { - String key = new LinkedList(data.getKeys()).getFirst(); - if (data.getMap(key).getRawString("type", "Server").equals("SubServer")) { - server = new SubServer(client, data.getMap(key)); - } else { - server = new Server(client, data.getMap(key)); - } - } - - try { - callback.run(server); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests the SubServers - * - * @param client SubData connection - * @param callback SubServer Map - */ - public static void requestSubServers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - requestServers(client, servers -> { - TreeMap subservers = new TreeMap(); - for (String server : servers.keySet()) { - if (servers.get(server) instanceof SubServer) subservers.put(server, (SubServer) servers.get(server)); - } - callback.run(subservers); - }); - } - - /** - * Requests a SubServer - * - * @param client SubData connection - * @param name SubServer name - * @param callback a SubServer - */ - public static void requestSubServer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - requestServer(client, name, server -> callback.run((server instanceof SubServer)?(SubServer) server:null)); - } - - /** - * Requests the known Proxies - * - * @param client SubData connection - * @param callback Proxy Map - */ - public static void requestProxies(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(null, data -> { - TreeMap proxies = new TreeMap(); - for (String proxy : data.getKeys()) { - proxies.put(proxy.toLowerCase(), new Proxy(client, data.getMap(proxy))); - } - - try { - callback.run(proxies); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a Proxy - * - * @param client SubData connection - * @param name Proxy name - * @param callback a Proxy - */ - public static void requestProxy(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.singletonList(name), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Request the Master Proxy redis container (null if unavailable) - * - * @param client SubData connection - * @param callback Master Proxy - */ - public static void requestMasterProxy(DataClient client, Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadProxyInfo(Collections.emptyList(), data -> { - Proxy proxy = null; - if (data.getKeys().size() > 0) { - proxy = new Proxy(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(proxy); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests players on this network across all known proxies - * - * @param client SubData connection - * @param callback Remote Player Collection - */ - public static void requestGlobalPlayers(DataClient client, Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo((List) null, data -> { - TreeMap players = new TreeMap(); - for (String player : data.getKeys()) { - players.put(UUID.fromString(player), new RemotePlayer(client, data.getMap(player))); - } - - try { - callback.run(players); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param name Player name - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, String name, Callback callback) { - if (Util.isNull(name, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(name), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Requests a player on this network by searching across all known proxies - * - * @param client SubData connection - * @param id Player UUID - * @param callback Remote Player - */ - public static void requestGlobalPlayer(DataClient client, UUID id, Callback callback) { - if (Util.isNull(id, callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client(client).sendPacket(new PacketDownloadPlayerInfo(Collections.singletonList(id), data -> { - RemotePlayer player = null; - if (data.getKeys().size() > 0) { - player = new RemotePlayer(client, data.getMap(new LinkedList(data.getKeys()).getFirst())); - } - - try { - callback.run(player); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubCreator.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubCreator.java deleted file mode 100644 index 3ac205c8..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubCreator.java +++ /dev/null @@ -1,293 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.SubDataClient; -import net.ME1312.SubServers.Sync.Network.Packet.PacketCreateServer; -import net.ME1312.SubServers.Sync.Network.Packet.PacketUpdateServer; -import net.ME1312.SubServers.Sync.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; -import java.util.UUID; - -/** - * Simplified SubCreator Data Class - */ -public class SubCreator { - HashMap templates = new HashMap(); - Host host; - ObjectMap raw; - - SubCreator(Host host, ObjectMap raw) { - this.host = host; - this.raw = raw; - - for (String template : raw.getMap("templates").getKeys()) { - templates.put(template.toLowerCase(), new ServerTemplate(raw.getMap("templates").getMap(template))); - } - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubCreator && host.getSignature().equals(((SubCreator) obj).host.getSignature()); - } - - public static class ServerTemplate { - private ObjectMap raw; - private ServerType type; - - public ServerTemplate(ObjectMap raw) { - this.raw = raw; - this.type = Util.getDespiteException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase().replace('-', '_').replace(' ', '_')), ServerType.CUSTOM); - } - - /** - * Get the Name of this Template - * - * @return Template Name - */ - public String getName() { - return raw.getRawString("name"); - } - - /** - * Get the Display Name of this Template - * - * @return Display Name - */ - public String getDisplayName() { - return raw.getRawString("display"); - } - - /** - * Get the Enabled Status of this Template - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Get the Item Icon for this Template - * - * @return Item Icon Name/ID - */ - public String getIcon() { - return raw.getString("icon"); - } - - /** - * Get the Type of this Template - * - * @return Template Type - */ - public ServerType getType() { - return type; - } - - /** - * Get whether this Template requires the Version argument - * - * @return Version Requirement - */ - public boolean requiresVersion() { - return raw.getBoolean("version-req"); - } - - /** - * Get whether this Template can be used to update it's servers - * - * @return Updatable Status - */ - public boolean canUpdate() { - return raw.getBoolean("can-update"); - } - } - public enum ServerType { - SPIGOT, - VANILLA, - FORGE, - SPONGE, - CUSTOM; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase(); - } - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketCreateServer(player, name, host.getName(), template.getName(), version, port, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - * @param response Response Code - */ - public void create(String name, ServerTemplate template, Version version, Integer port, Callback response) { - create(null, name, template, version, port, response); - } - - /** - * Create a SubServer - * - * @param player Player Creating - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(UUID player, String name, ServerTemplate template, Version version, Integer port) { - create(player, name, template, version, port, i -> {}); - } - - /** - * Create a SubServer - * - * @param name Server Name - * @param template Server Template - * @param version Server Version (may be null) - * @param port Server Port Number (null to auto-select) - */ - public void create(String name, ServerTemplate template, Version version, Integer port) { - create(name, template, version, port, i -> {}); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketUpdateServer(player, server.getName(), template.getName(), version, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - }; - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, ServerTemplate template, Version version) { - update(player, server, template, version, null); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - * @param response Response Code - */ - public void update(SubServer server, ServerTemplate template, Version version, Callback response) { - update(null, server, template, version, response); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param template Server Template - * @param version Server Version (may be null) - */ - public void update(SubServer server, ServerTemplate template, Version version) { - update(null, server, template, version); - } - - /** - * Update a SubServer - * - * @param player Player Updating - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(UUID player, SubServer server, Version version) { - update(player, server, null, version); - } - - /** - * Update a SubServer - * - * @param server Server to Update - * @param version Server Version (may be null) - */ - public void update(SubServer server, Version version) { - update(null, server, version); - } - - /** - * Gets the host this creator belongs to - * - * @return Host - */ - public Host getHost() { - return host; - } - - /** - * Gets the Templates that can be used in this SubCreator instance - * - * @return Template Map - */ - public Map getTemplates() { - return new TreeMap(templates); - } - - /** - * Gets a SubCreator Template by name - * - * @param name Template Name - * @return Template - */ - public ServerTemplate getTemplate(String name) { - return getTemplates().get(name.toLowerCase()); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubServer.java deleted file mode 100644 index 4a3b1016..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/API/SubServer.java +++ /dev/null @@ -1,950 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.API; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.DataClient; -import net.ME1312.SubServers.Sync.Network.Packet.*; -import net.ME1312.SubServers.Sync.SubAPI; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; - -/** - * Simplified SubServer Data Class - */ -public class SubServer extends Server { - private List incompatibilities = null; - private List currentIncompatibilities = null; - private Host host = null; - - /** - * SubServer Stop Action Class - */ - public enum StopAction { - NONE, - RESTART, - REMOVE_SERVER, - RECYCLE_SERVER, - DELETE_SERVER; - - @Override - public String toString() { - return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase().replace('_', ' '); - } - } - - /** - * Create an API representation of a SubServer - * - * @param raw JSON representation of the SubServer - */ - public SubServer(ObjectMap raw) { - super(null, raw); - } - - /** - * Create an API representation of a SubServer - * - * @param client SubData connection - * @param raw JSON representation of the SubServer - */ - SubServer(DataClient client, ObjectMap raw) { - super(client, raw); - } - - - /** - * Create an API representation of a SubServer - * - * @param host Host - * @param raw JSON representation of the SubServer - */ - SubServer(Host host, ObjectMap raw) { - super(host.client, raw); - this.host = host; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof SubServer && super.equals(obj); - } - - @Override - public void refresh() { - host = null; - incompatibilities = null; - currentIncompatibilities = null; - super.refresh(); - } - - /** - * Starts the Server - * - * @param player Player who Started - * @param response Response Code - */ - public void start(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStartServer(player, getName(), data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Starts the Server - * - * @param response Response Code - */ - public void start(Callback response) { - start(null, response); - } - - /** - * Starts the Server - * - * @param player Player who Started - */ - public void start(UUID player) { - start(player, i -> {}); - } - - /** - * Starts the Server - */ - public void start() { - start(i -> {}); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - * @param response Response Code - */ - public void stop(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), false, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Stops the Server - * - * @param response Response Code - */ - public void stop(Callback response) { - stop(null, response); - } - - /** - * Stops the Server - * - * @param player Player who Stopped - */ - public void stop(UUID player) { - stop(player, i -> {}); - } - - /** - * Stops the Server - */ - public void stop() { - stop(i -> {}); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - * @param response Response Code - */ - public void terminate(UUID player, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketStopServer(player, getName(), true, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Terminates the Server - * - * @param response Response Code - */ - public void terminate(Callback response) { - terminate(null, response); - } - - /** - * Terminates the Server - * - * @param player Player who Terminated - */ - public void terminate(UUID player) { - terminate(player, i -> {}); - } - - /** - * Terminates the Server - */ - public void terminate() { - terminate(i -> {}); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Commmand to Send - * @param response Response Code - */ - public void command(UUID player, String command, Callback response) { - if (Util.isNull(command, response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketCommandServer(player, getName(), command, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Commands the Server - * - * @param command Commmand to Send - * @param response Response Code - */ - public void command(String command, Callback response) { - command(null, command, response); - } - - /** - * Commands the Server - * - * @param player Player who Commanded - * @param command Command to Send - */ - public void command(UUID player, String command) { - command(player, command, i -> {}); - } - - /** - * Commands the Server - * - * @param command Command to Send - */ - public void command(String command) { - command(command, i -> {}); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, false, response); - } - - /** - * Edits the Server - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void edit(ObjectMap edit, Callback response) { - edit(null, edit, response); - } - - /** - * Edits the Server - * - * @param player Player Editing - * @param edit Edits - */ - public void edit(UUID player, ObjectMap edit) { - edit(player, edit, i -> {}); - } - - /** - * Edits the Server - * - * @param edit Edits - */ - public void edit(ObjectMap edit) { - edit(null, edit); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(UUID player, ObjectMap edit, Callback response) { - edit(player, edit, true, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - * @param response Negative Response Code -or- Positive Success Status - */ - public void permaEdit(ObjectMap edit, Callback response) { - permaEdit(null, edit, response); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param player Player Editing - * @param edit Edits - */ - public void permaEdit(UUID player, ObjectMap edit) { - permaEdit(player, edit, i -> {}); - } - - /** - * Edits the Server (& Saves Changes) - * - * @param edit Edits - */ - public void permaEdit(ObjectMap edit) { - permaEdit(null, edit); - } - - private void edit(UUID player, ObjectMap edit, boolean perma, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - client().sendPacket(new PacketEditServer(player, getName(), edit, perma, data -> { - try { - if (data.getInt(0x0001) != 0) { - response.run(data.getInt(0x0001) * -1); - } else { - response.run(data.getInt(0x0002)); - } - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * If the Server is Running - * - * @return Running Status - */ - public boolean isRunning() { - return raw.getBoolean("running"); - } - - /** - * If the Server is Online
- * This method can only be true when a SubData connection is made! - * - * @return Online Status - */ - public boolean isOnline() { - return raw.getBoolean("online"); - } - - /** - * Grabs the Host of the Server - * - * @return The Host Name - */ - public String getHost() { - return raw.getRawString("host"); - } - - /** - * Grabs the Host of the Server - * - * @param callback The Host - */ - public void getHost(Callback callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(host); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (host == null || !host.getName().equalsIgnoreCase(raw.getRawString("host"))) { - SubAPI.getInstance().getHost(raw.getRawString("host"), host -> { - this.host = host; - run.run(); - }); - } else { - run.run(); - } - } - - /** - * Grabs the Template this Server was created from - * - * @return The Template - */ - public String getTemplate() { - return raw.getRawString("template"); - } - - /** - * Is this Server Available? - * - * @return Availability Status - */ - public boolean isAvailable() { - return raw.getBoolean("available"); - } - - /** - * If the Server is Enabled - * - * @return Enabled Status - */ - public boolean isEnabled() { - return raw.getBoolean("enabled"); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - */ - public void setEnabled(boolean value) { - setEnabled(value, b -> {}); - } - - /** - * Set if the Server is Enabled - * - * @param value Value - * @param response Success Status - */ - public void setEnabled(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("enabled", value); - edit(edit, r -> { - if (r > 0) raw.set("enabled", value); - response.run(r > 0); - }); - } - - /** - * If the Server is accepting requests to edit() - * - * @return Edit Status - */ - public boolean isEditable() { - return raw.getBoolean("editable"); - } - - /** - * If the Server is Logging - * - * @return Logging Status - */ - public boolean isLogging() { - return raw.getBoolean("log"); - } - - /** - * Set if the Server is Logging - * - * @param value Value - */ - public void setLogging(boolean value) { - setLogging(value, b -> {}); - } - - /** - * Set if the Server is Logging - * - * @param value Value - * @param response Success Status - */ - public void setLogging(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("log", value); - edit(edit, r -> { - if (r > 0) raw.set("log", value); - response.run(r > 0); - }); - } - - /** - * Get the Server Directory Path - * - * @return Server Directory Path - */ - public String getPath() { - return raw.getRawString("dir"); - } - - /** - * Get the Server's Executable String - * - * @return Executable String - */ - public String getExecutable() { - return raw.getRawString("exec"); - } - - /** - * Grab the Command to Stop the Server - * - * @return Stop Command - */ - public String getStopCommand() { - return raw.getRawString("stop-cmd"); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - */ - public void setStopCommand(String value) { - setStopCommand(value, b -> {}); - } - - /** - * Set the Command that Stops the Server - * - * @param value Value - * @param response Success Status - */ - public void setStopCommand(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-cmd", value); - edit(edit, r -> { - if (r > 0) raw.set("stop-cmd", value); - response.run(r > 0); - }); - } - - /** - * Get the action the Server will take when it stops - * - * @return Stop Action - */ - public StopAction getStopAction() { - return Util.getDespiteException(() -> StopAction.valueOf(raw.getRawString("stop-action").toUpperCase().replace('-', '_').replace(' ', '_')), StopAction.NONE); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - */ - public void setStopAction(StopAction action) { - setStopAction(action, b -> {}); - } - - /** - * Set the action the Server will take when it stops - * - * @param action Stop Action - * @param response Success Status - */ - public void setStopAction(StopAction action, Callback response) { - if (Util.isNull(action, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("stop-action", action.toString()); - edit(edit, r -> { - if (r > 0) raw.set("stop-action", action.toString()); - response.run(r > 0); - }); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server) { - toggleCompatibility(server, b -> {}); - } - - /** - * Toggles compatibility with other Servers - * - * @param server SubServer to toggle - */ - public void toggleCompatibility(String server, Callback response) { - if (Util.isNull(server, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getIncompatibilities()); - if (!value.contains(server)) value.add(server); - else value.remove(server); - - ObjectMap edit = new ObjectMap(); - edit.set("incompatible", value); - edit(edit, r -> { - if (r > 0) raw.set("incompatible", value); - response.run(r > 0); - }); - } - - /** - * Checks if a Server is compatible - * - * @param server Server name to check - * @return Compatible Status - */ - public boolean isCompatible(String server) { - LinkedList lowercaseIncompatibilities = new LinkedList(); - for (String key : getIncompatibilities()) { - lowercaseIncompatibilities.add(key.toLowerCase()); - } - return lowercaseIncompatibilities.contains(server.toLowerCase()); - } - - /** - * Get all listed incompatibilities for this Server - * - * @return Incompatibility List - */ - public List getIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible-list")); - } - - /** - * Get all listed incompatibilities for this Server - * - * @param callback Incompatibility List - */ - public void getIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(incompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (incompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible-list")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.incompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Get incompatibility issues this server currently has - * - * @return Current Incompatibility List - */ - public List getCurrentIncompatibilities() { - return new LinkedList(raw.getRawStringList("incompatible")); - } - - /** - * Get incompatibility issues this server currently has - * - * @param callback Current Incompatibility List - */ - public void getCurrentIncompatibilities(Callback> callback) { - if (Util.isNull(callback)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - Runnable run = () -> { - try { - callback.run(currentIncompatibilities); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - }; - - if (currentIncompatibilities == null) { - LinkedList incompatible = new LinkedList(); - for (String subserver : raw.getRawStringList("incompatible")) incompatible.add(subserver.toLowerCase()); - client().sendPacket(new PacketDownloadServerInfo(incompatible, data -> { - LinkedList incompatibilities = new LinkedList(); - for (String server : data.getKeys()) { - if (data.getMap(server).getRawString("type", "Server").equals("SubServer")) incompatibilities.add(new SubServer(data.getMap(server))); - } - - this.currentIncompatibilities = incompatibilities; - run.run(); - })); - } else { - run.run(); - } - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - */ - public void setDisplayName(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the Display Name for this Server - * - * @param value Value (or null to reset) - * @param response Success Status - */ - public void setDisplayName(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("display", (value == null)?"":value); - edit(edit, r -> { - if (r > 0) raw.set("display", (value == null)?getName():value); - response.run(r > 0); - }); - } - - /** - * Add this Server to a Group - * - * @param value Group name - */ - public void addGroup(String value) { - addGroup(value, b -> {}); - } - - /** - * Add this Server to a Group - * - * @param value Group name - * @param response Success Status - */ - public void addGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getGroups()); - if (!v.contains(value)) v.add(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - */ - public void removeGroup(String value) { - removeGroup(value, b -> {}); - } - - /** - * Remove this Server from a Group - * - * @param value value Group name - * @param response Success Status - */ - public void removeGroup(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ArrayList v = new ArrayList(); - v.addAll(getWhitelist()); - v.remove(value); - - ObjectMap edit = new ObjectMap(); - edit.set("group", v); - edit(edit, r -> { - if (r > 0) raw.set("group", v); - response.run(r > 0); - }); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - */ - public void setHidden(boolean value) { - setHidden(value, b -> {}); - } - - /** - * Set if the server is hidden from players - * - * @param value Value - * @param response Success Status - */ - public void setHidden(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - */ - public void setMotd(String value) { - setMotd(value, b -> {}); - } - - /** - * Sets the MOTD of the Server - * - * @param value Value - * @param response Success Status - */ - public void setMotd(String value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("motd", value); - edit(edit, r -> { - if (r > 0) raw.set("motd", value); - response.run(r > 0); - }); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - */ - public void setRestricted(boolean value) { - setRestricted(value, b -> {}); - } - - /** - * Sets if the Server is Restricted - * - * @param value Value - * @param response Success Status - */ - public void setRestricted(boolean value, Callback response) { - if (Util.isNull(value, response)) throw new NullPointerException(); - ObjectMap edit = new ObjectMap(); - edit.set("restricted", value); - edit(edit, r -> { - if (r > 0) raw.set("restricted", value); - response.run(r > 0); - }); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - */ - public void whitelist(UUID player) { - whitelist(player, b -> {}); - } - - /** - * Add a player to the whitelist (for use with restricted servers) - * - * @param player Player to add - * @param response Success Status - */ - public void whitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - if (!value.contains(player)) value.add(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - */ - public void unwhitelist(UUID player) { - unwhitelist(player, b -> {}); - } - - /** - * Remove a player to the whitelist - * - * @param player Player to remove - * @param response Success Status - */ - public void unwhitelist(UUID player, Callback response) { - if (Util.isNull(player, response)) throw new NullPointerException(); - ArrayList value = new ArrayList(); - value.addAll(getWhitelist()); - value.remove(player); - - ObjectMap edit = new ObjectMap(); - edit.set("whitelist", value); - edit(edit, r -> { - if (r > 0) raw.set("whitelist", value); - response.run(r > 0); - }); - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketAddServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketAddServer.java deleted file mode 100644 index 47b17c0b..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketAddServer.java +++ /dev/null @@ -1,123 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.net.InetAddress; -import java.util.HashMap; -import java.util.UUID; - -/** - * Add Server Packet - */ -public class PacketAddServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private ObjectMap opt; - private boolean subserver; - private UUID tracker; - - /** - * New PacketAddServer (In) - */ - public PacketAddServer() {} - - /** - * New PacketCreateServer [Server] (Out) - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(name, ip, port, motd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = false; - - ObjectMap opt = new ObjectMap(); - opt.set("address", ip.getHostAddress() + ':' + port); - opt.set("motd", motd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketAddServer [SubServer] (Out) - * - * @param player Player who Added - * @param name Name of Server - * @param enabled Enabled Status - * @param host Host of Server - * @param port Port Number - * @param motd Motd of the Server - * @param log Logging Status - * @param directory Directory - * @param executable Executable String - * @param stopcmd Command to Stop the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param callback Callbacks - */ - @SafeVarargs - public PacketAddServer(UUID player, String name, boolean enabled, String host, int port, String motd, boolean log, String directory, String executable, String stopcmd, boolean hidden, boolean restricted, Callback>... callback) { - if (Util.isNull(host, name, enabled, port, motd, log, directory, executable, stopcmd, hidden, restricted)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.subserver = true; - - ObjectMap opt = new ObjectMap(); - opt.set("enabled", enabled); - opt.set("host", host); - opt.set("port", port); - opt.set("motd", motd); - opt.set("log", log); - opt.set("dir", directory); - opt.set("exec", executable); - opt.set("stop-cmd", stopcmd); - opt.set("restricted", restricted); - opt.set("hidden", hidden); - this.opt = opt; - - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, subserver); - data.set(0x0003, opt); - if (player != null) data.set(0x0004, player); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCommandServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCommandServer.java deleted file mode 100644 index fb87b486..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCommandServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Command Server Packet - */ -public class PacketCommandServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private String command; - private UUID tracker; - - /** - * New PacketCommandServer (In) - */ - public PacketCommandServer() {} - - /** - * New PacketCommandServer (Out) - * - * @param player Player Sending - * @param server Server to send to - * @param command Command to send - * @param callback Callbacks - */ - @SafeVarargs - public PacketCommandServer(UUID player, String server, String command, Callback>... callback) { - if (Util.isNull(server, command, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.command = command; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, command); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCreateServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCreateServer.java deleted file mode 100644 index 9f9e492e..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketCreateServer.java +++ /dev/null @@ -1,99 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.Galaxi.Library.Version.Version; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Create Server Packet - */ -public class PacketCreateServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String name; - private String host; - private String template; - private Version version; - private Integer port; - private boolean waitfor; - private UUID tracker; - - /** - * New PacketCreateServer (In) - */ - public PacketCreateServer() {} - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, Callback>... callback) { - this(player, name, host, template, version, port, false, callback); - } - - /** - * New PacketCreateServer (Out) - * - * @param player Player Creating - * @param name Server Name - * @param host Host to use - * @param template Server Template - * @param version Server Version - * @param port Server Port - * @param waitfor Wait until completion to send callback - * @param callback Callbacks - */ - @SafeVarargs - public PacketCreateServer(UUID player, String name, String host, String template, Version version, Integer port, boolean waitfor, Callback>... callback) { - if (Util.isNull(name, host, template, callback)) throw new NullPointerException(); - this.player = player; - this.name = name; - this.host = host; - this.template = template; - this.version = version; - this.port = port; - this.waitfor = waitfor; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, name); - data.set(0x0002, host); - data.set(0x0003, template); - if (version != null) data.set(0x0004, version); - if (port != null) data.set(0x0005, port); - if (player != null) data.set(0x0006, player); - if (waitfor) data.set(0x0007, true); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDeleteServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDeleteServer.java deleted file mode 100644 index bdde064c..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDeleteServer.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Delete Server Packet - */ -public class PacketDeleteServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private boolean recycle; - private boolean force; - private UUID tracker; - - /** - * New PacketDeleteServer (In) - */ - public PacketDeleteServer() {} - - /** - * New PacketDeleteServer (Out) - * - * @param player Player Deleting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketDeleteServer(UUID player, String server, boolean recycle, boolean force, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.recycle = recycle; - this.force = force; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, recycle); - data.set(0x0003, force); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadGroupInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadGroupInfo.java deleted file mode 100644 index db0e0ddb..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadGroupInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Group Info Packet - */ -public class PacketDownloadGroupInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List groups; - private UUID tracker; - - /** - * New PacketDownloadGroupInfo (In) - */ - public PacketDownloadGroupInfo() {} - - /** - * New PacketDownloadGroupInfo (Out) - * - * @param groups Group names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadGroupInfo(List groups, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.groups = groups; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (groups != null) json.set(0x0001, groups); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadHostInfo.java deleted file mode 100644 index 3cbd8b07..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadHostInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Host Info Packet - */ -public class PacketDownloadHostInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List hosts; - private UUID tracker; - - /** - * New PacketDownloadHostInfo (In) - */ - public PacketDownloadHostInfo() {} - - /** - * New PacketDownloadHostInfo (Out) - * - * @param hosts Host names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadHostInfo(List hosts, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.hosts = hosts; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (hosts != null) json.set(0x0001, hosts); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlayerInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlayerInfo.java deleted file mode 100644 index ee8a5983..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadPlayerInfo.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.*; - -/** - * Download Player Info Packet - */ -public class PacketDownloadPlayerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private Collection names; - private Collection ids; - private UUID tracker; - - /** - * New PacketDownloadPlayerInfo (In) - */ - public PacketDownloadPlayerInfo() {} - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player Names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(Collection players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.names = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - /** - * New PacketDownloadPlayerInfo (Out) - * - * @param players Player IDs (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadPlayerInfo(List players, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.ids = players; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (names != null) json.set(0x0001, names); - if (ids != null) json.set(0x0002, ids); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadProxyInfo.java deleted file mode 100644 index 73c54232..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadProxyInfo.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Proxy Info Packet - */ -public class PacketDownloadProxyInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List proxies; - private UUID tracker; - - /** - * New PacketDownloadProxyInfo (In) - */ - public PacketDownloadProxyInfo() {} - - /** - * New PacketDownloadProxyInfo (Out) - * - * @param proxies Proxies name (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadProxyInfo(List proxies, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.proxies = proxies; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (proxies != null) json.set(0x0001, proxies); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) { - ObjectMap map = new ObjectMap((Map) data.getObject(0x0001)); - ObjectMap master = (data.contains(0x0002))?new ObjectMap((Map) data.getObject(0x0002)):null; - - if (master != null) map.set(master.getString("name"), master); - callback.run(map); - } - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadServerInfo.java deleted file mode 100644 index 6d94ca2b..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadServerInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Download Server Info Packet - */ -public class PacketDownloadServerInfo implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private List servers; - private UUID tracker; - - /** - * New PacketDownloadServerInfo (In) - */ - public PacketDownloadServerInfo() {} - - /** - * New PacketDownloadServerInfo (Out) - * - * @param servers Server names (or null for all) - * @param callback Callbacks - */ - @SafeVarargs - public PacketDownloadServerInfo(List servers, Callback>... callback) { - if (Util.isNull((Object) callback)) throw new NullPointerException(); - this.servers = servers; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap json = new ObjectMap(); - json.set(0x0000, tracker); - if (servers != null) json.set(0x0001, servers); - return json; - } - - @SuppressWarnings("unchecked") - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap((Map) data.getObject(0x0001))); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketEditServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketEditServer.java deleted file mode 100644 index 262596ce..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketEditServer.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Edit Server Packet - */ -public class PacketEditServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private ObjectMap edit; - private boolean perma; - private UUID tracker; - - /** - * New PacketEditServer (In) - */ - public PacketEditServer() {} - - /** - * New PacketEditServer (Out) - * - * @param player Player Editing - * @param server Server - * @param edit Edits - * @param perma Save Changes - * @param callback Callbacks - */ - @SafeVarargs - public PacketEditServer(UUID player, String server, ObjectMap edit, boolean perma, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.edit = edit; - this.perma = perma; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - data.set(0x0002, edit); - data.set(0x0003, perma); - if (player != null) data.set(0x0004, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketExSyncPlayer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketExSyncPlayer.java index 4fa33628..3ad8a6b1 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketExSyncPlayer.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketExSyncPlayer.java @@ -5,7 +5,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.Protocol.PacketObjectIn; import net.ME1312.SubData.Client.Protocol.PacketObjectOut; import net.ME1312.SubData.Client.SubDataSender; -import net.ME1312.SubServers.Sync.Network.API.RemotePlayer; +import net.ME1312.SubServers.Sync.Server.CachedPlayer; import net.ME1312.SubServers.Sync.Server.ServerImpl; import net.ME1312.SubServers.Sync.ExProxy; @@ -17,7 +17,7 @@ import java.util.*; public class PacketExSyncPlayer implements PacketObjectIn, PacketObjectOut { private ExProxy plugin; private Boolean mode; - private RemotePlayer[] values; + private CachedPlayer[] values; /** * New PacketExSyncPlayer (In) @@ -35,7 +35,7 @@ public class PacketExSyncPlayer implements PacketObjectIn, PacketObject * @param mode Update Mode (true for add, false for remove, null for reset) * @param values RemotePlayers */ - public PacketExSyncPlayer(Boolean mode, RemotePlayer... values) { + public PacketExSyncPlayer(Boolean mode, CachedPlayer... values) { this.mode = mode; this.values = values; } @@ -46,7 +46,7 @@ public class PacketExSyncPlayer implements PacketObjectIn, PacketObject data.set(0x0001, mode); if (values != null) { ArrayList> list = new ArrayList>(); - for (RemotePlayer value : values) list.add(value.getRaw()); + for (CachedPlayer value : values) list.add(value.getRaw()); data.set(0x0002, list); } return data; @@ -67,7 +67,7 @@ public class PacketExSyncPlayer implements PacketObjectIn, PacketObject if (data.getBoolean(0x0001) != Boolean.FALSE) { if (data.contains(0x0002)) for (Map object : (List>) data.getObjectList(0x0002)) { ServerImpl server = (object.getOrDefault("server", null) != null)?plugin.servers.getOrDefault(object.get("server").toString().toLowerCase(), null):null; - RemotePlayer player = new RemotePlayer(new ObjectMap<>(object)); + CachedPlayer player = new CachedPlayer(new ObjectMap<>(object)); plugin.rPlayerLinkP.put(player.getUniqueId(), proxy); plugin.rPlayers.put(player.getUniqueId(), player); diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRestartServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRestartServer.java deleted file mode 100644 index 0d66e37a..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketRestartServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Restart Server Packet - */ -public class PacketRestartServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private String server; - private UUID tracker; - - /** - * New PacketRestartServer (In) - */ - public PacketRestartServer() {} - - /** - * New PacketRestartServer (Out) - * - * @param player Player Starting - * @param server Server - * @param callback Callbacks - */ - @SafeVarargs - public PacketRestartServer(UUID player, String server, Callback>... callback) { - if (Util.isNull(server, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(tracker, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, tracker); - data.set(0x0001, server); - if (player != null) data.set(0x0002, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStopServer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStopServer.java deleted file mode 100644 index 904ed6b5..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketStopServer.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.ME1312.SubServers.Sync.Network.Packet; - -import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Map.ObjectMap; -import net.ME1312.Galaxi.Library.Util; -import net.ME1312.SubData.Client.Protocol.PacketObjectIn; -import net.ME1312.SubData.Client.Protocol.PacketObjectOut; -import net.ME1312.SubData.Client.SubDataSender; - -import java.util.HashMap; -import java.util.UUID; - -/** - * Stop Server Packet - */ -public class PacketStopServer implements PacketObjectIn, PacketObjectOut { - private static HashMap>[]> callbacks = new HashMap>[]>(); - private UUID player; - private boolean force; - private String server; - private UUID id; - - /** - * New PacketStopServer (In) - */ - public PacketStopServer() {} - - /** - * New PacketStopServer (Out) - * - * @param player Player Starting - * @param server Server - * @param force Force Stop - * @param callback Callbacks - */ - @SafeVarargs - public PacketStopServer(UUID player, String server, boolean force, Callback>... callback) { - if (Util.isNull(server, force, callback)) throw new NullPointerException(); - this.player = player; - this.server = server; - this.force = force; - this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID); - callbacks.put(id, callback); - } - - @Override - public ObjectMap send(SubDataSender client) { - ObjectMap data = new ObjectMap(); - data.set(0x0000, id); - data.set(0x0001, server); - data.set(0x0002, force); - if (player != null) data.set(0x0003, player.toString()); - return data; - } - - @Override - public void receive(SubDataSender client, ObjectMap data) { - for (Callback> callback : callbacks.get(data.getUUID(0x0000))) callback.run(data); - callbacks.remove(data.getUUID(0x0000)); - } - - @Override - public int version() { - return 0x0001; - } -} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java index 21712bb8..90db3174 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java @@ -7,12 +7,14 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataProtocol; +import net.ME1312.SubServers.Client.Common.Network.API.RemotePlayer; +import net.ME1312.SubServers.Client.Common.Network.API.Server; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Sync.Event.SubNetworkConnectEvent; import net.ME1312.SubServers.Sync.Event.SubNetworkDisconnectEvent; import net.ME1312.SubServers.Sync.ExProxy; -import net.ME1312.SubServers.Sync.Network.API.RemotePlayer; -import net.ME1312.SubServers.Sync.Network.API.Server; import net.ME1312.SubServers.Sync.Network.Packet.*; +import net.ME1312.SubServers.Sync.Server.CachedPlayer; import net.ME1312.SubServers.Sync.Server.ServerImpl; import net.ME1312.SubServers.Sync.SubAPI; import net.md_5.bungee.api.config.ListenerInfo; @@ -163,7 +165,7 @@ public class SubProtocol extends SubDataProtocol { e.printStackTrace(); } - ArrayList localPlayers = new ArrayList(); + ArrayList localPlayers = new ArrayList(); for (UUID id : new ArrayList(plugin.rPlayers.keySet())) { if (plugin.getPlayer(id) != null) { localPlayers.add(plugin.rPlayers.get(id)); @@ -173,7 +175,7 @@ public class SubProtocol extends SubDataProtocol { plugin.rPlayers.remove(id); } } - subdata.sendPacket(new PacketExSyncPlayer(null, localPlayers.toArray(new RemotePlayer[0]))); + subdata.sendPacket(new PacketExSyncPlayer(null, localPlayers.toArray(new CachedPlayer[0]))); plugin.api.getServers(servers -> { for (Server server : servers.values()) { @@ -183,7 +185,7 @@ public class SubProtocol extends SubDataProtocol { plugin.api.getGlobalPlayers(players -> { for (RemotePlayer player : players.values()) { plugin.rPlayerLinkP.put(player.getUniqueId(), player.getProxy().toLowerCase()); - plugin.rPlayers.put(player.getUniqueId(), player); + plugin.rPlayers.put(player.getUniqueId(), new CachedPlayer(player)); ServerInfo server = plugin.getServerInfo(player.getServer()); if (server instanceof ServerImpl) diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/CachedPlayer.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/CachedPlayer.java new file mode 100644 index 00000000..ac96afd1 --- /dev/null +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/CachedPlayer.java @@ -0,0 +1,67 @@ +package net.ME1312.SubServers.Sync.Server; + +import net.ME1312.Galaxi.Library.Map.ObjectMap; +import net.ME1312.SubServers.Client.Common.Network.API.RemotePlayer; +import net.ME1312.SubServers.Sync.SubAPI; +import net.md_5.bungee.api.connection.ProxiedPlayer; + +/** + * Cached RemotePlayer Data Class + */ +public class CachedPlayer extends RemotePlayer implements net.ME1312.SubServers.Bungee.Library.Compatibility.RemotePlayer { + + /** + * Convert a Local Player to a Cached Remote Player + * + * @param player Local Player + * @return Raw representation of the Remote Player + */ + public static ObjectMap translate(ProxiedPlayer player) { + ObjectMap raw = new ObjectMap(); + raw = new ObjectMap(); + raw.set("name", player.getName()); + raw.set("id", player.getUniqueId()); + raw.set("address", player.getAddress().getAddress().getHostAddress() + ':' + player.getAddress().getPort()); + if (player.getServer() != null) raw.set("server", player.getServer().getInfo().getName()); + if (SubAPI.getInstance().getName() != null) raw.set("proxy", SubAPI.getInstance().getName()); + return raw; + } + + /** + * Convert a Local Player to a Cached Remote Player + * + * @param player Local Player + */ + public CachedPlayer(ProxiedPlayer player) { + this(translate(player)); + } + + /** + * Cache a Remote Player + * + * @param player Remote Player + */ + public CachedPlayer(RemotePlayer player) { + this(raw(player)); + } + + /** + * Create a Cached Remote Player + * + * @param raw Raw representation of the Remote Player + */ + public CachedPlayer(ObjectMap raw) { + super(raw); + } + + + @Override + public String getProxyName() { + return getProxy(); + } + + @Override + public String getServerName() { + return getServer(); + } +} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/ServerImpl.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/ServerImpl.java index 87a45484..294b5486 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/ServerImpl.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Server/ServerImpl.java @@ -6,13 +6,11 @@ import net.ME1312.SubData.Client.Library.ForwardedDataSender; import net.ME1312.SubData.Client.SubDataClient; import net.ME1312.SubData.Client.SubDataSender; import net.ME1312.SubServers.Sync.ExProxy; -import net.ME1312.SubServers.Sync.Network.API.RemotePlayer; import net.ME1312.SubServers.Sync.SubAPI; import net.md_5.bungee.BungeeServerInfo; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -import java.lang.reflect.Field; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.*; @@ -121,9 +119,9 @@ public class ServerImpl extends BungeeServerInfo { * @return Remote Player Collection */ @SuppressWarnings("deprecation") - public Collection getGlobalPlayers() { + public Collection getGlobalPlayers() { ExProxy plugin = SubAPI.getInstance().getInternals(); - ArrayList players = new ArrayList(); + ArrayList players = new ArrayList(); for (UUID id : Util.getBackwards(plugin.rPlayerLinkS, this)) { players.add(plugin.rPlayers.get(id)); } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java index 2f715a1a..bcd9fcf7 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java @@ -1,28 +1,25 @@ package net.ME1312.SubServers.Sync; import net.ME1312.Galaxi.Library.Callback.Callback; -import net.ME1312.Galaxi.Library.Container.NamedContainer; import net.ME1312.Galaxi.Library.UniversalFile; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.DataClient; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Client.DataProtocol; import net.ME1312.SubServers.Bungee.BungeeAPI; -import net.ME1312.SubServers.Sync.Network.API.*; -import net.ME1312.SubServers.Sync.Network.Packet.*; +import net.ME1312.SubServers.Client.Common.ClientAPI; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Sync.Server.CachedPlayer; import net.md_5.bungee.protocol.ProtocolConstants; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; import java.util.*; -import static net.ME1312.SubServers.Sync.Network.API.SimplifiedData.*; - /** * SubAPI Class */ -public final class SubAPI implements BungeeAPI { +public final class SubAPI extends ClientAPI implements BungeeAPI { LinkedList enableListeners = new LinkedList(); LinkedList disableListeners = new LinkedList(); private final ExProxy plugin; @@ -75,323 +72,13 @@ public final class SubAPI implements BungeeAPI { return name; } - /** - * Gets the Hosts - * - * @param callback Host Map - */ - public void getHosts(Callback> callback) { - requestHosts(null, callback); - } - - /** - * Gets a Host - * - * @param name Host name - * @param callback a Host - */ - public void getHost(String name, Callback callback) { - requestHost(null, name, callback); - } - - /** - * Gets the Server Groups (Group names are case sensitive here) - * - * @param callback Group Map - */ - public void getGroups(Callback>> callback) { - requestGroups(null, callback); - } - - /** - * Gets the Server Groups (Group names are all lowercase here) - * - * @param callback Group Map - */ - public void getLowercaseGroups(Callback>> callback) { - requestLowercaseGroups(null, callback); - } - - /** - * Gets a Server Group (Group names are case insensitive here) - * - * @param name Group name - * @param callback a Server Group - */ - public void getGroup(String name, Callback>> callback) { - requestGroup(null, name, callback); - } - - /** - * Gets the Servers (including SubServers) - * - * @param callback Server Map - */ - public void getServers(Callback> callback) { - requestServers(null, callback); - } - - /** - * Gets a Server - * - * @param name Server name - * @param callback a Server - */ - public void getServer(String name, Callback callback) { - requestServer(null, name, callback); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - addServer(null, name, ip, port, motd, hidden, restricted, response); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - * @param response Response Code - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketAddServer(player, name, ip, port, motd, hidden, restricted, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Adds a Server to the Network - * - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden if the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(null, name, ip, port, motd, hidden, restricted); - } - - /** - * Adds a Server to the Network - * - * @param player Player who added - * @param name Name of the Server - * @param ip IP of the Server - * @param port Port of the Server - * @param motd MOTD of the Server - * @param hidden If the server should be hidden from players - * @param restricted Players will need a permission to join if true - */ - public void addServer(UUID player, String name, InetAddress ip, int port, String motd, boolean hidden, boolean restricted) { - addServer(player, name, ip, port, motd, hidden, restricted, i -> {}); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(String name, Callback response) { - removeServer(null, name, response); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void removeServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, false, response); - } - - /** - * Remove a Server from the Network - * - * @param name Name of the Server - */ - public void removeServer(String name) { - removeServer(null, name); - } - - /** - * Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void removeServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, i -> {}); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(String name, Callback response) { - forceRemoveServer(null, name, response); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - * @param response Response Code - */ - public void forceRemoveServer(UUID player, String name, Callback response) { - if (Util.isNull(name)) throw new NullPointerException(); - removeServer(player, name, true, response); - } - - /** - * Force Remove a Server from the Network - * - * @param name Name of the Server - */ - public void forceRemoveServer(String name) { - forceRemoveServer(null, name); - } - - /** - * Force Remove a Server from the Network - * - * @param player Player Removing - * @param name Name of the Server - */ - public void forceRemoveServer(UUID player, String name) { - if (Util.isNull(name)) throw new NullPointerException(); - forceRemoveServer(player, name, i -> {}); - } - - private void removeServer(UUID player, String name, boolean force, Callback response) { - if (Util.isNull(response)) throw new NullPointerException(); - StackTraceElement[] origin = new Exception().getStackTrace(); - ((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketRemoveServer(player, name, force, data -> { - try { - response.run(data.getInt(0x0001)); - } catch (Throwable e) { - Throwable ew = new InvocationTargetException(e); - ew.setStackTrace(origin); - ew.printStackTrace(); - } - })); - } - - /** - * Gets the SubServers - * - * @param callback SubServer Map - */ - public void getSubServers(Callback> callback) { - requestSubServers(null, callback); - } - - /** - * Gets a SubServer - * - * @param name SubServer name - * @param callback a SubServer - */ - public void getSubServer(String name, Callback callback) { - requestSubServer(null, name, callback); - } - - /** - * Gets the known Proxies - * - * @param callback Proxy Map - */ - public void getProxies(Callback> callback) { - requestProxies(null, callback); - } - - /** - * Gets a Proxy - * - * @param name Proxy name - * @param callback a Proxy - */ - public void getProxy(String name, Callback callback) { - requestProxy(null, name, callback); - } - - /** - * Get the Master Proxy Container - * - * @param callback Master Proxy - */ - public void getMasterProxy(Callback callback) { - requestMasterProxy(null, callback); - } - - /** - * Gets players on this network across all known proxies - * - * @param callback Remote Player Collection - */ - public void getGlobalPlayers(Callback> callback) { - requestGlobalPlayers(null, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param name Player name - * @param callback Remote Player - */ - public void getGlobalPlayer(String name, Callback callback) { - requestGlobalPlayer(null, name, callback); - } - - /** - * Gets a player on this network by searching across all known proxies - * - * @param id Player UUID - * @param callback Remote Player - */ - public void getGlobalPlayer(UUID id, Callback callback) { - requestGlobalPlayer(null, id, callback); - } - /** * Gets players on this network across all known proxies (Cached) * * @return Remote Player Collection */ - public Map getGlobalPlayers() { - return new HashMap(plugin.rPlayers); + public Map getGlobalPlayers() { + return new HashMap(plugin.rPlayers); } /** @@ -400,9 +87,9 @@ public final class SubAPI implements BungeeAPI { * @param name Player name * @return Remote Player */ - public RemotePlayer getGlobalPlayer(String name) { + public CachedPlayer getGlobalPlayer(String name) { if (Util.isNull(name)) throw new NullPointerException(); - for (RemotePlayer player : getGlobalPlayers().values()) { + for (CachedPlayer player : getGlobalPlayers().values()) { if (player.getName().equalsIgnoreCase(name)) return player; } return null; @@ -414,7 +101,7 @@ public final class SubAPI implements BungeeAPI { * @param id Player UUID * @return Remote Player */ - public RemotePlayer getGlobalPlayer(UUID id) { + public CachedPlayer getGlobalPlayer(UUID id) { if (Util.isNull(id)) throw new NullPointerException(); return getGlobalPlayers().getOrDefault(id, null); } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java index d294f54a..caa459b7 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java @@ -15,8 +15,10 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX; import net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiInfo; -import net.ME1312.SubServers.Sync.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.API.*; +import net.ME1312.SubServers.Client.Common.Network.Packet.*; import net.ME1312.SubServers.Sync.Network.Packet.*; +import net.ME1312.SubServers.Sync.Server.CachedPlayer; import net.ME1312.SubServers.Sync.Server.ServerImpl; import net.ME1312.SubServers.Sync.Server.SubServerImpl; import net.md_5.bungee.BungeeCord; @@ -1004,7 +1006,7 @@ public final class SubCommand extends CommandX { ReturnRunnable> getPlayers = () -> { LinkedList names = new LinkedList(); for (ProxiedPlayer player : plugin.getPlayers()) names.add(player.getName()); - for (RemotePlayer player : plugin.api.getGlobalPlayers().values()) if (!names.contains(player.getName())) names.add(player.getName()); + for (CachedPlayer player : plugin.api.getGlobalPlayers().values()) if (!names.contains(player.getName())) names.add(player.getName()); Collections.sort(names); return names; }; @@ -1212,7 +1214,7 @@ public final class SubCommand extends CommandX { } if (((ProxiedPlayer) sender).getServer().getInfo() instanceof ServerImpl) { - for (RemotePlayer player : ((ServerImpl) ((ProxiedPlayer) sender).getServer().getInfo()).getGlobalPlayers()) { + for (CachedPlayer player : ((ServerImpl) ((ProxiedPlayer) sender).getServer().getInfo()).getGlobalPlayers()) { if (!used.contains(player.getUniqueId())) { if (player.getName().toLowerCase().startsWith(last)) list.add(Last + player.getName().substring(last.length())); used.add(player.getUniqueId()); @@ -1552,7 +1554,7 @@ public final class SubCommand extends CommandX { int players = 0; for (ServerImpl server : plugin.servers.values()) { List playerlist = new ArrayList(); - for (RemotePlayer player : server.getGlobalPlayers()) playerlist.add(player.getName()); + for (CachedPlayer player : server.getGlobalPlayers()) playerlist.add(player.getName()); Collections.sort(playerlist); players += playerlist.size();