diff --git a/README.md b/README.md
index 38b664ac..abb27edf 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# ![https://s3.postimg.cc/dikyxlz5v/Sub_Banner.png](https://s3.postimg.cc/dikyxlz5v/Sub_Banner.png)
[![Build Status](https://src.me1312.net/jenkins/job/SubServers%20Platform/badge/icon)](https://src.me1312.net/jenkins/job/SubServers%20Platform/)
-[![Release Verison](https://img.shields.io/github/release/ME1312/SubServers-2/all.svg)](https://github.com/ME1312/SubServers-2/releases) [![Snapshot Verison](https://img.shields.io/badge/dynamic/xml.svg?label=snapshot&url=https%3A%2F%2Fsrc.me1312.net%2Fmaven%2Fnet%2FME1312%2FSubServers%2FSubServers.Bungee%2Fmaven-metadata.xml&query=%2F%2Fversioning%2Frelease&colorB=blue)](https://src.me1312.net/jenkins/job/SubServers%20Platform/)
+[![Release Verison](https://img.shields.io/github/release/ME1312/SubServers-2/all.svg)](https://github.com/ME1312/SubServers-2/releases) [![Snapshot Verison](https://img.shields.io/badge/dynamic/xml.svg?label=snapshot&url=https%3A%2F%2Fsrc.me1312.net%2Fmaven%2Fnet%2FME1312%2FSubServers%2FSubServers.Bungee%2Fmaven-metadata.xml&query=%2F%2Fversioning%2Frelease&colorB=blue)](https://src.me1312.net/jenkins/job/SubServers%20Platform/) [![Discord](https://img.shields.io/discord/307936188134850560.svg)](https://discord.gg/gKWpT2K)
SubServers 2 is a rewrite of SubServers, the Server Management Platform.
> [https://www.spigotmc.org/resources/subservers-bungee.11264/](https://www.spigotmc.org/resources/subservers-bungee.11264/)
> [https://www.spigotmc.org/resources/subservers-host.38833/](https://www.spigotmc.org/resources/subservers-host.38833/)
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
index 0377b3c8..632cdcf7 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Proxy.java
@@ -91,7 +91,7 @@ public class Proxy implements ClientHandler, ExtraDataHandler {
@SuppressWarnings({"deprecation", "unchecked"})
public boolean isRedis() {
SubPlugin plugin = SubAPI.getInstance().getInternals();
- return plugin.redis && Util.getDespiteException(() -> plugin.redis("getPlayersOnProxy", new NamedContainer<>(String.class, getName())) != null, false);
+ return plugin.redis != null && Util.getDespiteException(() -> plugin.redis("getPlayersOnProxy", new NamedContainer<>(String.class, getName())) != null, false);
}
/**
@@ -103,7 +103,7 @@ public class Proxy implements ClientHandler, ExtraDataHandler {
public Collection> getPlayers() {
List> players = new ArrayList>();
SubPlugin plugin = SubAPI.getInstance().getInternals();
- if (plugin.redis) {
+ if (plugin.redis != null) {
try {
for (UUID player : (Set) plugin.redis("getPlayersOnProxy", new NamedContainer<>(String.class, getName())))
players.add(new NamedContainer<>((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)), player));
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
index de3e9f42..35ece44c 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
@@ -92,7 +92,7 @@ public class ServerContainer extends BungeeServerInfo implements Server {
public Collection> getGlobalPlayers() {
List> players = new ArrayList>();
SubPlugin plugin = SubAPI.getInstance().getInternals();
- if (plugin.redis) {
+ if (plugin.redis != null) {
try {
for (UUID player : (Set) plugin.redis("getPlayersOnServer", new NamedContainer<>(String.class, getName()))) players.add(new NamedContainer<>((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)), player));
} catch (Exception e) {}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
index be330b14..adc34ae3 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
@@ -80,6 +80,7 @@ Lang:
'Interface.Generic.Downloading.Title-Color-Alt': '&3'
'Interface.Generic.Downloading.Response': '&eWaiting for response'
'Interface.Generic.Invalid-Permission': '&4You need &n$str$'
+ 'Interface.Proxy-Menu.Proxy-Player-Count': '&2$int$ Player(s) Online'
'Interface.Proxy-Menu.Proxy-Master': '&8Master Proxy'
'Interface.Proxy-Menu.Proxy-SubData': '&9SubData Only'
'Interface.Proxy-Menu.Proxy-Redis': '&7Redis Only'
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketCreateServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketCreateServer.java
index 0132237e..7fec5741 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketCreateServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketCreateServer.java
@@ -54,11 +54,11 @@ public class PacketCreateServer implements PacketIn, PacketOut {
public void execute(Client client, YAMLSection data) {
try {
if (data.getSection("creator").getString("name").contains(" ")) {
- client.sendPacket(new PacketCreateServer(3, "server names cannot have spaces", (data.contains("id")) ? data.getRawString("id") : null));
+ client.sendPacket(new PacketCreateServer(3, "Server names cannot have spaces", (data.contains("id")) ? data.getRawString("id") : null));
} else if (plugin.api.getSubServers().keySet().contains(data.getSection("creator").getString("name").toLowerCase()) || SubCreator.isReserved(data.getSection("creator").getString("name"))) {
- client.sendPacket(new PacketCreateServer(3, "There is already a subserver with that name", (data.contains("id")) ? data.getRawString("id") : null));
+ client.sendPacket(new PacketCreateServer(4, "There is already a subserver with that name", (data.contains("id")) ? data.getRawString("id") : null));
} else if (!plugin.hosts.keySet().contains(data.getSection("creator").getString("host").toLowerCase())) {
- client.sendPacket(new PacketCreateServer(4, "There is no Host with that name", (data.contains("id")) ? data.getRawString("id") : null));
+ client.sendPacket(new PacketCreateServer(5, "There is no Host with that name", (data.contains("id")) ? data.getRawString("id") : null));
} else if (!plugin.hosts.get(data.getSection("creator").getString("host").toLowerCase()).getCreator().getTemplates().keySet().contains(data.getSection("creator").getString("template").toLowerCase()) ||
!plugin.hosts.get(data.getSection("creator").getString("host").toLowerCase()).getCreator().getTemplate(data.getSection("creator").getString("template")).isEnabled()) {
client.sendPacket(new PacketCreateServer(6, "There is no template with that name", (data.contains("id")) ? data.getRawString("id") : null));
@@ -93,6 +93,6 @@ public class PacketCreateServer implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadGroupInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadGroupInfo.java
new file mode 100644
index 00000000..e25e95fd
--- /dev/null
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadGroupInfo.java
@@ -0,0 +1,80 @@
+package net.ME1312.SubServers.Bungee.Network.Packet;
+
+import com.google.gson.Gson;
+import net.ME1312.SubServers.Bungee.Host.Host;
+import net.ME1312.SubServers.Bungee.Host.Proxy;
+import net.ME1312.SubServers.Bungee.Host.Server;
+import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.SubServers.Bungee.Network.Client;
+import net.ME1312.SubServers.Bungee.Network.PacketIn;
+import net.ME1312.SubServers.Bungee.Network.PacketOut;
+import net.ME1312.SubServers.Bungee.SubPlugin;
+
+import java.util.Map;
+
+/**
+ * Download Group Info Packet
+ */
+public class PacketDownloadGroupInfo implements PacketIn, PacketOut {
+ private SubPlugin plugin;
+ private String host;
+ private String group;
+ private String id;
+
+ /**
+ * New PacketDownloadGroupInfo (In)
+ *
+ * @param plugin SubPlugin
+ */
+ public PacketDownloadGroupInfo(SubPlugin plugin) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
+ this.plugin = plugin;
+ }
+
+ /**
+ * New PacketDownloadGroupInfo (Out)
+ *
+ * @param plugin SubPlugin
+ * @param group Group (or null for all)
+ * @param id Receiver ID
+ */
+ public PacketDownloadGroupInfo(SubPlugin plugin, String group, String id) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
+ this.plugin = plugin;
+ this.host = host;
+ this.group = group;
+ this.id = id;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public YAMLSection generate() {
+ YAMLSection data = new YAMLSection();
+ data.set("id", id);
+
+ YAMLSection groups = new YAMLSection();
+ for (String group : plugin.api.getGroups().keySet()) {
+ if (this.group == null || this.group.length() <= 0 || this.group.equalsIgnoreCase(group)) {
+ YAMLSection servers = new YAMLSection();
+ for (Server server : plugin.api.getGroup(group)) {
+ servers.set(server.getName(), new YAMLSection(new Gson().fromJson(server.toString(), Map.class)));
+ }
+ groups.set(group, servers);
+ }
+ }
+ data.set("groups", groups);
+ return data;
+ }
+
+ @Override
+ public void execute(Client client, YAMLSection data) {
+ client.sendPacket(new PacketDownloadGroupInfo(plugin, (data.contains("group"))?data.getRawString("group"):null, (data.contains("id"))?data.getRawString("id"):null));
+ }
+
+ @Override
+ public Version getVersion() {
+ return new Version("2.13b");
+ }
+}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
index a6a66a16..968f458a 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
@@ -1,20 +1,23 @@
package net.ME1312.SubServers.Bungee.Network.Packet;
+import com.google.gson.Gson;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.PacketIn;
import net.ME1312.SubServers.Bungee.Network.PacketOut;
-
import net.ME1312.SubServers.Bungee.SubPlugin;
+import java.util.Map;
+
/**
* Download Host Info Packet
*/
public class PacketDownloadHostInfo implements PacketIn, PacketOut {
private SubPlugin plugin;
- private Host host;
+ private String host;
private String id;
/**
@@ -23,6 +26,7 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
* @param plugin SubPlugin
*/
public PacketDownloadHostInfo(SubPlugin plugin) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
this.plugin = plugin;
}
@@ -30,38 +34,39 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
* New PacketDownloadHostInfo (Out)
*
* @param plugin SubPlugin
- * @param host Host
+ * @param host Host (or null for all)
* @param id Receiver ID
*/
- public PacketDownloadHostInfo(SubPlugin plugin, Host host, String id) {
+ public PacketDownloadHostInfo(SubPlugin plugin, String host, String id) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
this.plugin = plugin;
this.host = host;
this.id = id;
}
+ @SuppressWarnings("unchecked")
@Override
public YAMLSection generate() {
YAMLSection data = new YAMLSection();
data.set("id", id);
- YAMLSection info = new YAMLSection();
- if (host != null) {
- data.set("valid", true);
- info = new YAMLSection(host.toString());
- info.remove("type");
- } else data.set("valid", false);
-
- data.set("host", info);
+ YAMLSection hosts = new YAMLSection();
+ for (Host host : plugin.api.getHosts().values()) {
+ if (this.host == null || this.host.length() <= 0 || this.host.equalsIgnoreCase(host.getName())) {
+ hosts.set(host.getName(), new YAMLSection(new Gson().fromJson(host.toString(), Map.class)));
+ }
+ }
+ data.set("hosts", hosts);
return data;
}
@Override
public void execute(Client client, YAMLSection data) {
- client.sendPacket(new PacketDownloadHostInfo(plugin, plugin.api.getHost(data.getRawString("host")), (data.contains("id"))?data.getRawString("id"):null));
+ client.sendPacket(new PacketDownloadHostInfo(plugin, (data.contains("host"))?data.getRawString("host"):null, (data.contains("id"))?data.getRawString("id"):null));
}
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlatformInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlatformInfo.java
new file mode 100644
index 00000000..539c72be
--- /dev/null
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlatformInfo.java
@@ -0,0 +1,94 @@
+package net.ME1312.SubServers.Bungee.Network.Packet;
+
+import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.SubServers.Bungee.Library.Version.Version;
+import net.ME1312.SubServers.Bungee.Network.Client;
+import net.ME1312.SubServers.Bungee.Network.PacketIn;
+import net.ME1312.SubServers.Bungee.Network.PacketOut;
+import net.ME1312.SubServers.Bungee.SubPlugin;
+import net.md_5.bungee.api.config.ListenerInfo;
+
+import java.util.LinkedList;
+
+/**
+ * Download Proxy Info Packet
+ */
+public class PacketDownloadPlatformInfo implements PacketIn, PacketOut {
+ private SubPlugin plugin;
+ private String id;
+
+ /**
+ * New PacketDownloadPlatformInfo (In)
+ *
+ * @param plugin SubPlugin
+ */
+ public PacketDownloadPlatformInfo(SubPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ /**
+ * New PacketDownloadPlatformInfo (Out)
+ *
+ * @param plugin SubPlugin
+ * @param id Receiver ID
+ */
+ public PacketDownloadPlatformInfo(SubPlugin plugin, String id) {
+ this.plugin = plugin;
+ this.id = id;
+ }
+
+ @Override
+ public YAMLSection generate() {
+ YAMLSection data = new YAMLSection();
+ if (id != null) data.set("id", id);
+ YAMLSection subservers = new YAMLSection();
+ subservers.set("version", plugin.api.getWrapperVersion().toString());
+ if (plugin.api.getWrapperBuild() != null) subservers.set("build", plugin.api.getWrapperBuild().toString());
+ subservers.set("last-reload", plugin.resetDate);
+ subservers.set("hosts", plugin.api.getHosts().size());
+ subservers.set("subservers", plugin.api.getSubServers().size());
+ data.set("subservers", subservers);
+ YAMLSection bungee = new YAMLSection();
+ bungee.set("version", plugin.api.getProxyVersion().toString());
+ bungee.set("disabled-cmds", plugin.getConfig().getDisabledCommands());
+ bungee.set("player-limit", plugin.getConfig().getPlayerLimit());
+ bungee.set("servers", plugin.api.getServers().size());
+ LinkedList listeners = new LinkedList();
+ for (ListenerInfo info : plugin.getConfig().getListeners()) {
+ YAMLSection listener = new YAMLSection();
+ listener.set("forced-hosts", info.getForcedHosts());
+ listener.set("motd", info.getMotd());
+ listener.set("priorities", info.getServerPriority());
+ listener.set("player-limit", info.getMaxPlayers());
+ listeners.add(listener);
+ }
+ bungee.set("listeners", listeners);
+ data.set("bungee", bungee);
+ YAMLSection minecraft = new YAMLSection();
+ LinkedList mcversions = new LinkedList();
+ for (Version version : plugin.api.getGameVersion()) mcversions.add(version.toString());
+ minecraft.set("version", mcversions);
+ minecraft.set("players", plugin.api.getGlobalPlayers().size());
+ data.set("minecraft", minecraft);
+ YAMLSection system = new YAMLSection();
+ YAMLSection os = new YAMLSection();
+ os.set("name", System.getProperty("os.name"));
+ os.set("version", System.getProperty("os.version"));
+ system.set("os", os);
+ YAMLSection java = new YAMLSection();
+ java.set("version", System.getProperty("java.version"));
+ system.set("java", java);
+ data.set("system", system);
+ return data;
+ }
+
+ @Override
+ public void execute(Client client, YAMLSection data) {
+ client.sendPacket(new PacketDownloadPlatformInfo(plugin, (data != null && data.contains("id"))?data.getRawString("id"):null));
+ }
+
+ @Override
+ public Version getVersion() {
+ return new Version("2.11.0a");
+ }
+}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
index 7baf7729..8d0310b2 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
@@ -50,7 +50,7 @@ public class PacketDownloadPlayerList implements PacketIn, PacketOut {
for (NamedContainer player : plugin.api.getGlobalPlayers()) {
YAMLSection pinfo = new YAMLSection();
pinfo.set("name", player.get());
- if (plugin.redis) {
+ if (plugin.redis != null) {
try {
pinfo.set("server", ((ServerInfo) plugin.redis("getServerFor", new NamedContainer<>(UUID.class, player.get()))).getName());
} catch (Exception e) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
index 41da39c0..f7e72351 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
@@ -1,21 +1,25 @@
package net.ME1312.SubServers.Bungee.Network.Packet;
+import com.google.gson.Gson;
+import net.ME1312.SubServers.Bungee.Host.Host;
+import net.ME1312.SubServers.Bungee.Host.Proxy;
+import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
+import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.PacketIn;
import net.ME1312.SubServers.Bungee.Network.PacketOut;
import net.ME1312.SubServers.Bungee.SubPlugin;
-import net.md_5.bungee.api.config.ListenerInfo;
-import java.util.Arrays;
-import java.util.LinkedList;
+import java.util.Map;
/**
* Download Proxy Info Packet
*/
public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
private SubPlugin plugin;
+ private String proxy;
private String id;
/**
@@ -24,6 +28,7 @@ public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
* @param plugin SubPlugin
*/
public PacketDownloadProxyInfo(SubPlugin plugin) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
this.plugin = plugin;
}
@@ -31,65 +36,40 @@ public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
* New PacketDownloadProxyInfo (Out)
*
* @param plugin SubPlugin
+ * @param proxy Proxy (or null for all)
* @param id Receiver ID
*/
- public PacketDownloadProxyInfo(SubPlugin plugin, String id) {
+ public PacketDownloadProxyInfo(SubPlugin plugin, String proxy, String id) {
+ if (Util.isNull(plugin)) throw new NullPointerException();
this.plugin = plugin;
+ this.proxy = proxy;
this.id = id;
}
+ @SuppressWarnings("unchecked")
@Override
public YAMLSection generate() {
YAMLSection data = new YAMLSection();
- if (id != null) data.set("id", id);
- YAMLSection subservers = new YAMLSection();
- subservers.set("version", plugin.api.getWrapperVersion().toString());
- if (plugin.api.getWrapperBuild() != null) subservers.set("build", plugin.api.getWrapperBuild().toString());
- subservers.set("last-reload", plugin.resetDate);
- subservers.set("hosts", plugin.api.getHosts().size());
- subservers.set("subservers", plugin.api.getSubServers().size());
- data.set("subservers", subservers);
- YAMLSection bungee = new YAMLSection();
- bungee.set("version", plugin.api.getProxyVersion().toString());
- bungee.set("disabled-cmds", plugin.getConfig().getDisabledCommands());
- bungee.set("player-limit", plugin.getConfig().getPlayerLimit());
- bungee.set("servers", plugin.api.getServers().size());
- LinkedList listeners = new LinkedList();
- for (ListenerInfo info : plugin.getConfig().getListeners()) {
- YAMLSection listener = new YAMLSection();
- listener.set("forced-hosts", info.getForcedHosts());
- listener.set("motd", info.getMotd());
- listener.set("priorities", info.getServerPriority());
- listener.set("player-limit", info.getMaxPlayers());
- listeners.add(listener);
+ data.set("id", id);
+
+ YAMLSection proxies = new YAMLSection();
+ for (Proxy proxy : plugin.api.getProxies().values()) {
+ if (this.proxy == null || this.proxy.equalsIgnoreCase(proxy.getName())) {
+ proxies.set(proxy.getName(), new YAMLSection(new Gson().fromJson(proxy.toString(), Map.class)));
+ }
}
- bungee.set("listeners", listeners);
- data.set("bungee", bungee);
- YAMLSection minecraft = new YAMLSection();
- LinkedList mcversions = new LinkedList();
- for (Version version : plugin.api.getGameVersion()) mcversions.add(version.toString());
- minecraft.set("version", mcversions);
- minecraft.set("players", plugin.api.getGlobalPlayers().size());
- data.set("minecraft", minecraft);
- YAMLSection system = new YAMLSection();
- YAMLSection os = new YAMLSection();
- os.set("name", System.getProperty("os.name"));
- os.set("version", System.getProperty("os.version"));
- system.set("os", os);
- YAMLSection java = new YAMLSection();
- java.set("version", System.getProperty("java.version"));
- system.set("java", java);
- data.set("system", system);
+ data.set("proxies", proxies);
+ if ((this.proxy == null || this.proxy.length() <= 0) && plugin.api.getMasterProxy() != null) data.set("master", new YAMLSection(new Gson().fromJson(plugin.api.getMasterProxy().toString(), Map.class)));
return data;
}
@Override
public void execute(Client client, YAMLSection data) {
- client.sendPacket(new PacketDownloadProxyInfo(plugin, (data != null && data.contains("id"))?data.getRawString("id"):null));
+ client.sendPacket(new PacketDownloadProxyInfo(plugin, (data.contains("proxy"))?data.getRawString("proxy"):null, (data.contains("id"))?data.getRawString("id"):null));
}
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
index f46bbd09..14c68da7 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
@@ -1,8 +1,9 @@
package net.ME1312.SubServers.Bungee.Network.Packet;
import com.google.gson.Gson;
+import net.ME1312.SubServers.Bungee.Host.Host;
+import net.ME1312.SubServers.Bungee.Host.Proxy;
import net.ME1312.SubServers.Bungee.Host.Server;
-import net.ME1312.SubServers.Bungee.Host.SubServer;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
@@ -18,7 +19,7 @@ import java.util.Map;
*/
public class PacketDownloadServerInfo implements PacketIn, PacketOut {
private SubPlugin plugin;
- private Server server;
+ private String server;
private String id;
/**
@@ -35,40 +36,39 @@ public class PacketDownloadServerInfo implements PacketIn, PacketOut {
* New PacketDownloadServerInfo (Out)
*
* @param plugin SubPlugin
- * @param server Server
+ * @param server Server (or null for all)
* @param id Receiver ID
*/
- public PacketDownloadServerInfo(SubPlugin plugin, Server server, String id) {
+ public PacketDownloadServerInfo(SubPlugin plugin, String server, String id) {
if (Util.isNull(plugin)) throw new NullPointerException();
this.plugin = plugin;
this.server = server;
this.id = id;
}
- @Override
@SuppressWarnings("unchecked")
+ @Override
public YAMLSection generate() {
- YAMLSection json = new YAMLSection();
- json.set("id", id);
- json.set("type", (server == null)?"invalid":((server instanceof SubServer)?"subserver":"server"));
- YAMLSection info = new YAMLSection();
+ YAMLSection data = new YAMLSection();
+ data.set("id", id);
- if (server != null) {
- info = new YAMLSection(new Gson().fromJson(server.toString(), Map.class));
- info.remove("type");
+ YAMLSection exServers = new YAMLSection();
+ for (Server server : plugin.api.getServers().values()) {
+ if (this.server == null || this.server.length() <= 0 || this.server.equalsIgnoreCase(server.getName())) {
+ exServers.set(server.getName(), new YAMLSection(new Gson().fromJson(server.toString(), Map.class)));
+ }
}
-
- json.set("server", info);
- return json;
+ data.set("servers", exServers);
+ return data;
}
@Override
public void execute(Client client, YAMLSection data) {
- client.sendPacket(new PacketDownloadServerInfo(plugin, plugin.api.getServer(data.getRawString("server")), (data.contains("id"))?data.getRawString("id"):null));
+ client.sendPacket(new PacketDownloadServerInfo(plugin, (data.contains("server"))?data.getRawString("server"):null, (data.contains("id"))?data.getRawString("id"):null));
}
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerList.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerList.java
deleted file mode 100644
index 29234898..00000000
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerList.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package net.ME1312.SubServers.Bungee.Network.Packet;
-
-import com.google.gson.Gson;
-import net.ME1312.SubServers.Bungee.Host.Host;
-import net.ME1312.SubServers.Bungee.Host.Proxy;
-import net.ME1312.SubServers.Bungee.Host.Server;
-import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
-import net.ME1312.SubServers.Bungee.Library.Util;
-import net.ME1312.SubServers.Bungee.Library.Version.Version;
-import net.ME1312.SubServers.Bungee.Network.Client;
-import net.ME1312.SubServers.Bungee.Network.PacketIn;
-import net.ME1312.SubServers.Bungee.Network.PacketOut;
-import net.ME1312.SubServers.Bungee.SubPlugin;
-
-import java.util.Map;
-
-/**
- * Download Server List Packet
- */
-public class PacketDownloadServerList implements PacketIn, PacketOut {
- private SubPlugin plugin;
- private String host;
- private String group;
- private String id;
-
- /**
- * New PacketDownloadServerList (In)
- *
- * @param plugin SubPlugin
- */
- public PacketDownloadServerList(SubPlugin plugin) {
- if (Util.isNull(plugin)) throw new NullPointerException();
- this.plugin = plugin;
- }
-
- /**
- * New PacketDownloadServerList (Out)
- *
- * @param plugin SubPlugin
- * @param host Host (or null for all)
- * @param group Group (or null for all)
- * @param id Receiver ID
- */
- public PacketDownloadServerList(SubPlugin plugin, String host, String group, String id) {
- if (Util.isNull(plugin)) throw new NullPointerException();
- this.plugin = plugin;
- this.host = host;
- this.group = group;
- this.id = id;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public YAMLSection generate() {
- YAMLSection data = new YAMLSection();
- data.set("id", id);
-
- YAMLSection proxies = new YAMLSection();
- for (Proxy proxy : plugin.proxies.values()) {
- proxies.set(proxy.getName(), new YAMLSection(new Gson().fromJson(proxy.toString(), Map.class)));
- }
- data.set("proxies", proxies);
- if (plugin.redis) data.set("master-proxy", Util.getDespiteException(() -> plugin.redis("getServerId"), null));
-
- YAMLSection exServers = new YAMLSection();
- for (Server server : plugin.exServers.values()) {
- exServers.set(server.getName(), new YAMLSection(new Gson().fromJson(server.toString(), Map.class)));
- }
- data.set("servers", exServers);
-
- if (this.host == null || !this.host.equals("")) {
- YAMLSection hosts = new YAMLSection();
- for (Host host : plugin.api.getHosts().values()) {
- if (this.host == null || this.host.equalsIgnoreCase(host.getName())) {
- hosts.set(host.getName(), new YAMLSection(new Gson().fromJson(host.toString(), Map.class)));
- }
- }
- data.set("hosts", hosts);
- }
-
- if (this.group == null || !this.group.equals("")) {
- YAMLSection groups = new YAMLSection();
- for (String group : plugin.api.getGroups().keySet()) {
- if (this.group == null || this.group.equalsIgnoreCase(group)) {
- YAMLSection servers = new YAMLSection();
- for (Server server : plugin.api.getGroup(group)) {
- servers.set(server.getName(), new YAMLSection(new Gson().fromJson(server.toString(), Map.class)));
- }
- groups.set(group, servers);
- }
- }
- data.set("groups", groups);
- }
- return data;
- }
-
- @Override
- public void execute(Client client, YAMLSection data) {
- client.sendPacket(new PacketDownloadServerList(plugin, (data.contains("host"))?data.getRawString("host"):null, (data.contains("group"))?data.getRawString("group"):null, (data.contains("id"))?data.getRawString("id"):null));
- }
-
- @Override
- public Version getVersion() {
- return new Version("2.11.0a");
- }
-}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketStartServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketStartServer.java
index 7d603596..fe4c8021 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketStartServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketStartServer.java
@@ -66,16 +66,16 @@ public class PacketStartServer implements PacketIn, PacketOut {
} else if (!((SubServer) servers.get(data.getRawString("server").toLowerCase())).getHost().isEnabled()) {
client.sendPacket(new PacketStartServer(5, "That SubServer's Host is not enabled", (data.contains("id"))?data.getRawString("id"):null));
} else if (!((SubServer) servers.get(data.getRawString("server").toLowerCase())).isEnabled()) {
- client.sendPacket(new PacketStartServer(5, "That SubServer is not enabled", (data.contains("id"))?data.getRawString("id"):null));
+ client.sendPacket(new PacketStartServer(6, "That SubServer is not enabled", (data.contains("id"))?data.getRawString("id"):null));
} else if (((SubServer) servers.get(data.getRawString("server").toLowerCase())).isRunning()) {
- client.sendPacket(new PacketStartServer(6, "That SubServer is already running", (data.contains("id")) ? data.getRawString("id") : null));
+ client.sendPacket(new PacketStartServer(7, "That SubServer is already running", (data.contains("id")) ? data.getRawString("id") : null));
} else if (((SubServer) servers.get(data.getRawString("server").toLowerCase())).getCurrentIncompatibilities().size() != 0) {
String list = "";
for (SubServer server : ((SubServer) servers.get(data.getRawString("server").toLowerCase())).getCurrentIncompatibilities()) {
if (list.length() != 0) list += ", ";
list += server.getName();
}
- client.sendPacket(new PacketStartServer(7, "Cannot start SubServer while these servers are running: " + list, (data.contains("id")) ? data.getRawString("id") : null));
+ client.sendPacket(new PacketStartServer(8, "Cannot start SubServer while these servers are running: " + list, (data.contains("id")) ? data.getRawString("id") : null));
} else {
if (((SubServer) servers.get(data.getRawString("server").toLowerCase())).start((data.contains("player"))?UUID.fromString(data.getRawString("player")):null)) {
client.sendPacket(new PacketStartServer(0, "Starting SubServer", (data.contains("id"))?data.getRawString("id"):null));
@@ -91,6 +91,6 @@ public class PacketStartServer implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubDataServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubDataServer.java
index 1e6e5a71..49701357 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubDataServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubDataServer.java
@@ -1,7 +1,6 @@
package net.ME1312.SubServers.Bungee.Network;
import com.google.gson.Gson;
-import com.google.gson.JsonObject;
import net.ME1312.SubServers.Bungee.Event.SubNetworkConnectEvent;
import net.ME1312.SubServers.Bungee.Event.SubNetworkDisconnectEvent;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
@@ -87,13 +86,14 @@ public final class SubDataServer {
registerPacket(new PacketAuthorization(plugin), "SubData", "Authorization");
registerPacket(new PacketCommandServer(plugin), "SubServers", "CommandServer");
registerPacket(new PacketCreateServer(plugin), "SubServers", "CreateServer");
+ registerPacket(new PacketDownloadGroupInfo(plugin), "SubServers", "DownloadGroupInfo");
registerPacket(new PacketDownloadHostInfo(plugin), "SubServers", "DownloadHostInfo");
registerPacket(new PacketDownloadLang(plugin), "SubServers", "DownloadLang");
registerPacket(new PacketDownloadNetworkList(plugin), "SubServers", "DownloadNetworkList");
+ registerPacket(new PacketDownloadPlatformInfo(plugin), "SubServers", "DownloadPlatformInfo");
registerPacket(new PacketDownloadPlayerList(plugin), "SubServers", "DownloadPlayerList");
registerPacket(new PacketDownloadProxyInfo(plugin), "SubServers", "DownloadProxyInfo");
registerPacket(new PacketDownloadServerInfo(plugin), "SubServers", "DownloadServerInfo");
- registerPacket(new PacketDownloadServerList(plugin), "SubServers", "DownloadServerList");
registerPacket(new PacketEditServer(plugin), "SubServers", "EditServer");
registerPacket(new PacketExAddServer(), "SubServers", "ExAddServer");
registerPacket(new PacketExConfigureHost(plugin), "SubServers", "ExConfigureHost");
@@ -113,13 +113,14 @@ public final class SubDataServer {
registerPacket(PacketAuthorization.class, "SubData", "Authorization");
registerPacket(PacketCommandServer.class, "SubServers", "CommandServer");
registerPacket(PacketCreateServer.class, "SubServers", "CreateServer");
+ registerPacket(PacketDownloadGroupInfo.class, "SubServers", "DownloadGroupInfo");
registerPacket(PacketDownloadHostInfo.class, "SubServers", "DownloadHostInfo");
registerPacket(PacketDownloadLang.class, "SubServers", "DownloadLang");
registerPacket(PacketDownloadNetworkList.class, "SubServers", "DownloadNetworkList");
+ registerPacket(PacketDownloadPlatformInfo.class, "SubServers", "DownloadPlatformInfo");
registerPacket(PacketDownloadPlayerList.class, "SubServers", "DownloadPlayerList");
registerPacket(PacketDownloadProxyInfo.class, "SubServers", "DownloadProxyInfo");
registerPacket(PacketDownloadServerInfo.class, "SubServers", "DownloadServerInfo");
- registerPacket(PacketDownloadServerList.class, "SubServers", "DownloadServerList");
registerPacket(PacketEditServer.class, "SubServers", "EditServer");
registerPacket(PacketExAddServer.class, "SubServers", "ExAddServer");
registerPacket(PacketExConfigureHost.class, "SubServers", "ExConfigureHost");
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
index 7dae1e96..2e058bf8 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
@@ -528,6 +528,15 @@ public final class SubAPI {
return getProxies().get(name.toLowerCase());
}
+ /**
+ * Get the Master Proxy redis container (null if unavailable)
+ *
+ * @return Master Proxy
+ */
+ public Proxy getMasterProxy() {
+ return plugin.redis;
+ }
+
/**
* Get players on this network across all known proxies
*
@@ -536,7 +545,7 @@ public final class SubAPI {
@SuppressWarnings("unchecked")
public Collection> getGlobalPlayers() {
List> players = new ArrayList>();
- if (plugin.redis) {
+ if (plugin.redis != null) {
try {
for (UUID player : (Set) plugin.redis("getPlayersOnline")) players.add(new NamedContainer<>((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)), player));
} catch (Exception e) {}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
index 1988db50..36b94a81 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
@@ -62,7 +62,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
public SubServer sudo = null;
public static final Version version = Version.fromString("2.13b");
- public boolean redis = false;
+ public Proxy redis = null;
public boolean canSudo = false;
public final boolean isPatched;
public long resetDate = 0;
@@ -208,9 +208,10 @@ public final class SubPlugin extends BungeeCord implements Listener {
* Load SubServers before BungeeCord finishes
*/
@Override
+ @SuppressWarnings("unchecked")
public void startListeners() {
try {
- redis = getPluginManager().getPlugin("RedisBungee") != null;
+ if (getPluginManager().getPlugin("RedisBungee") != null) redis = Util.getDespiteException(() -> new Proxy((String) redis("getServerId")), null);
reload();
super.startListeners();
@@ -271,10 +272,12 @@ public final class SubPlugin extends BungeeCord implements Listener {
}
}
int proxies = 1;
- if (redis) {
+ if (redis != null) {
try {
boolean first = true;
String master = (String) redis("getServerId");
+ if (!master.equals(redis.getName())) redis = new Proxy(master);
+ if (!redis.getDisplayName().equals("(master)")) redis.setDisplayName("(master)");
for (String name : (List) redis("getAllServers")) {
if (!ukeys.contains(name.toLowerCase()) && !master.equals(name)) try {
if (first) System.out.println("SubServers > "+((status)?"Rel":"L")+"oading Proxies...");
@@ -637,7 +640,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
*/
@SuppressWarnings("unchecked")
public Object redis(String method, NamedContainer, ?>... args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
- if (redis) {
+ if (getPluginManager().getPlugin("RedisBungee") != null) {
Object api = getPluginManager().getPlugin("RedisBungee").getClass().getMethod("getApi").invoke(null);
Class>[] classargs = new Class>[args.length];
Object[] objargs = new Object[args.length];
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIHandler.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIHandler.java
index 47129de7..8c5dc30b 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIHandler.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIHandler.java
@@ -5,6 +5,8 @@ import net.ME1312.SubServers.Client.Bukkit.Library.Container;
import net.ME1312.SubServers.Client.Bukkit.Library.Callback;
import net.ME1312.SubServers.Client.Bukkit.Library.Util;
import net.ME1312.SubServers.Client.Bukkit.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.Bukkit.Network.Packet.*;
import net.ME1312.SubServers.Client.Bukkit.SubPlugin;
import org.bukkit.Bukkit;
@@ -121,14 +123,8 @@ public class InternalUIHandler implements UIHandler, Listener {
Bukkit.getScheduler().runTaskLater(plugin, () -> gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]), 4 * 20);
} else {
gui.setDownloading(plugin.api.getLang("SubServers", "Interface.Generic.Downloading.Response"));
- plugin.subdata.sendPacket(new PacketDownloadServerList(null, null, data -> {
- boolean match = false;
- for (String tmphost : data.getSection("hosts").getKeys()) {
- for (String tmpsubserver : data.getSection("hosts").getSection(tmphost).getSection("servers").getKeys()) {
- if (tmpsubserver.equalsIgnoreCase(m.getString("message"))) match = true;
- }
- }
- if (match) {
+ plugin.api.getServer(m.getString("message"), server -> {
+ if (server != null) {
gui.setDownloading(null);
if (!gui.sendTitle(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Exists-Title"), 4 * 20))
player.sendMessage(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name.Exists"));
@@ -137,7 +133,7 @@ public class InternalUIHandler implements UIHandler, Listener {
((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]).setName(m.getString("message"));
gui.hostCreator((UIRenderer.CreatorOptions) gui.lastVisitedObjects[0]);
}
- }));
+ });
}
});
} else if (ChatColor.stripColor(item).equals(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template")))) {
@@ -215,22 +211,22 @@ public class InternalUIHandler implements UIHandler, Listener {
gui.back();
} else {
player.closeInventory();
- final Container plugin = new Container(null);
- for (Renderer renderer : InternalUIRenderer.hostPlugins.values()) {
+ final Container> plugin = new Container>(null);
+ for (Renderer renderer : InternalUIRenderer.hostPlugins.values()) {
if (item.equals(renderer.getIcon().getItemMeta().getDisplayName())) plugin.set(renderer);
}
if (plugin.get() == null) {
gui.reopen();
} else {
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", (String) gui.lastVisitedObjects[0])));
- this.plugin.subdata.sendPacket(new PacketDownloadHostInfo((String) gui.lastVisitedObjects[0], (json) -> {
- if (json.getBoolean("valid")) {
+ this.plugin.api.getHost((String) gui.lastVisitedObjects[0], host -> {
+ if (host != null) {
gui.setDownloading(null);
- plugin.get().open(player, json.getSection("host"));
+ plugin.get().open(player, host);
} else {
gui.back();
}
- }));
+ });
}
}
}
@@ -407,22 +403,22 @@ public class InternalUIHandler implements UIHandler, Listener {
gui.back();
} else {
player.closeInventory();
- Container plugin = new Container(null);
- for (Renderer renderer : InternalUIRenderer.subserverPlugins.values()) {
+ Container> plugin = new Container>(null);
+ for (Renderer renderer : InternalUIRenderer.subserverPlugins.values()) {
if (item.equals(renderer.getIcon().getItemMeta().getDisplayName())) plugin.set(renderer);
}
if (plugin.get() == null) {
gui.reopen();
} else {
gui.setDownloading(ChatColor.stripColor(this.plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", (String) gui.lastVisitedObjects[0])));
- this.plugin.subdata.sendPacket(new PacketDownloadServerInfo((String) gui.lastVisitedObjects[0], data -> {
- if (data.getString("type").equals("subserver")) {
+ this.plugin.api.getSubServer((String) gui.lastVisitedObjects[0], subserver -> {
+ if (subserver != null) {
gui.setDownloading(null);
- plugin.get().open(player, data.getSection("server"));
+ plugin.get().open(player, subserver);
} else {
gui.back();
}
- }));
+ });
}
}
}
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIRenderer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIRenderer.java
index b2b81e2f..522c3d76 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIRenderer.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/InternalUIRenderer.java
@@ -1,10 +1,12 @@
package net.ME1312.SubServers.Client.Bukkit.Graphic;
+import net.ME1312.SubServers.Client.Bukkit.Library.Container;
import net.ME1312.SubServers.Client.Bukkit.Library.NamedContainer;
import net.ME1312.SubServers.Client.Bukkit.Library.Version.Version;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadHostInfo;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerInfo;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerList;
+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.Bukkit.SubPlugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -78,14 +80,14 @@ public class InternalUIRenderer extends UIRenderer {
public void hostMenu(final int page) {
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Menu.Title")));
- plugin.subdata.sendPacket(new PacketDownloadServerList(null, null, (json) -> {
+ plugin.api.getHosts(hosts -> plugin.api.getGroups(groups -> {
setDownloading(null);
lastVisitedObjects[0] = null;
lastPage = page;
lastMenu = () -> hostMenu(1);
windowHistory.add(() -> hostMenu(page));
- List hosts = new ArrayList();
- hosts.addAll(json.getSection("hosts").getKeys());
+ List index = new LinkedList();
+ index.addAll(hosts.values());
ItemStack block;
ItemMeta blockMeta;
@@ -97,7 +99,7 @@ public class InternalUIRenderer extends UIRenderer {
int i = 0;
int min = ((page - 1) * 36);
int max = (min + 35);
- int count = (hosts.size() == 0)?27:((hosts.size() - min >= max)?36:hosts.size() - min);
+ int count = (index.size() == 0)?27:((index.size() - min >= max)?36:index.size() - min);
int area = (count % 9 == 0) ? count : (int) (Math.floor(count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Menu.Title"));
@@ -113,31 +115,31 @@ public class InternalUIRenderer extends UIRenderer {
boolean even = (count & 1) == 0 && count < 9;
NamedContainer enabled, disabled;
- for (String host : hosts) {
- if (hosts.indexOf(host) >= min && hosts.indexOf(host) <= max) {
+ for (Host host : index) {
+ if (index.indexOf(host) >= min && index.indexOf(host) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
enabled = (((i & 1) == 0) ? new NamedContainer<>("BLUE_STAINED_GLASS_PANE", (short) 3) : new NamedContainer<>("LIGHT_BLUE_STAINED_GLASS_PANE", (short) 11));
disabled = (((i & 1) == 0) ? new NamedContainer<>("MAGENTA_STAINED_GLASS_PANE", (short) 2) : new NamedContainer<>("RED_STAINED_GLASS_PANE", (short) 14));
- if (json.getSection("hosts").getSection(host).getBoolean("enabled")) {
+ if (host.isEnabled()) {
block = createItem("STAINED_GLASS_PANE", enabled.name(), enabled.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.AQUA + json.getSection("hosts").getSection(host).getString("display"));
+ blockMeta.setDisplayName(ChatColor.AQUA + host.getDisplayName());
LinkedList lore = new LinkedList();
- if (!host.equals(json.getSection("hosts").getSection(host).getString("display")))
- lore.add(ChatColor.GRAY + host);
- lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("hosts").getSection(host).getSection("servers").getKeys().size())));
- if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + json.getSection("hosts").getSection(host).getString("address"));
+ if (!host.getName().equals(host.getDisplayName()))
+ lore.add(ChatColor.GRAY + host.getName());
+ lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(host.getSubServers().keySet().size())));
+ if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", disabled.name(), disabled.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.RED + json.getSection("hosts").getSection(host).getString("display"));
+ blockMeta.setDisplayName(ChatColor.RED + host.getDisplayName());
LinkedList lore = new LinkedList();
- if (!host.equals(json.getSection("hosts").getSection(host).getString("display")))
- lore.add(ChatColor.GRAY + host);
+ if (!host.getName().equals(host.getDisplayName()))
+ lore.add(ChatColor.GRAY + host.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Disabled"));
- if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + json.getSection("hosts").getSection(host).getString("address"));
+ if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
@@ -153,7 +155,7 @@ public class InternalUIRenderer extends UIRenderer {
}
}
- if (hosts.size() == 0) {
+ if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Menu.No-Hosts"));
@@ -179,7 +181,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(i++, block);
} else i += 2;
i++;
- if (json.getSection("groups").getKeys().size() <= 0) {
+ if (groups.keySet().size() <= 0) {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Menu.Server-Menu"));
@@ -193,7 +195,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(i++, block);
inv.setItem(i++, block);
i++;
- if (hosts.size() - 1 > max) {
+ if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
@@ -207,15 +209,15 @@ public class InternalUIRenderer extends UIRenderer {
}));
}
- public void hostAdmin(final String host) {
- setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Admin.Title").replace("$str$", host)));
- plugin.subdata.sendPacket(new PacketDownloadHostInfo(host, (json) -> {
- windowHistory.add(() -> hostAdmin(host));
- if (!json.getBoolean("valid")) {
+ public void hostAdmin(final String name) {
+ setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Admin.Title").replace("$str$", name)));
+ plugin.api.getHost(name, host -> {
+ windowHistory.add(() -> hostAdmin(name));
+ if (host == null) {
if (hasHistory()) back();
} else {
setDownloading(null);
- lastVisitedObjects[0] = host;
+ lastVisitedObjects[0] = name;
ItemStack block;
ItemMeta blockMeta;
@@ -224,7 +226,7 @@ public class InternalUIRenderer extends UIRenderer {
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
- Inventory inv = Bukkit.createInventory(null, 36, plugin.api.getLang("SubServers", "Interface.Host-Admin.Title").replace("$str$", json.getSection("host").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 36, plugin.api.getLang("SubServers", "Interface.Host-Admin.Title").replace("$str$", host.getDisplayName()));
int i = 0;
while (i < inv.getSize()) {
@@ -232,12 +234,12 @@ public class InternalUIRenderer extends UIRenderer {
i++;
}
- if (!(Bukkit.getPlayer(player).hasPermission("subservers.host.create.*") || Bukkit.getPlayer(player).hasPermission("subservers.host.create." + host.toLowerCase()))) {
+ if (!(Bukkit.getPlayer(player).hasPermission("subservers.host.create.*") || Bukkit.getPlayer(player).hasPermission("subservers.host.create." + name.toLowerCase()))) {
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.Host-Admin.Creator")));
- blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.host.create." + host.toLowerCase())));
- } else if (!json.getSection("host").getBoolean("enabled")) {
+ blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.host.create." + name.toLowerCase())));
+ } else if (!host.isEnabled()) {
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.Host-Admin.Creator")));
@@ -265,7 +267,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(15, block);
inv.setItem(16, block);
- if (!json.getSection("host").getBoolean("enabled") || hostPlugins.size() <= 0) {
+ if (!host.isEnabled() || hostPlugins.size() <= 0) {
block = div;
} else {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
@@ -276,25 +278,25 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(27, block);
inv.setItem(28, block);
- if (json.getSection("host").getBoolean("enabled")) {
+ if (host.isEnabled()) {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.AQUA + json.getSection("host").getString("display"));
+ blockMeta.setDisplayName(ChatColor.AQUA + host.getDisplayName());
LinkedList lore = new LinkedList();
- if (!host.equals(json.getSection("host").getString("display")))
- lore.add(ChatColor.GRAY + host);
- lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("host").getSection("servers").getKeys().size())));
- if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + json.getSection("host").getString("address"));
+ if (!host.getName().equals(host.getDisplayName()))
+ lore.add(ChatColor.GRAY + host.getName());
+ lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(host.getSubServers().keySet().size())));
+ if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.RED + json.getSection("host").getString("display"));
+ blockMeta.setDisplayName(ChatColor.RED + host.getDisplayName());
LinkedList lore = new LinkedList();
- if (!host.equals(json.getSection("host").getString("display")))
- lore.add(ChatColor.GRAY + host);
+ if (!host.getName().equals(host.getDisplayName()))
+ lore.add(ChatColor.GRAY + host.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Disabled"));
- if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + json.getSection("host").getString("address"));
+ if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
@@ -315,7 +317,7 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
public void hostCreator(final CreatorOptions options) {
@@ -324,8 +326,8 @@ public class InternalUIRenderer extends UIRenderer {
windowHistory.add(() -> hostCreator(options));
lastVisitedObjects[0] = options;
- plugin.subdata.sendPacket(new PacketDownloadHostInfo(options.getHost(), json -> {
- if (!json.getBoolean("valid")|| !json.getSection("host").getBoolean("enabled")) {
+ plugin.api.getHost(options.getHost(), host -> {
+ if (host == null || !host.isEnabled()) {
lastVisitedObjects[0] = null;
if (hasHistory()) back();
} else {
@@ -337,7 +339,7 @@ public class InternalUIRenderer extends UIRenderer {
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
- Inventory inv = Bukkit.createInventory(null, 54, plugin.api.getLang("SubServers", "Interface.Host-Creator.Title").replace("$str$", json.getSection("host").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 54, plugin.api.getLang("SubServers", "Interface.Host-Creator.Title").replace("$str$", host.getDisplayName()));
int i = 0;
while (i < inv.getSize()) {
@@ -449,25 +451,24 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
public void hostCreatorTemplates(final int page, final CreatorOptions options) {
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.Title").replace("$str$", options.getHost())));
lastVisitedObjects[0] = options;
if (!options.init()) lastVisitedObjects[0] = options.getHost();
- plugin.subdata.sendPacket(new PacketDownloadHostInfo(options.getHost(), (json) -> {
- if (!json.getBoolean("valid")|| !json.getSection("host").getBoolean("enabled")) {
+ plugin.api.getHost(options.getHost(), host -> {
+ if (host == null || !host.isEnabled()) {
lastVisitedObjects[0] = null;
if (hasHistory()) back();
} else {
lastPage = page;
setDownloading(null);
- List templates = new ArrayList();
- for (String template : json.getSection("host").getSection("creator").getSection("templates").getKeys()) {
- if (json.getSection("host").getSection("creator").getSection("templates").getSection(template).getBoolean("enabled")) templates.add(template);
+ List index = new LinkedList();
+ for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values()) {
+ if (template.isEnabled()) index.add(template);
}
- Collections.sort(templates);
ItemStack block;
ItemMeta blockMeta;
@@ -479,10 +480,10 @@ public class InternalUIRenderer extends UIRenderer {
int i = 0;
int min = ((page - 1) * 36);
int max = (min + 35);
- int count = (templates.size() == 0)?27:((templates.size() - min >= max)?36:templates.size() - min);
+ int count = (index.size() == 0)?27:((index.size() - min >= max)?36:index.size() - min);
int area = (count % 9 == 0)?count: (int) (Math.floor(count / 9) + 1) * 9;
- Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.Title").replace("$str$", json.getSection("host").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.Title").replace("$str$", host.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block.setItemMeta(divMeta);
while (i < area) {
@@ -493,16 +494,16 @@ public class InternalUIRenderer extends UIRenderer {
i = (int) ((count < 9) ? Math.floor((9 - count) / 2) : 0);
boolean even = (count & 1) == 0 && count < 9;
- for (String template : templates) {
- if (templates.indexOf(template) >= min && templates.indexOf(template) <= max) {
+ for (SubCreator.ServerTemplate template : index) {
+ if (index.indexOf(template) >= min && index.indexOf(template) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
- block = parseItem(json.getSection("host").getSection("creator").getSection("templates").getSection(template).getString("icon"), new ItemStack(Material.ENDER_CHEST));
+ block = parseItem(template.getIcon(), new ItemStack(Material.ENDER_CHEST));
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.YELLOW + json.getSection("host").getSection("creator").getSection("templates").getSection(template).getString("display"));
+ blockMeta.setDisplayName(ChatColor.YELLOW + template.getDisplayName());
LinkedList lore = new LinkedList();
- if (!template.equals(json.getSection("host").getSection("creator").getSection("templates").getSection(template).getString("display")))
- lore.add(ChatColor.GRAY + template);
+ if (!template.getName().equals(template.getDisplayName()))
+ lore.add(ChatColor.GRAY + template.getName());
blockMeta.setLore(lore);
block.setItemMeta(blockMeta);
inv.setItem(i, block);
@@ -517,7 +518,7 @@ public class InternalUIRenderer extends UIRenderer {
}
}
- if (templates.size() == 0) {
+ if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.No-Templates"));
@@ -551,7 +552,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(i++, block);
inv.setItem(i++, block);
i++;
- if (templates.size() - 1 > max) {
+ if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
@@ -563,22 +564,22 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
- public void hostPlugin(final int page, final String host) {
- setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", host)));
- plugin.subdata.sendPacket(new PacketDownloadHostInfo(host, (json) -> {
- windowHistory.add(() -> hostPlugin(page, host));
- if (!json.getBoolean("valid")) {
+ public void hostPlugin(final int page, final String name) {
+ setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", name)));
+ plugin.api.getHost(name, host -> {
+ windowHistory.add(() -> hostPlugin(page, name));
+ if (host == null) {
if (hasHistory()) back();
} else {
setDownloading(null);
- lastVisitedObjects[0] = host;
+ lastVisitedObjects[0] = name;
lastPage = page;
- List renderers = new ArrayList();
+ List renderers = new LinkedList();
for (String renderer : renderers) {
- if (hostPlugins.get(renderer).isEnabled(json.getSection("host"))) renderers.add(renderer);
+ if (hostPlugins.get(renderer).isEnabled(host)) renderers.add(renderer);
}
Collections.sort(renderers);
@@ -595,7 +596,7 @@ public class InternalUIRenderer extends UIRenderer {
int count = (renderers.size() == 0)?27:((renderers.size() - min >= max)?36:renderers.size() - min);
int area = (count % 9 == 0) ? count : (int) (Math.floor(count / 9) + 1) * 9;
- Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", json.getSection("host").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", host.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block.setItemMeta(divMeta);
while (i < area) {
@@ -671,19 +672,19 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
public void groupMenu(final int page) {
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Group-Menu.Title")));
- plugin.subdata.sendPacket(new PacketDownloadServerList(null, null, (json) -> {
+ plugin.api.getGroups(groups -> {
setDownloading(null);
lastVisitedObjects[0] = null;
lastPage = page;
lastMenu = () -> groupMenu(1);
windowHistory.add(() -> groupMenu(page));
- List groups = new ArrayList();
- groups.addAll(json.getSection("groups").getKeys());
+ List index = new LinkedList();
+ index.addAll(groups.keySet());
ItemStack block;
ItemMeta blockMeta;
@@ -695,7 +696,7 @@ public class InternalUIRenderer extends UIRenderer {
int i = 0;
int min = ((page - 1) * 36);
int max = (min + 35);
- int count = (groups.size() == 0)?27:((groups.size() - min >= max)?36:groups.size() - min);
+ int count = (index.size() == 0)?27:((index.size() - min >= max)?36:index.size() - min);
int area = (count % 9 == 0) ? count : (int) (Math.floor(count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Group-Menu.Title"));
@@ -711,8 +712,8 @@ public class InternalUIRenderer extends UIRenderer {
boolean even = (count & 1) == 0 && count < 9;
NamedContainer color;
- for (String group : groups) {
- if (groups.indexOf(group) >= min && groups.indexOf(group) <= max) {
+ for (String group : index) {
+ if (index.indexOf(group) >= min && index.indexOf(group) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
color = (((i & 1) == 0) ? new NamedContainer<>("ORANGE_STAINED_GLASS_PANE", (short) 1) : new NamedContainer<>("YELLOW_STAINED_GLASS_PANE", (short) 4));
@@ -720,7 +721,7 @@ public class InternalUIRenderer extends UIRenderer {
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GOLD + group);
LinkedList lore = new LinkedList();
- lore.add(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("groups").getSection(group).getKeys().size())));
+ lore.add(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(groups.get(group).size())));
blockMeta.setLore(lore);
block.setItemMeta(blockMeta);
inv.setItem(i, block);
@@ -735,7 +736,7 @@ public class InternalUIRenderer extends UIRenderer {
}
}
- if (groups.size() == 0) {
+ if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Group-Menu.No-Groups"));
@@ -769,7 +770,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(i++, block);
inv.setItem(i++, block);
i++;
- if (groups.size() - 1 > max) {
+ if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
@@ -780,43 +781,20 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
- }));
+ });
}
public void serverMenu(final int page, final String host, final String group) {
setDownloading(ChatColor.stripColor((host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group)):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", host)));
- plugin.subdata.sendPacket(new PacketDownloadServerList(host, (host != null)?null:group, json -> {
+ Container hostname = new Container(host);
+ Container> servercontainer = new Container>(new LinkedList());
+ Runnable renderer = () -> {
setDownloading(null);
lastPage = page;
- HashMap hosts = new HashMap();
- List servers = new ArrayList();
+ List servers = servercontainer.get();
lastVisitedObjects[0] = host;
lastVisitedObjects[1] = group;
- if (host != null && json.getSection("hosts").getKeys().contains(host)) {
- for (String subserver : json.getSection("hosts").getSection(host).getSection("servers").getKeys()) {
- hosts.put(subserver, host);
- servers.add(subserver);
- }
- } else if (group != null && json.getSection("groups").getKeys().contains(group)) {
- for (String server : json.getSection("groups").getSection(group).getKeys()) {
- hosts.put(server, (json.getSection("groups").getSection(group).getSection(server).getKeys().contains("host") && json.getSection("hosts").getKeys().contains(json.getSection("groups").getSection(group).getSection(server).getString("host")))?json.getSection("groups").getSection(group).getSection(server).getString("host"):null);
- servers.add(server);
- }
- } else {
- lastMenu = () -> serverMenu(1, null, null);
- for (String s : json.getSection("servers").getKeys()) {
- hosts.put(s, null);
- servers.add(s);
- }
- for (String h : json.getSection("hosts").getKeys()) {
- for (String ss : json.getSection("hosts").getSection(h).getSection("servers").getKeys()) {
- hosts.put(ss, h);
- servers.add(ss);
- }
- }
- }
- Collections.sort(servers);
windowHistory.add(() -> serverMenu(page, host, group));
ItemStack block;
@@ -832,7 +810,7 @@ public class InternalUIRenderer extends UIRenderer {
int count = (servers.size() == 0)?27:((servers.size() - min >= max)?36:servers.size() - min);
int area = (count % 9 == 0) ? count : (int) (Math.floor(count / 9) + 1) * 9;
- Inventory inv = Bukkit.createInventory(null, 18 + area, (host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group)):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", json.getSection("hosts").getSection(host).getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 18 + area, (host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group)):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", hostname.get()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block.setItemMeta(divMeta);
while (i < area) {
@@ -845,7 +823,7 @@ public class InternalUIRenderer extends UIRenderer {
boolean even = (count & 1) == 0 && count < 9;
NamedContainer external, online, temp, offline, disabled;
- for (String server : servers) {
+ for (Server server : servers) {
if (servers.indexOf(server) >= min && servers.indexOf(server) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
external = (((i & 1) == 0) ? new NamedContainer<>("WHITE_STAINED_GLASS_PANE", (short) 0) : new NamedContainer<>("LIGHT_GRAY_STAINED_GLASS_PANE", (short) 8));
@@ -854,66 +832,66 @@ public class InternalUIRenderer extends UIRenderer {
offline = (((i & 1) == 0) ? new NamedContainer<>("YELLOW_STAINED_GLASS_PANE", (short) 4) : new NamedContainer<>("ORANGE_STAINED_GLASS_PANE", (short) 1));
disabled = (((i & 1) == 0) ? new NamedContainer<>("MAGENTA_STAINED_GLASS_PANE", (short) 2) : new NamedContainer<>("RED_STAINED_GLASS_PANE", (short) 14));
- if (hosts.get(server) == null) {
+ if (!(server instanceof SubServer)) {
block = createItem("STAINED_GLASS_PANE", external.name(), external.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.WHITE + json.getSection("servers").getSection(server).getString("display"));
+ blockMeta.setDisplayName(ChatColor.WHITE + server.getDisplayName());
LinkedList lore = new LinkedList();
- if (!server.equals(json.getSection("servers").getSection(server).getString("display")))
- lore.add(ChatColor.GRAY + server);
+ if (!server.getName().equals(server.getDisplayName()))
+ lore.add(ChatColor.GRAY + server.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-External"));
- lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("servers").getSection(server).getSection("players").getKeys().size())));
+ lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Invalid"));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("servers").getSection(server).getString("address"):json.getSection("servers").getSection(server).getString("address").split(":")[json.getSection("servers").getSection(server).getString("address").split(":").length - 1]));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
- } else if (json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getBoolean("temp")) {
+ } else if (((SubServer) server).isTemporary()) {
block = createItem("STAINED_GLASS_PANE", temp.name(), temp.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.AQUA + json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display"));
+ blockMeta.setDisplayName(ChatColor.AQUA + server.getDisplayName());
LinkedList lore = new LinkedList();
- if (!server.equals(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display")))
- lore.add(ChatColor.GRAY + server);
+ if (!server.getName().equals(server.getDisplayName()))
+ lore.add(ChatColor.GRAY + server.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Temporary"));
- lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getSection("players").getKeys().size())));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address"):json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":")[json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":").length - 1]));
+ lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
- } else if (json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getBoolean("running")) {
+ } else if (((SubServer) server).isRunning()) {
block = createItem("STAINED_GLASS_PANE", online.name(), online.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.GREEN + json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display"));
+ blockMeta.setDisplayName(ChatColor.GREEN + server.getDisplayName());
LinkedList lore = new LinkedList();
- if (!server.equals(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display")))
- lore.add(ChatColor.GRAY + server);
- lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getSection("players").getKeys().size())));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address"):json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":")[json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":").length - 1]));
+ if (!server.getName().equals(server.getDisplayName()))
+ lore.add(ChatColor.GRAY + server.getName());
+ lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
- } else if (json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getBoolean("enabled") && json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getList("incompatible").size() == 0) {
+ } else if (((SubServer) server).isEnabled() && ((SubServer) server).getCurrentIncompatibilities().size() == 0) {
block = createItem("STAINED_GLASS_PANE", offline.name(), offline.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.YELLOW + json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display"));
+ blockMeta.setDisplayName(ChatColor.YELLOW + server.getDisplayName());
LinkedList lore = new LinkedList();
- if (!server.equals(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display")))
- lore.add(ChatColor.GRAY + server);
+ if (!server.getName().equals(server.getDisplayName()))
+ lore.add(ChatColor.GRAY + server.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Offline"));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address"):json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":")[json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":").length - 1]));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", disabled.name(), disabled.get());
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.RED + json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display"));
+ blockMeta.setDisplayName(ChatColor.RED + server.getDisplayName());
LinkedList lore = new LinkedList();
- if (!server.equals(json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("display")))
- lore.add(ChatColor.GRAY + server);
- if (json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getList("incompatible").size() != 0) {
+ if (!server.getName().equals(server.getDisplayName()))
+ lore.add(ChatColor.GRAY + server.getName());
+ if (((SubServer) server).getCurrentIncompatibilities().size() != 0) {
String list = "";
- for (int ii = 0; ii < json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getList("incompatible").size(); ii++) {
+ for (String other : ((SubServer) server).getCurrentIncompatibilities()) {
if (list.length() != 0) list += ", ";
- list += json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getList("incompatible").get(ii).asString();
+ list += other;
}
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list));
}
- if (!json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getBoolean("enabled")) lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address"):json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":")[json.getSection("hosts").getSection(hosts.get(server)).getSection("servers").getSection(server).getString("address").split(":").length - 1]));
+ if (!((SubServer) server).isEnabled()) lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
@@ -976,18 +954,44 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
- }));
+ };
+
+ if (host != null && host.length() > 0) {
+ plugin.api.getHost(host, object -> {
+ if (object == null) {
+ if (hasHistory()) back();
+ } else {
+ hostname.set(object.getDisplayName());
+ servercontainer.get().addAll(object.getSubServers().values());
+ renderer.run();
+ }
+ });
+ } else if (group != null && group.length() > 0) {
+ plugin.api.getGroup(group, servers -> {
+ if (servers == null) {
+ if (hasHistory()) back();
+ } else {
+ servercontainer.get().addAll(servers);
+ renderer.run();
+ }
+ });
+ } else {
+ plugin.api.getServers(servers -> {
+ servercontainer.get().addAll(servers.values());
+ renderer.run();
+ });
+ }
}
- public void subserverAdmin(final String subserver) {
- setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Title").replace("$str$", subserver)));
- plugin.subdata.sendPacket(new PacketDownloadServerInfo(subserver, json -> {
- windowHistory.add(() -> subserverAdmin(subserver));
- if (!json.getString("type").equals("subserver")) {
+ public void subserverAdmin(final String name) {
+ setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Title").replace("$str$", name)));
+ plugin.api.getSubServer(name, subserver -> {
+ windowHistory.add(() -> subserverAdmin(name));
+ if (subserver == null) {
if (hasHistory()) back();
} else {
setDownloading(null);
- lastVisitedObjects[0] = subserver;
+ lastVisitedObjects[0] = name;
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
@@ -995,7 +999,7 @@ public class InternalUIRenderer extends UIRenderer {
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
- Inventory inv = Bukkit.createInventory(null, 36, plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Title").replace("$str$", json.getSection("server").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 36, plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Title").replace("$str$", subserver.getDisplayName()));
int i = 0;
while (i < inv.getSize()) {
@@ -1004,12 +1008,12 @@ public class InternalUIRenderer extends UIRenderer {
}
i = 0;
- if (json.getSection("server").getBoolean("running")) {
- if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.terminate.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.terminate." + subserver.toLowerCase()))) {
+ if (subserver.isRunning()) {
+ if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.terminate.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.terminate." + name.toLowerCase()))) {
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")));
- blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.terminate." + subserver.toLowerCase())));
+ blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.terminate." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
@@ -1020,11 +1024,11 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(1, block);
inv.setItem(10, block);
- if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.stop.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.stop." + subserver.toLowerCase()))) {
+ if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.stop.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.stop." + name.toLowerCase()))) {
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")));
- blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.stop." + subserver.toLowerCase())));
+ blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.stop." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "MAGENTA_STAINED_GLASS_PANE", (short) 2);
blockMeta = block.getItemMeta();
@@ -1036,11 +1040,11 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(11, block);
inv.setItem(12, block);
- if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.command.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.command." + subserver.toLowerCase()))) {
+ if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.command.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.command." + name.toLowerCase()))) {
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")));
- blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.command." + subserver.toLowerCase())));
+ blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.command." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
blockMeta = block.getItemMeta();
@@ -1054,12 +1058,12 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(15, block);
inv.setItem(16, block);
} else {
- if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.start.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.start." + subserver.toLowerCase()))) {
+ if (!(Bukkit.getPlayer(player).hasPermission("subservers.subserver.start.*") || Bukkit.getPlayer(player).hasPermission("subservers.subserver.start." + name.toLowerCase()))) {
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")));
- blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.start." + subserver.toLowerCase())));
- } else if (!json.getSection("server").getBoolean("enabled") || json.getSection("server").getList("incompatible").size() != 0) {
+ blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.start." + name.toLowerCase())));
+ } else if (!subserver.isEnabled() || subserver.getCurrentIncompatibilities().size() != 0) {
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")));
@@ -1077,7 +1081,7 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(14, block);
}
- if (!json.getSection("server").getBoolean("enabled") || subserverPlugins.size() <= 0) {
+ if (!subserver.isEnabled() || subserverPlugins.size() <= 0) {
block = div;
} else {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
@@ -1088,54 +1092,54 @@ public class InternalUIRenderer extends UIRenderer {
inv.setItem(27, block);
inv.setItem(28, block);
- if (json.getSection("server").getBoolean("temp")) {
+ if (subserver.isTemporary()) {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.AQUA + json.getSection("server").getString("display"));
+ blockMeta.setDisplayName(ChatColor.AQUA + subserver.getDisplayName());
LinkedList lore = new LinkedList();
- if (!subserver.equals(json.getSection("server").getString("display")))
- lore.add(ChatColor.GRAY + subserver);
+ if (!subserver.getName().equals(subserver.getDisplayName()))
+ lore.add(ChatColor.GRAY + subserver.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Temporary"));
- lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("server").getSection("players").getKeys().size())));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("server").getString("address"):json.getSection("server").getString("address").split(":")[json.getSection("server").getString("address").split(":").length - 1]));
+ lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(subserver.getPlayers().size())));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
- } else if (json.getSection("server").getBoolean("running")) {
+ } else if (subserver.isRunning()) {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.GREEN + json.getSection("server").getString("display"));
+ blockMeta.setDisplayName(ChatColor.GREEN + subserver.getDisplayName());
LinkedList lore = new LinkedList();
- if (!subserver.equals(json.getSection("server").getString("display")))
- lore.add(ChatColor.GRAY + subserver);
- lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(json.getSection("server").getSection("players").getKeys().size())));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("server").getString("address"):json.getSection("server").getString("address").split(":")[json.getSection("server").getString("address").split(":").length - 1]));
+ if (!subserver.getName().equals(subserver.getDisplayName()))
+ lore.add(ChatColor.GRAY + subserver.getName());
+ lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(subserver.getPlayers().size())));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
- } else if (json.getSection("server").getBoolean("enabled") && json.getSection("server").getList("incompatible").size() == 0) {
+ } else if (subserver.isEnabled() && subserver.getCurrentIncompatibilities().size() == 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.YELLOW + json.getSection("server").getString("display"));
+ blockMeta.setDisplayName(ChatColor.YELLOW + subserver.getDisplayName());
LinkedList lore = new LinkedList();
- if (!subserver.equals(json.getSection("server").getString("display")))
- lore.add(ChatColor.GRAY + subserver);
+ if (!subserver.getName().equals(subserver.getDisplayName()))
+ lore.add(ChatColor.GRAY + subserver.getName());
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Offline"));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("server").getString("address"):json.getSection("server").getString("address").split(":")[json.getSection("server").getString("address").split(":").length - 1]));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
blockMeta = block.getItemMeta();
- blockMeta.setDisplayName(ChatColor.RED + json.getSection("server").getString("display"));
+ blockMeta.setDisplayName(ChatColor.RED + subserver.getDisplayName());
LinkedList lore = new LinkedList();
- if (!subserver.equals(json.getSection("server").getString("display")))
- lore.add(ChatColor.GRAY + subserver);
- if (json.getSection("server").getList("incompatible").size() != 0) {
+ if (!subserver.getName().equals(subserver.getDisplayName()))
+ lore.add(ChatColor.GRAY + subserver.getName());
+ if (subserver.getCurrentIncompatibilities().size() != 0) {
String list = "";
- for (int ii = 0; ii < json.getSection("server").getList("incompatible").size(); ii++) {
+ for (String other : subserver.getCurrentIncompatibilities()) {
if (list.length() != 0) list += ", ";
- list += json.getSection("server").getList("incompatible").get(ii).asString();
+ list += other;
}
lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list));
}
- if (!json.getSection("server").getBoolean("enabled")) lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
- lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?json.getSection("server").getString("address"):json.getSection("server").getString("address").split(":")[json.getSection("server").getString("address").split(":").length - 1]));
+ if (!subserver.isEnabled()) lore.add(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
+ lore.add(ChatColor.WHITE + ((plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
@@ -1155,23 +1159,23 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
- public void subserverPlugin(final int page, final String subserver) {
- setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", subserver)));
- plugin.subdata.sendPacket(new PacketDownloadServerInfo(subserver, json -> {
- windowHistory.add(() -> subserverPlugin(page, subserver));
- if (!json.getString("type").equals("subserver")) {
+ public void subserverPlugin(final int page, final String name) {
+ setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", name)));
+ plugin.api.getSubServer(name, subserver -> {
+ windowHistory.add(() -> subserverPlugin(page, name));
+ if (subserver == null) {
if (hasHistory()) back();
} else {
setDownloading(null);
- lastVisitedObjects[0] = subserver;
+ lastVisitedObjects[0] = name;
lastPage = page;
- List renderers = new ArrayList();
+ List renderers = new LinkedList();
for (String renderer : renderers) {
- if (subserverPlugins.get(renderer).isEnabled(json.getSection("server"))) renderers.add(renderer);
+ if (subserverPlugins.get(renderer).isEnabled(subserver)) renderers.add(renderer);
}
Collections.sort(renderers);
@@ -1188,7 +1192,7 @@ public class InternalUIRenderer extends UIRenderer {
int count = (renderers.size() == 0)?27:((renderers.size() - min >= max)?36:renderers.size() - min);
int area = (count % 9 == 0) ? count : (int) (Math.floor(count / 9) + 1) * 9;
- Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", json.getSection("server").getString("display")));
+ Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", subserver.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block.setItemMeta(divMeta);
while (i < area) {
@@ -1264,6 +1268,6 @@ public class InternalUIRenderer extends UIRenderer {
Bukkit.getPlayer(player).openInventory(inv);
open = true;
}
- }));
+ });
}
}
\ No newline at end of file
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/Renderer.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/Renderer.java
index 2371aec6..d1b9e59d 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/Renderer.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Graphic/Renderer.java
@@ -1,21 +1,20 @@
package net.ME1312.SubServers.Client.Bukkit.Graphic;
-import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
/**
* GUI Renderer Layout Class
*/
-public interface Renderer {
+public interface Renderer {
/**
* Open the GUI
*
* @param player Player Opening
- * @param object Raw Representation of an Object
+ * @param object Object passed
*/
- void open(Player player, YAMLSection object);
+ void open(Player player, T object);
/**
* Get Renderer Icon
@@ -27,8 +26,8 @@ public interface Renderer {
/**
* Check if this Renderer is enabled for this Object
*
- * @param object Raw Representation of an Object
+ * @param object Object passed
* @return Enabled Status
*/
- boolean isEnabled(YAMLSection object);
+ boolean isEnabled(T object);
}
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 c3f4d10e..11003a51 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
@@ -3,6 +3,8 @@ import net.ME1312.SubServers.Client.Bukkit.Library.Container;
import net.ME1312.SubServers.Client.Bukkit.Library.NamedContainer;
import net.ME1312.SubServers.Client.Bukkit.Library.Util;
import net.ME1312.SubServers.Client.Bukkit.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.Bukkit.SubPlugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -17,8 +19,8 @@ import java.util.regex.Pattern;
* GUI Renderer Layout Class
*/
public abstract class UIRenderer {
- protected static HashMap hostPlugins = new HashMap();
- protected static HashMap subserverPlugins = new HashMap();
+ protected static HashMap> hostPlugins = new HashMap>();
+ protected static HashMap> subserverPlugins = new HashMap>();
private NamedContainer tdownload = null;
private int download = -1;
private final UUID player;
@@ -265,7 +267,7 @@ public abstract class UIRenderer {
* @param handle Handle to bind
* @param renderer Renderer
*/
- public static void addHostPlugin(String handle, Renderer renderer) {
+ public static void addHostPlugin(String handle, Renderer renderer) {
if (Util.isNull(handle, renderer)) throw new NullPointerException();
hostPlugins.put(handle, renderer);
}
@@ -295,7 +297,7 @@ public abstract class UIRenderer {
* @param handle Handle to bind
* @param renderer Renderer
*/
- public static void addSubServerPlugin(String handle, Renderer renderer) {
+ public static void addSubServerPlugin(String handle, Renderer renderer) {
if (Util.isNull(handle, renderer)) throw new NullPointerException();
subserverPlugins.put(handle, renderer);
}
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 ec72767a..51f31d6f 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,8 +1,9 @@
package net.ME1312.SubServers.Client.Bukkit.Library.Compatibility;
-import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
+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.Packet.PacketDownloadServerList;
+import net.ME1312.SubServers.Client.Bukkit.Network.API.Server;
+import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer;
import net.ME1312.SubServers.Client.Bukkit.SubPlugin;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
@@ -23,13 +24,13 @@ public class BungeeChat {
}
public void listCommand(CommandSender sender, String label) {
- plugin.subdata.sendPacket(new PacketDownloadServerList(null, null, data -> {
+ plugin.api.getGroups(groups -> plugin.api.getHosts(hosts -> plugin.api.getServers(servers -> plugin.api.getMasterProxy(proxymaster -> plugin.api.getProxies(proxies -> {
int i = 0;
boolean sent = false;
TextComponent div = new TextComponent(plugin.api.getLang("SubServers", "Command.List.Divider"));
- if (data.getSection("groups").getKeys().size() > 0) {
+ if (groups.keySet().size() > 0) {
sender.sendMessage(plugin.api.getLang("SubServers", "Command.List.Group-Header"));
- for (String group : data.getSection("groups").getKeys()) {
+ for (String group : groups.keySet()) {
List hoverm = new LinkedList();
TextComponent msg = new TextComponent(" ");
TextComponent message = new TextComponent(group);
@@ -37,47 +38,46 @@ public class BungeeChat {
message.setColor(ChatColor.GOLD);
hover.setColor(ChatColor.GOLD);
hoverm.add(hover);
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("groups").getSection(group).getKeys().size())));
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(groups.get(group).size())));
hoverm.add(hover);
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open Server 1 " + group));
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverm.toArray(new TextComponent[hoverm.size()])));
msg.addExtra(message);
msg.addExtra(new TextComponent(plugin.api.getLang("SubServers", "Command.List.Header")));
- for (String server : data.getSection("groups").getSection(group).getKeys()) {
+ for (Server server : groups.get(group)) {
hoverm = new LinkedList();
- message = new TextComponent(data.getSection("groups").getSection(group).getSection(server).getString("display"));
- hover = new TextComponent(data.getSection("groups").getSection(group).getSection(server).getString("display") + '\n');
- if (data.getSection("groups").getSection(group).getSection(server).getKeys().contains("host")) {
- message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open SubServer/ " + server));
- if (data.getSection("groups").getSection(group).getSection(server).getBoolean("temp")) {
+ message = new TextComponent(server.getDisplayName());
+ hover = new TextComponent(server.getDisplayName() + '\n');
+ if (server instanceof SubServer) {
+ if (((SubServer) server).isTemporary()) {
message.setColor(ChatColor.AQUA);
hover.setColor(ChatColor.AQUA);
hoverm.add(hover);
- if (!server.equals(data.getSection("groups").getSection(group).getSection(server).getString("display"))) {
- hover = new TextComponent(server + '\n');
+ if (!server.getName().equals(server.getDisplayName())) {
+ hover = new TextComponent(server.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Temporary") + '\n');
hoverm.add(hover);
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("groups").getSection(group).getSection(server).getSection("players").getKeys().size())));
- } else if (data.getSection("groups").getSection(group).getSection(server).getBoolean("running")) {
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
+ } else if (((SubServer) server).isRunning()) {
message.setColor(ChatColor.GREEN);
hover.setColor(ChatColor.GREEN);
hoverm.add(hover);
- if (!server.equals(data.getSection("groups").getSection(group).getSection(server).getString("display"))) {
- hover = new TextComponent(server + '\n');
+ if (!server.getName().equals(server.getDisplayName())) {
+ hover = new TextComponent(server.getDisplayName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("groups").getSection(group).getSection(server).getSection("players").getKeys().size())));
- } else if (data.getSection("groups").getSection(group).getSection(server).getBoolean("enabled") && data.getSection("groups").getSection(group).getSection(server).getList("incompatible").size() == 0) {
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
+ } else if (((SubServer) server).isEnabled() && ((SubServer) server).getCurrentIncompatibilities().size() == 0) {
message.setColor(ChatColor.YELLOW);
hover.setColor(ChatColor.YELLOW);
hoverm.add(hover);
- if (!server.equals(data.getSection("groups").getSection(group).getSection(server).getString("display"))) {
- hover = new TextComponent(server + '\n');
+ if (!server.getName().equals(server.getDisplayName())) {
+ hover = new TextComponent(server.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
@@ -85,30 +85,30 @@ public class BungeeChat {
} else {
message.setColor(ChatColor.RED);
hover.setColor(ChatColor.RED);
- if (!server.equals(data.getSection("groups").getSection(group).getSection(server).getString("display"))) {
+ if (!server.getName().equals(server.getDisplayName())) {
hoverm.add(hover);
- hover = new TextComponent(server + '\n');
+ hover = new TextComponent(server.getName() + '\n');
hover.setColor(ChatColor.GRAY);
}
- if (data.getSection("groups").getSection(group).getSection(server).getList("incompatible").size() != 0) {
+ if (((SubServer) server).getCurrentIncompatibilities().size() != 0) {
hoverm.add(hover);
String list = "";
- for (int ii = 0; ii < data.getSection("groups").getSection(group).getSection(server).getList("incompatible").size(); ii++) {
+ for (String other : ((SubServer) server).getCurrentIncompatibilities()) {
if (list.length() != 0) list += ", ";
- list += data.getSection("groups").getSection(group).getSection(server).getList("incompatible").get(ii).asString();
+ list += other;
}
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list) + ((data.getSection("groups").getSection(group).getSection(server).getBoolean("enabled")) ? "" : "\n"));
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list) + ((((SubServer) server).isEnabled())?"":"\n"));
}
- if (!data.getSection("groups").getSection(group).getSection(server).getBoolean("enabled")) {
+ if (!((SubServer) server).isEnabled()) {
hoverm.add(hover);
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
}
}
hoverm.add(hover);
if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) {
- hover = new TextComponent('\n' + data.getSection("groups").getSection(group).getSection(server).getString("address"));
+ hover = new TextComponent('\n' + server.getAddress().getAddress().getHostAddress() + ':' + server.getAddress().getPort());
} else {
- hover = new TextComponent('\n' + data.getSection("groups").getSection(group).getSection(server).getString("address").split(":")[data.getSection("groups").getSection(group).getSection(server).getString("address").split(":").length - 1]);
+ hover = new TextComponent("\n" + server.getAddress().getPort());
}
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
@@ -116,15 +116,20 @@ public class BungeeChat {
} else {
message.setColor(ChatColor.WHITE);
hover.setColor(ChatColor.WHITE);
+ if (!server.getName().equals(server.getDisplayName())) {
+ hoverm.add(hover);
+ hover = new TextComponent(server.getName() + '\n');
+ hover.setColor(ChatColor.GRAY);
+ }
hoverm.add(hover);
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-External"));
hoverm.add(hover);
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("groups").getSection(group).getSection(server).getSection("players").getKeys().size())) + '\n');
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())) + '\n');
hoverm.add(hover);
if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) {
- hover = new TextComponent('\n' + data.getSection("groups").getSection(group).getSection(server).getString("address"));
+ hover = new TextComponent('\n' + server.getAddress().getAddress().getHostAddress() + ':' + server.getAddress().getPort());
} else {
- hover = new TextComponent('\n' + data.getSection("groups").getSection(group).getSection(server).getString("address").split(":")[data.getSection("groups").getSection(group).getSection(server).getString("address").split(":").length - 1]);
+ hover = new TextComponent("\n" + server.getAddress().getPort());
}
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
@@ -143,27 +148,27 @@ public class BungeeChat {
sent = false;
}
sender.sendMessage(plugin.api.getLang("SubServers", "Command.List.Host-Header"));
- for (String host : data.getSection("hosts").getKeys()) {
+ for (Host host : hosts.values()) {
List hoverm = new LinkedList();
TextComponent msg = new TextComponent(" ");
- TextComponent message = new TextComponent(data.getSection("hosts").getSection(host).getString("display"));
- TextComponent hover = new TextComponent(data.getSection("hosts").getSection(host).getString("display") + '\n');
- if (data.getSection("hosts").getSection(host).getBoolean("enabled")) {
+ TextComponent message = new TextComponent(host.getDisplayName());
+ TextComponent hover = new TextComponent(host.getDisplayName() + '\n');
+ if (host.isEnabled()) {
message.setColor(ChatColor.AQUA);
hover.setColor(ChatColor.AQUA);
hoverm.add(hover);
- if (!host.equals(data.getSection("hosts").getSection(host).getString("display"))) {
- hover = new TextComponent(host + '\n');
+ if (!host.getName().equals(host.getDisplayName())) {
+ hover = new TextComponent(host.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("hosts").getSection(host).getSection("servers").getKeys().size())));
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Host-Menu.Host-Server-Count").replace("$int$", new DecimalFormat("#,###").format(host.getSubServers().keySet().size())));
} else {
message.setColor(ChatColor.RED);
hover.setColor(ChatColor.RED);
hoverm.add(hover);
- if (!host.equals(data.getSection("hosts").getSection(host).getString("display"))) {
- hover = new TextComponent(host + '\n');
+ if (!host.getName().equals(host.getDisplayName())) {
+ hover = new TextComponent(host.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
@@ -171,48 +176,48 @@ public class BungeeChat {
}
if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) {
hoverm.add(hover);
- hover = new TextComponent('\n' + data.getSection("hosts").getSection(host).getString("address"));
+ hover = new TextComponent('\n' + host.getAddress().getHostAddress());
hover.setColor(ChatColor.WHITE);
}
hoverm.add(hover);
- message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open Host/ " + host));
+ message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open Host/ " + host.getName()));
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverm.toArray(new TextComponent[hoverm.size()])));
msg.addExtra(message);
msg.addExtra(new TextComponent(plugin.api.getLang("SubServers", "Command.List.Header")));
- for (String subserver : data.getSection("hosts").getSection(host).getSection("servers").getKeys()) {
+ for (SubServer subserver : host.getSubServers().values()) {
hoverm = new LinkedList();
- message = new TextComponent(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display"));
- hover = new TextComponent(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display") + '\n');
+ message = new TextComponent(subserver.getDisplayName());
+ hover = new TextComponent(subserver.getDisplayName() + '\n');
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open SubServer/ " + subserver));
- if (data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getBoolean("temp")) {
+ if (subserver.isTemporary()) {
message.setColor(ChatColor.AQUA);
hover.setColor(ChatColor.AQUA);
hoverm.add(hover);
- if (!subserver.equals(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display"))) {
- hover = new TextComponent(subserver + '\n');
+ if (!subserver.getName().equals(subserver.getDisplayName())) {
+ hover = new TextComponent(subserver.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Temporary") + '\n');
hoverm.add(hover);
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getSection("players").getKeys().size())));
- } else if (data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getBoolean("running")) {
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(subserver.getPlayers().size())));
+ } else if (subserver.isEnabled()) {
message.setColor(ChatColor.GREEN);
hover.setColor(ChatColor.GREEN);
hoverm.add(hover);
- if (!subserver.equals(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display"))) {
- hover = new TextComponent(subserver + '\n');
+ if (!subserver.getName().equals(subserver.getDisplayName())) {
+ hover = new TextComponent(subserver.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getSection("players").getKeys().size())));
- } else if (data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getBoolean("enabled") && data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getList("incompatible").size() == 0) {
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(subserver.getPlayers().size())));
+ } else if (subserver.isEnabled() && subserver.getCurrentIncompatibilities().size() == 0) {
message.setColor(ChatColor.YELLOW);
hover.setColor(ChatColor.YELLOW);
hoverm.add(hover);
- if (!subserver.equals(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display"))) {
- hover = new TextComponent(subserver + '\n');
+ if (!subserver.getName().equals(subserver.getDisplayName())) {
+ hover = new TextComponent(subserver.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
@@ -220,34 +225,34 @@ public class BungeeChat {
} else {
message.setColor(ChatColor.RED);
hover.setColor(ChatColor.RED);
- if (!subserver.equals(data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("display"))) {
+ if (!subserver.getName().equals(subserver.getDisplayName())) {
hoverm.add(hover);
- hover = new TextComponent(subserver + '\n');
+ hover = new TextComponent(subserver.getName() + '\n');
hover.setColor(ChatColor.GRAY);
}
- if (data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getList("incompatible").size() != 0) {
+ if (subserver.getCurrentIncompatibilities().size() != 0) {
hoverm.add(hover);
String list = "";
- for (int ii = 0; ii < data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getList("incompatible").size(); ii++) {
+ for (String other : subserver.getCurrentIncompatibilities()) {
if (list.length() != 0) list += ", ";
- list += data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getList("incompatible").get(ii).asString();
+ list += other;
}
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list) + ((data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getBoolean("enabled")) ? "" : "\n"));
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Incompatible").replace("$str$", list) + ((subserver.isEnabled())?"":"\n"));
}
- if (!data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getBoolean("enabled")) {
+ if (!subserver.isEnabled()) {
hoverm.add(hover);
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.SubServer-Disabled"));
}
}
hoverm.add(hover);
if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) {
- hover = new TextComponent('\n' + data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("address"));
+ hover = new TextComponent('\n' + subserver.getAddress().getAddress().getHostAddress()+':'+subserver.getAddress().getPort());
} else {
- hover = new TextComponent('\n' + data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("address").split(":")[data.getSection("hosts").getSection(host).getSection("servers").getSection(subserver).getString("address").split(":").length - 1]);
+ hover = new TextComponent("\n" + subserver.getAddress().getPort());
}
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
- message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open SubServer/ " + subserver));
+ message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, label + " open SubServer/ " + subserver.getName()));
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverm.toArray(new TextComponent[hoverm.size()])));
if (i != 0) msg.addExtra(div);
msg.addExtra(message);
@@ -261,26 +266,26 @@ public class BungeeChat {
if (!sent) sender.sendMessage(" " + plugin.api.getLang("SubServers", "Command.List.Empty"));
sender.sendMessage(plugin.api.getLang("SubServers", "Command.List.Server-Header"));
TextComponent msg = new TextComponent(" ");
- for (String server : data.getSection("servers").getKeys()) {
+ for (Server server : servers.values()) if (!(server instanceof SubServer)) {
List hoverm = new LinkedList();
- TextComponent message = new TextComponent(data.getSection("servers").getSection(server).getString("display"));
- TextComponent hover = new TextComponent(data.getSection("servers").getSection(server).getString("display") + '\n');
+ TextComponent message = new TextComponent(server.getDisplayName());
+ TextComponent hover = new TextComponent(server.getDisplayName() + '\n');
message.setColor(ChatColor.WHITE);
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
- if (!server.equals(data.getSection("servers").getSection(server).getString("display"))) {
- hover = new TextComponent(server + '\n');
+ if (!server.getName().equals(server.getDisplayName())) {
+ hover = new TextComponent(server.getName() + '\n');
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-External") + '\n');
hoverm.add(hover);
- hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(data.getSection("servers").getSection(server).getSection("players").getKeys().size())));
+ hover = new TextComponent(plugin.api.getLang("SubServers", "Interface.Server-Menu.Server-Player-Count").replace("$int$", new DecimalFormat("#,###").format(server.getPlayers().size())));
hoverm.add(hover);
if (plugin.config.get().getSection("Settings").getBoolean("Show-Addresses", false)) {
- hover = new TextComponent('\n' + data.getSection("servers").getSection(server).getString("address"));
+ hover = new TextComponent('\n' + server.getAddress().getAddress().getHostAddress()+':'+server.getAddress().getPort());
} else {
- hover = new TextComponent('\n' + data.getSection("servers").getSection(server).getString("address").split(":")[data.getSection("servers").getSection(server).getString("address").split(":").length - 1]);
+ hover = new TextComponent("\n" + server.getAddress().getPort());
}
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
@@ -291,7 +296,7 @@ public class BungeeChat {
}
if (i == 0) sender.sendMessage(" " + plugin.api.getLang("SubServers", "Command.List.Empty"));
else ((Player) sender).spigot().sendMessage(msg);
- if (data.getSection("proxies").getKeys().size() > 0) {
+ if (proxies.keySet().size() > 0) {
sender.sendMessage(plugin.api.getLang("SubServers", "Command.List.Proxy-Header"));
msg = new TextComponent(" ");
List hoverm = new LinkedList();
@@ -300,55 +305,64 @@ public class BungeeChat {
message.setColor(ChatColor.GRAY);
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
- if (data.getKeys().contains("master-proxy")) {
- hover = new TextComponent('\n' + data.getRawString("master-proxy"));
+ if (proxymaster != null) {
+ hover = new TextComponent('\n' + proxymaster.getName());
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
+ hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Master"));
+ hoverm.add(hover);
+ hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Player-Count").replace("$int$", new DecimalFormat("#,###").format(proxymaster.getPlayers().size())));
+ hoverm.add(hover);
+ } else {
+ hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Master"));
+ hoverm.add(hover);
}
- hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Master"));
- hoverm.add(hover);
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverm.toArray(new TextComponent[hoverm.size()])));
msg.addExtra(message);
- for (String proxy : data.getSection("proxies").getKeys()) {
+ for (Proxy proxy : proxies.values()) {
hoverm = new LinkedList();
- message = new TextComponent(data.getSection("proxies").getSection(proxy).getString("display"));
- hover = new TextComponent(data.getSection("proxies").getSection(proxy).getString("display"));
- if (data.getSection("proxies").getSection(proxy).getKeys().contains("subdata") && data.getSection("proxies").getSection(proxy).getBoolean("redis")) {
+ message = new TextComponent(proxy.getDisplayName());
+ hover = new TextComponent(proxy.getDisplayName());
+ if (proxy.getSubData() != null && proxy.isRedis()) {
message.setColor(ChatColor.GREEN);
hover.setColor(ChatColor.GREEN);
- if (!proxy.equals(data.getSection("proxies").getSection(proxy).getString("display"))) {
+ if (!proxy.getName().equals(proxy.getDisplayName())) {
hoverm.add(hover);
- hover = new TextComponent('\n' + proxy);
+ hover = new TextComponent('\n' + proxy.getName());
hover.setColor(ChatColor.GRAY);
}
- } else if (data.getSection("proxies").getSection(proxy).getKeys().contains("subdata")) {
+ hoverm.add(hover);
+ hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Player-Count").replace("$int$", new DecimalFormat("#,###").format(proxy.getPlayers().size())));
+ } else if (proxy.getSubData() != null) {
message.setColor(ChatColor.AQUA);
hover.setColor(ChatColor.AQUA);
- if (!proxy.equals(data.getSection("proxies").getSection(proxy).getString("display"))) {
+ if (!proxy.getName().equals(proxy.getDisplayName())) {
hoverm.add(hover);
- hover = new TextComponent('\n' + proxy);
+ hover = new TextComponent('\n' + proxy.getName());
hover.setColor(ChatColor.GRAY);
}
- if (data.getKeys().contains("master-proxy")) {
+ if (proxymaster != null) {
hoverm.add(hover);
hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-SubData"));
}
- } else if (data.getSection("proxies").getSection(proxy).getBoolean("redis")) {
+ } else if (proxy.isRedis()) {
message.setColor(ChatColor.WHITE);
hover.setColor(ChatColor.WHITE);
hoverm.add(hover);
- if (!proxy.equals(data.getSection("proxies").getSection(proxy).getString("display"))) {
- hover = new TextComponent('\n' + proxy);
+ if (!proxy.getName().equals(proxy.getDisplayName())) {
+ hover = new TextComponent('\n' + proxy.getName());
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Redis"));
+ hoverm.add(hover);
+ hover = new TextComponent('\n' + plugin.api.getLang("SubServers", "Interface.Proxy-Menu.Proxy-Player-Count").replace("$int$", new DecimalFormat("#,###").format(proxy.getPlayers().size())));
} else {
message.setColor(ChatColor.RED);
hover.setColor(ChatColor.RED);
hoverm.add(hover);
- if (!proxy.equals(data.getSection("proxies").getSection(proxy).getString("display"))) {
- hover = new TextComponent('\n' + proxy);
+ if (!proxy.getName().equals(proxy.getDisplayName())) {
+ hover = new TextComponent('\n' + proxy.getName());
hover.setColor(ChatColor.GRAY);
hoverm.add(hover);
}
@@ -361,6 +375,6 @@ public class BungeeChat {
}
((Player) sender).spigot().sendMessage(msg);
}
- }));
+ })))));
}
}
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
index 1d638608..4d58b896 100644
--- 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
@@ -3,7 +3,7 @@ package net.ME1312.SubServers.Client.Bukkit.Network.API;
import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLValue;
import net.ME1312.SubServers.Client.Bukkit.Library.Util;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerList;
+import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadHostInfo;
import net.ME1312.SubServers.Client.Bukkit.SubAPI;
import java.net.InetAddress;
@@ -46,7 +46,7 @@ public class Host {
*/
public void refresh() {
String name = getName();
- SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadServerList(name, null, data -> load(data.getSection("hosts").getSection(name))));
+ SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadHostInfo(name, data -> load(data.getSection("hosts").getSection(name))));
}
/**
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
index a8eff724..7b82af7a 100644
--- 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
@@ -4,7 +4,7 @@ import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLValue;
import net.ME1312.SubServers.Client.Bukkit.Library.NamedContainer;
import net.ME1312.SubServers.Client.Bukkit.Library.Util;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadNetworkList;
+import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadProxyInfo;
import net.ME1312.SubServers.Client.Bukkit.SubAPI;
import java.util.*;
@@ -37,20 +37,7 @@ public class Proxy {
*/
public void refresh() {
String name = getName();
- SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadNetworkList(data -> {
- YAMLSection raw = null;
- for (String client : data.getSection("clients").getKeys()) {
- if (data.getSection("clients").getSection(client).getKeys().size() > 0 && data.getSection("clients").getSection(client).getRawString("type", "").equals("Proxy")) {
- if (data.getSection("clients").getSection(client).getRawString("name").equals(name)) {
- raw = data.getSection("clients").getSection(client);
- load(raw);
- break;
- }
- }
- }
-
- if (raw == null) throw new IllegalStateException("Could not find proxy with name: " + name);
- }));
+ SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadProxyInfo(name, data -> load(data.getSection("proxies").getSection(name))));
}
/**
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
index 64f8a9d1..ea999695 100644
--- 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
@@ -2,7 +2,7 @@ package net.ME1312.SubServers.Client.Bukkit.Network.API;
import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
import net.ME1312.SubServers.Client.Bukkit.Library.NamedContainer;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerList;
+import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerInfo;
import net.ME1312.SubServers.Client.Bukkit.SubAPI;
import java.net.InetSocketAddress;
@@ -36,7 +36,7 @@ public class Server {
*/
public void refresh() {
String name = getName();
- SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadServerList(null, null, data -> load(data.getSection("servers").getSection(name))));
+ SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadServerInfo(name, data -> load(data.getSection("servers").getSection(name))));
}
/**
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
index 8bb5b8e0..18d8e6f0 100644
--- 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
@@ -3,10 +3,7 @@ package net.ME1312.SubServers.Client.Bukkit.Network.API;
import net.ME1312.SubServers.Client.Bukkit.Library.Callback;
import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
import net.ME1312.SubServers.Client.Bukkit.Library.Util;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketCommandServer;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerList;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketStartServer;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketStopServer;
+import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*;
import net.ME1312.SubServers.Client.Bukkit.SubAPI;
import java.lang.reflect.InvocationTargetException;
@@ -40,15 +37,6 @@ public class SubServer extends Server {
return obj instanceof SubServer && super.equals(obj);
}
- /**
- * Download a new copy of the data from SubData
- */
- @Override
- public void refresh() {
- String name = getName();
- SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadServerList(raw.getRawString("host"), null, data -> load(data.getSection("hosts").getSection(raw.getRawString("host")).getSection("servers").getSection(name))));
- }
-
/**
* Starts the Server
*
@@ -261,11 +249,11 @@ public class SubServer extends Server {
}
};
- if (host == null) {
- SubAPI.getInstance().getSubDataNetwork().sendPacket(new PacketDownloadServerList(raw.getRawString("host"), null, data -> {
- host = new Host(data.getSection("hosts").getSection(raw.getRawString("host")));
+ if (host == null || !host.getName().equalsIgnoreCase(raw.getRawString("host"))) {
+ SubAPI.getInstance().getHost(raw.getRawString("host"), host -> {
+ this.host = host;
run.run();
- }));
+ });
} else {
run.run();
}
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
index caf54286..afca816b 100644
--- 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
@@ -97,6 +97,6 @@ public class PacketCreateServer implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
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
new file mode 100644
index 00000000..dd6c22d9
--- /dev/null
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadGroupInfo.java
@@ -0,0 +1,58 @@
+package net.ME1312.SubServers.Client.Bukkit.Network.Packet;
+
+import net.ME1312.SubServers.Client.Bukkit.Library.Callback;
+import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
+import net.ME1312.SubServers.Client.Bukkit.Library.Util;
+import net.ME1312.SubServers.Client.Bukkit.Library.Version.Version;
+import net.ME1312.SubServers.Client.Bukkit.Network.PacketIn;
+import net.ME1312.SubServers.Client.Bukkit.Network.PacketOut;
+
+import java.util.HashMap;
+import java.util.UUID;
+
+/**
+ * Download Group Info Packet
+ */
+public class PacketDownloadGroupInfo implements PacketIn, PacketOut {
+ private static HashMap[]> callbacks = new HashMap[]>();
+ private String group;
+ private String id;
+
+ /**
+ * New PacketDownloadGroupInfo (In)
+ */
+ public PacketDownloadGroupInfo() {}
+
+ /**
+ * New PacketDownloadGroupInfo (Out)
+ *
+ * @param group Group name (or null for all)
+ * @param callback Callbacks
+ */
+ @SafeVarargs
+ public PacketDownloadGroupInfo(String group, Callback... callback) {
+ if (Util.isNull((Object) callback)) throw new NullPointerException();
+ this.group = group;
+ this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
+ callbacks.put(id, callback);
+ }
+
+ @Override
+ public YAMLSection generate() {
+ YAMLSection json = new YAMLSection();
+ json.set("id", id);
+ json.set("group", group);
+ return json;
+ }
+
+ @Override
+ public void execute(YAMLSection data) {
+ for (Callback callback : callbacks.get(data.getRawString("id"))) callback.run(data);
+ callbacks.remove(data.getRawString("id"));
+ }
+
+ @Override
+ public Version getVersion() {
+ return new Version("2.13b");
+ }
+}
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
index b7e421cf..d0b14d51 100644
--- 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
@@ -26,12 +26,12 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
/**
* New PacketDownloadHostInfo (Out)
*
- * @param host Host Name
+ * @param host Host name (or null for all)
* @param callback Callbacks
*/
@SafeVarargs
public PacketDownloadHostInfo(String host, Callback... callback) {
- if (Util.isNull(host, callback)) throw new NullPointerException();
+ if (Util.isNull((Object) callback)) throw new NullPointerException();
this.host = host;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
@@ -39,10 +39,10 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
@Override
public YAMLSection generate() {
- YAMLSection data = new YAMLSection();
- data.set("id", id);
- data.set("host", host);
- return data;
+ YAMLSection json = new YAMLSection();
+ json.set("id", id);
+ json.set("host", host);
+ return json;
}
@Override
@@ -53,6 +53,6 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerList.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java
similarity index 68%
rename from SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerList.java
rename to SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java
index d7732c99..f64ab841 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerList.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadPlatformInfo.java
@@ -11,31 +11,19 @@ import java.util.HashMap;
import java.util.UUID;
/**
- * Download Server List Packet
+ * Download Proxy Info Packet
*/
-public class PacketDownloadServerList implements PacketIn, PacketOut {
+public class PacketDownloadPlatformInfo implements PacketIn, PacketOut {
private static HashMap[]> callbacks = new HashMap[]>();
- private String host;
- private String group;
private String id;
-
/**
- * New PacketDownloadServerList (In)
- */
- public PacketDownloadServerList() {}
-
- /**
- * New PacketDownloadServerList (Out)
+ * New PacketDownloadPlatformInfo
*
- * @param host Host name (or null for all)
- * @param group Group name (or null for all)
* @param callback Callbacks
*/
@SafeVarargs
- public PacketDownloadServerList(String host, String group, Callback... callback) {
+ public PacketDownloadPlatformInfo(Callback... callback) {
if (Util.isNull((Object) callback)) throw new NullPointerException();
- this.host = host;
- this.group = group;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
}
@@ -44,8 +32,6 @@ public class PacketDownloadServerList implements PacketIn, PacketOut {
public YAMLSection generate() {
YAMLSection data = new YAMLSection();
data.set("id", id);
- if (host != null) data.set("host", host);
- if (group != null) data.set("group", group);
return data;
}
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java
index 014ce513..76198a79 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadProxyInfo.java
@@ -15,24 +15,34 @@ import java.util.UUID;
*/
public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
private static HashMap[]> callbacks = new HashMap[]>();
+ private String proxy;
private String id;
+
/**
- * New PacketDownloadProxyInfo
+ * New PacketDownloadProxyInfo (In)
+ */
+ public PacketDownloadProxyInfo() {}
+
+ /**
+ * New PacketDownloadProxyInfo (Out)
*
+ * @param proxy Proxy name (or null for all)
* @param callback Callbacks
*/
@SafeVarargs
- public PacketDownloadProxyInfo(Callback... callback) {
+ public PacketDownloadProxyInfo(String proxy, Callback... callback) {
if (Util.isNull((Object) callback)) throw new NullPointerException();
+ this.proxy = proxy;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
}
@Override
public YAMLSection generate() {
- YAMLSection data = new YAMLSection();
- data.set("id", id);
- return data;
+ YAMLSection json = new YAMLSection();
+ json.set("id", id);
+ json.set("proxy", proxy);
+ return json;
}
@Override
@@ -43,6 +53,6 @@ public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java
index b66ed4c8..74f91c6a 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketDownloadServerInfo.java
@@ -26,12 +26,12 @@ public class PacketDownloadServerInfo implements PacketIn, PacketOut {
/**
* New PacketDownloadServerInfo (Out)
*
- * @param server Server name
+ * @param server Server name (or null for all)
* @param callback Callbacks
*/
@SafeVarargs
public PacketDownloadServerInfo(String server, Callback... callback) {
- if (Util.isNull(server, callback)) throw new NullPointerException();
+ if (Util.isNull((Object) callback)) throw new NullPointerException();
this.server = server;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
@@ -53,6 +53,6 @@ public class PacketDownloadServerInfo implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
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
index c25fec4e..bc48dead 100644
--- 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
@@ -57,6 +57,6 @@ public class PacketStartServer implements PacketIn, PacketOut {
@Override
public Version getVersion() {
- return new Version("2.11.0a");
+ return new Version("2.13b");
}
}
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.java
index 2d229983..d9c44e01 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.java
@@ -96,13 +96,14 @@ public final class SubDataClient {
registerPacket(new PacketAuthorization(plugin), "SubData", "Authorization");
registerPacket(new PacketCommandServer(), "SubServers", "CommandServer");
registerPacket(new PacketCreateServer(), "SubServers", "CreateServer");
+ registerPacket(new PacketDownloadGroupInfo(), "SubServers", "DownloadGroupInfo");
registerPacket(new PacketDownloadHostInfo(), "SubServers", "DownloadHostInfo");
registerPacket(new PacketDownloadLang(plugin), "SubServers", "DownloadLang");
registerPacket(new PacketDownloadNetworkList(), "SubServers", "DownloadNetworkList");
+ registerPacket(new PacketDownloadPlatformInfo(), "SubServers", "DownloadPlatformInfo");
registerPacket(new PacketDownloadPlayerList(), "SubServers", "DownloadPlayerList");
registerPacket(new PacketDownloadProxyInfo(), "SubServers", "DownloadProxyInfo");
registerPacket(new PacketDownloadServerInfo(), "SubServers", "DownloadServerInfo");
- registerPacket(new PacketDownloadServerList(), "SubServers", "DownloadServerList");
registerPacket(new PacketInRunEvent(plugin), "SubServers", "RunEvent");
registerPacket(new PacketInReload(plugin), "SubServers", "Reload");
registerPacket(new PacketInReset(), "SubServers", "Reset");
@@ -113,13 +114,14 @@ public final class SubDataClient {
registerPacket(PacketAuthorization.class, "SubData", "Authorization");
registerPacket(PacketCommandServer.class, "SubServers", "CommandServer");
registerPacket(PacketCreateServer.class, "SubServers", "CreateServer");
+ registerPacket(PacketDownloadGroupInfo.class, "SubServers", "DownloadGroupInfo");
registerPacket(PacketDownloadHostInfo.class, "SubServers", "DownloadHostInfo");
registerPacket(PacketDownloadLang.class, "SubServers", "DownloadLang");
registerPacket(PacketDownloadNetworkList.class, "SubServers", "DownloadNetworkList");
+ registerPacket(PacketDownloadPlatformInfo.class, "SubServers", "DownloadPlatformInfo");
registerPacket(PacketDownloadPlayerList.class, "SubServers", "DownloadPlayerList");
registerPacket(PacketDownloadProxyInfo.class, "SubServers", "DownloadProxyInfo");
registerPacket(PacketDownloadServerInfo.class, "SubServers", "DownloadServerInfo");
- registerPacket(PacketDownloadServerList.class, "SubServers", "DownloadServerList");
registerPacket(PacketLinkServer.class, "SubServers", "LinkServer");
registerPacket(PacketStartServer.class, "SubServers", "StartServer");
registerPacket(PacketStopServer.class, "SubServers", "StopServer");
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 41d13694..0924610a 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
@@ -9,9 +9,7 @@ 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.Bukkit.Network.Packet.PacketDownloadNetworkList;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadPlayerList;
-import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerList;
+import net.ME1312.SubServers.Client.Bukkit.Network.Packet.*;
import net.ME1312.SubServers.Client.Bukkit.Network.SubDataClient;
import org.bukkit.Bukkit;
@@ -69,7 +67,7 @@ public final class SubAPI {
public void getHosts(Callback