diff --git a/Artifacts/SubServers.Bungee.jar b/Artifacts/SubServers.Bungee.jar
index 1a7858c6..20318c24 100644
Binary files a/Artifacts/SubServers.Bungee.jar and b/Artifacts/SubServers.Bungee.jar differ
diff --git a/Artifacts/SubServers.Client.Bukkit.jar b/Artifacts/SubServers.Client.Bukkit.jar
index 944acf3c..c0b41760 100644
Binary files a/Artifacts/SubServers.Client.Bukkit.jar and b/Artifacts/SubServers.Client.Bukkit.jar differ
diff --git a/Artifacts/SubServers.Host.jar b/Artifacts/SubServers.Host.jar
index 381a294e..00247925 100644
Binary files a/Artifacts/SubServers.Host.jar and b/Artifacts/SubServers.Host.jar differ
diff --git a/Javadoc/SubServers.Bungee/index-all.html b/Javadoc/SubServers.Bungee/index-all.html
index 6d9b3f57..c4db9247 100644
--- a/Javadoc/SubServers.Bungee/index-all.html
+++ b/Javadoc/SubServers.Bungee/index-all.html
@@ -414,10 +414,20 @@
Converts Config Contents to JSON
diff --git a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html
index 288cf9d2..afd59a1b 100644
--- a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html
+++ b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html
@@ -209,7 +209,7 @@ extends
java.util.LinkedList<SubServer.LoggedCommand> |
getCommandHistory()
-Gets all the commands that were sent to this SubServer successfully
+Gets all the commands that were sent to this Server successfully
|
@@ -338,7 +338,7 @@ extends SubServer
-command, edit, getFullPath, start, stop, terminate, toString
+command, edit, getCurrentIncompatibilities, getFullPath, getIncompatibilities, isCompatible, start, stop, terminate, toggleCompatibility, toString
@@ -340,7 +340,7 @@ extends SubServer
-command, edit, getFullPath, start, stop, terminate, toString
+command, edit, getCurrentIncompatibilities, getFullPath, getIncompatibilities, isCompatible, start, stop, terminate, toggleCompatibility, toString
+java.util.List<SubServer> |
+getCurrentIncompatibilities()
+Get incompatibility issues this server currently has
+ |
+
+
abstract Executable |
getExecutable()
Get the Server's Executable String
|
-
+
java.lang.String |
getFullPath()
Get the Full Server Directory Path
|
-
+
abstract Host |
getHost()
Grabs the Host of the Server
|
-
+
+java.util.List<SubServer> |
+getIncompatibilities()
+Get all listed incompatibilities for this Server
+ |
+
+
abstract SubLogger |
getLogger()
Get Process Logger
|
-
+
abstract java.lang.String |
getPath()
Get the Server Directory Path
|
-
+
abstract java.lang.String |
getStopCommand()
Grab the Command to Stop the Server
|
-
+
+boolean |
+isCompatible(SubServer server)
+Checks if a Server is compatible
+ |
+
+
abstract boolean |
isEnabled()
If the Server is Enabled
|
-
+
abstract boolean |
isLogging()
If the Server is Logging
|
-
+
abstract boolean |
isRunning()
If the Server is Running
|
-
+
abstract boolean |
isTemporary()
If the Server is Temporary
|
-
+
abstract void |
setAutoRestart(boolean value)
Set if the Server will Auto Restart on unexpected shutdowns
|
-
+
abstract void |
setEnabled(boolean value)
Set if the Server is Enabled
|
-
+
abstract void |
setLogging(boolean value)
Set if the Server is Logging
|
-
+
abstract void |
setStopCommand(java.lang.String value)
Set the Command that Stops the Server
|
-
+
abstract void |
setTemporary(boolean value)
Set If the Server is Temporary (will start server if not running)
|
-
+
boolean |
start()
Starts the Server
|
-
+
abstract boolean |
start(java.util.UUID player)
Starts the Server
|
-
+
boolean |
stop()
Stops the Server
|
-
+
abstract boolean |
stop(java.util.UUID player)
Stops the Server
|
-
+
boolean |
terminate()
Terminates the Server
|
-
+
abstract boolean |
terminate(java.util.UUID player)
Terminates the Server
|
-
+
+void |
+toggleCompatibility(SubServer... server)
+Toggles compatibility with other Servers
+ |
+
+
java.lang.String |
toString() |
-
+
abstract void |
waitFor()
Waits for the Server to Stop
|
-
+
abstract boolean |
willAutoRestart()
If the Server will Auto Restart on unexpected shutdowns
@@ -709,7 +733,7 @@ extends
getCommandHistory
public abstract java.util.LinkedList<SubServer.LoggedCommand> getCommandHistory()
-Gets all the commands that were sent to this SubServer successfully
+Gets all the commands that were sent to this Server successfully
- Returns:
- Command History
@@ -814,6 +838,64 @@ extends
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/Container.html b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/Container.html
index 8c070036..18f0769c 100644
--- a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/Container.html
+++ b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/Container.html
@@ -17,7 +17,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10};
+var methods = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -156,12 +156,16 @@ extends java.lang.Object
Method and Description |
|
+boolean |
+equals(java.lang.Object object) |
+
+
V |
get()
Grabs the Object
|
-
+
void |
set(V value)
Overwrite the Object
@@ -173,7 +177,7 @@ extends java.lang.Object
Methods inherited from class java.lang.Object
-equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
@@ -232,7 +236,7 @@ extends java.lang.Object
-
+
-
set
public void set(V value)
@@ -243,6 +247,19 @@ extends java.lang.Object
+
+
+
+
diff --git a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/NamedContainer.html b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/NamedContainer.html
index 6fa797a4..b9b6d9e7 100644
--- a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/NamedContainer.html
+++ b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/Library/NamedContainer.html
@@ -17,7 +17,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10};
+var methods = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -159,12 +159,16 @@ extends Method and Description
|
+boolean |
+equals(java.lang.Object object) |
+
+
T |
name()
Gets the name of the Container
|
-
+
void |
rename(T name)
Renames the Container
@@ -183,7 +187,7 @@ extends
- |
+
+boolean |
equals(Version version)
See if Versions are Equal
|
-
+
static boolean |
-isEqual(Version ver1,
- Version ver2)
+ | equals(Version ver1,
+ Version ver2)
See if Versions are Equal
|
-
+
java.lang.String |
toString() |
@@ -197,7 +201,7 @@ implements java.io.Serializable, java.lang.Comparable<
+
+
+
+
@@ -293,14 +310,14 @@ implements java.io.Serializable, java.lang.Comparable<
+
-
-
isEqual
-public static boolean isEqual(Version ver1,
- Version ver2)
+equals
+public static boolean equals(Version ver1,
+ Version ver2)
See if Versions are Equal
- Parameters:
diff --git a/SubServers.Bungee/META-INF/MANIFEST.MF b/SubServers.Bungee/META-INF/MANIFEST.MF
index 70b3494e..4b2669f9 100644
--- a/SubServers.Bungee/META-INF/MANIFEST.MF
+++ b/SubServers.Bungee/META-INF/MANIFEST.MF
@@ -2,4 +2,4 @@ Manifest-Version: 1.0
Class-Path: BungeeCord.jar
Main-Class: net.ME1312.SubServers.Bungee.Launch
Implementation-Version: 2.12b
-Specification-Version: 1
+Specification-Version: 2
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
index b49e1cab..a9b64342 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalHost.java
@@ -70,6 +70,7 @@ public class ExternalHost extends Host implements ClientHandler {
@Override
public void setSubData(Client client) {
this.client = new NamedContainer(false, client);
+ if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) client.setHandler(this);
}
protected void queue(PacketOut... packet) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
index 4c5b090d..f3a0847e 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.java
@@ -69,7 +69,7 @@ public class ExternalSubServer extends SubServer {
@Override
public boolean start(UUID player) {
- if (isEnabled() && !running) {
+ if (isEnabled() && !running && getCurrentIncompatibilities().size() == 0) {
SubStartEvent event = new SubStartEvent(player, this);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
index d1eb02d9..4d18fd2e 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Host.java
@@ -395,7 +395,7 @@ public abstract class Host implements ExtraDataHandler {
hinfo.put("display", getDisplayName());
JSONObject servers = new JSONObject();
for (SubServer server : getSubServers().values()) {
- servers.put(server.getName(), server.toString());
+ servers.put(server.getName(), new JSONObject(server.toString()));
}
hinfo.put("servers", servers);
if (this instanceof ClientHandler && ((ClientHandler) this).getSubData() != null) hinfo.put("subdata", ((ClientHandler) this).getSubData().getAddress().toString());
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
index b87cac6c..820181a1 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.java
@@ -17,7 +17,9 @@ import net.ME1312.SubServers.Bungee.SubPlugin;
import org.json.JSONObject;
import java.io.*;
+import java.util.ArrayList;
import java.util.LinkedList;
+import java.util.List;
import java.util.UUID;
import java.util.jar.JarFile;
@@ -145,7 +147,7 @@ public class InternalSubServer extends SubServer {
@Override
public boolean start(UUID player) {
- if (isEnabled() && !(thread != null && thread.isAlive())) {
+ if (isEnabled() && !(thread != null && thread.isAlive()) && getCurrentIncompatibilities().size() == 0) {
SubStartEvent event = new SubStartEvent(player, this);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
index 64ed8cad..a2b230e3 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
@@ -42,6 +42,7 @@ public class Server extends BungeeServerInfo implements ClientHandler, ExtraData
@Override
public void setSubData(Client client) {
this.client = client;
+ if (client != null && (client.getHandler() == null || !equals(client.getHandler()))) client.setHandler(this);
}
/**
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
index 1d2bdc39..6877ca1e 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/SubServer.java
@@ -2,21 +2,22 @@ package net.ME1312.SubServers.Bungee.Host;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
+import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.Util;
+import net.ME1312.SubServers.Bungee.SubAPI;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.json.JSONObject;
import java.io.File;
import java.net.InetSocketAddress;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.UUID;
+import java.util.*;
/**
* SubServer Layout Class
*/
public abstract class SubServer extends Server {
+ private List> incompatibilities = new ArrayList>();
+
/**
* Command Storage Class
*/
@@ -250,7 +251,7 @@ public abstract class SubServer extends Server {
public abstract SubLogger getLogger();
/**
- * Gets all the commands that were sent to this SubServer successfully
+ * Gets all the commands that were sent to this Server successfully
*
* @return Command History
*/
@@ -307,6 +308,70 @@ public abstract class SubServer extends Server {
*/
public abstract void setAutoRestart(boolean value);
+ /**
+ * Toggles compatibility with other Servers
+ *
+ * @param server SubServers to toggle
+ */
+ public void toggleCompatibility(SubServer... server) {
+ for (SubServer s : server) {
+ if (!equals(s)) {
+ NamedContainer info = new NamedContainer(s.getHost().getName(), s.getName());
+ if (isCompatible(s)) {
+ incompatibilities.add(info);
+ if (s.isCompatible(this)) toggleCompatibility(this);
+ } else {
+ incompatibilities.remove(info);
+ if (!s.isCompatible(this)) toggleCompatibility(this);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks if a Server is compatible
+ *
+ * @param server Server to check
+ * @return Compatible Status
+ */
+ public boolean isCompatible(SubServer server) {
+ return !incompatibilities.contains(new NamedContainer(server.getHost().getName(), server.getName()));
+ }
+
+ /**
+ * Get all listed incompatibilities for this Server
+ *
+ * @return Incompatibility List
+ */
+ public List getIncompatibilities() {
+ List servers = new ArrayList();
+ List> temp = new ArrayList>();
+ temp.addAll(incompatibilities);
+ for (NamedContainer info : temp) {
+ try {
+ SubServer server = SubAPI.getInstance().getHost(info.name()).getSubServer(info.get());
+ if (server == null) throw new NullPointerException();
+ servers.add(server);
+ } catch (Throwable e) {
+ incompatibilities.remove(info);
+ }
+ }
+ return servers;
+ }
+
+ /**
+ * Get incompatibility issues this server currently has
+ *
+ * @return Current Incompatibility List
+ */
+ public List getCurrentIncompatibilities() {
+ List servers = new ArrayList();
+ for (SubServer server : getIncompatibilities()) {
+ if (server.isRunning()) servers.add(server);
+ }
+ return servers;
+ }
+
/**
* If the Server is Temporary
*
@@ -327,6 +392,9 @@ public abstract class SubServer extends Server {
sinfo.put("type", "SubServer");
sinfo.put("enabled", getHost().isEnabled() && isEnabled());
sinfo.put("running", isRunning());
+ List incompatible = new ArrayList();
+ for (SubServer server : getCurrentIncompatibilities()) incompatible.add(server.getName());
+ sinfo.put("incompatible", incompatible);
sinfo.put("temp", isTemporary());
return sinfo.toString();
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
index 71abe44a..fe46867d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
@@ -55,7 +55,7 @@ public final class Launch {
} else {
System.out.println("");
System.out.println("*******************************************");
- System.out.println("*** Warning: this build is Unofficial ***");
+ System.out.println("*** Warning: this build is unofficial ***");
System.out.println("*** ***");
System.out.println("*** Please report all issues to ME1312, ***");
System.out.println("*** NOT the Spigot Team. Thank You! ***");
@@ -74,7 +74,7 @@ public final class Launch {
}
} else throw new Exception();
} catch (Exception e) {
- System.out.println("*** Problem checking BungeeCord Version ***");
+ System.out.println("*** Problem checking BungeeCord version ***");
System.out.println("*** BungeeCord.jar could be outdated. ***");
System.out.println("*** ***");
System.out.println("*** Errors may arise on older versions! ***");
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Container.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Container.java
index 07d7e1e5..652ede63 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Container.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Container.java
@@ -34,4 +34,17 @@ public class Container {
public void set(V value) {
obj = value;
}
+
+ @Override
+ public boolean equals(Object object) {
+ if (object instanceof Container) {
+ if (obj == null || ((Container) object).get() == null) {
+ return obj == ((Container) object).get();
+ } else {
+ return obj.equals(((Container) object).get());
+ }
+ } else {
+ return super.equals(object);
+ }
+ }
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/config.yml b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/config.yml
index 2294b9a2..fd2d853b 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/config.yml
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/config.yml
@@ -28,4 +28,5 @@ Servers:
Run-On-Launch: false
Auto-Restart: false
Restricted: false
+ Incompatible: []
Hidden: false
\ No newline at end of file
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 13703e3d..2506399e 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
@@ -1,4 +1,4 @@
-Version: '2.11.2m+'
+Version: '2.12b+'
Lang:
'Bungee.Server.Current': '&6You are currently connected to $str$'
'Bungee.Server.Available': '&6You may connect to the following servers at this time:'
@@ -35,6 +35,7 @@ Lang:
'Command.Start.Invalid': '&cSubServers \u00BB That Server is not a SubServer'
'Command.Start.Host-Disabled': '&cSubServers \u00BB That SubServer\u0027s Host is not enabled'
'Command.Start.Server-Disabled': '&cSubServers \u00BB That SubServer is not enabled'
+ 'Command.Start.Server-Incompatible': '&cSubServers \u00BB That SubServer cannot start while these server(s) are running: &4$str$'
'Command.Start.Running': '&cSubServers \u00BB That SubServer is already running'
'Command.Stop': '&aSubServers \u00BB Stopping SubServer'
'Command.Stop.Unknown': '&cSubServers \u00BB There is no server with that name'
@@ -109,6 +110,7 @@ Lang:
'Interface.SubServer-Menu.SubServer-External': '&7External Server'
'Interface.SubServer-Menu.SubServer-Temporary': '&9Temporary'
'Interface.SubServer-Menu.SubServer-Offline': '&6Offline'
+ 'Interface.SubServer-Menu.SubServer-Incompatible': '&4Incompatible with $str$'
'Interface.SubServer-Menu.SubServer-Disabled': '&4Disabled'
'Interface.SubServer-Menu.No-SubServers': '&c&oThere are No SubServers'
'Interface.SubServer-Menu.Host-Menu': '&b&lHost Menu'
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/NamedContainer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/NamedContainer.java
index 26081399..c02ce13c 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/NamedContainer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/NamedContainer.java
@@ -36,4 +36,17 @@ public class NamedContainer extends Container {
public void rename(T name) {
this.name = name;
}
+
+ @Override
+ public boolean equals(Object object) {
+ if (object instanceof NamedContainer) {
+ if (name == null || ((NamedContainer) object).name() == null) {
+ return name == ((NamedContainer) object).name() && super.equals(object);
+ } else {
+ return name.equals(((NamedContainer) object).name()) && super.equals(object);
+ }
+ } else {
+ return super.equals(object);
+ }
+ }
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Version/Version.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Version/Version.java
index 21ee48af..1af8c5f0 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Version/Version.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Version/Version.java
@@ -44,6 +44,15 @@ public class Version implements Serializable, Comparable {
return string;
}
+ @Override
+ public boolean equals(Object object) {
+ if (object instanceof Version) {
+ return equals((Version) object);
+ } else {
+ return super.equals(object);
+ }
+ }
+
/**
* See if Versions are Equal
*
@@ -140,7 +149,7 @@ public class Version implements Serializable, Comparable {
* @param ver2 Version to Compare
* @return
*/
- public static boolean isEqual(Version ver1, Version ver2) {
+ public static boolean equals(Version ver1, Version ver2) {
return compare(ver1, ver2) == 0;
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Client.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Client.java
index ab9f019e..752366b8 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Client.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Client.java
@@ -200,9 +200,9 @@ public class Client {
* @param obj Handler
*/
public void setHandler(ClientHandler obj) {
- if (handler != null) handler.setSubData(null);
+ if (handler != null && handler.getSubData() != null && equals(handler.getSubData())) handler.setSubData(null);
handler = obj;
- handler.setSubData(this);
+ if (handler != null && (handler.getSubData() == null || !equals(handler.getSubData()))) handler.setSubData(this);
}
/**
@@ -212,8 +212,7 @@ public class Client {
*/
public void disconnect() throws IOException {
if (!socket.isClosed()) getConnection().close();
- if (handler != null) handler.setSubData(null);
+ if (handler != null && handler.getSubData() != null && equals(handler.getSubData())) setHandler(null);
handler = null;
-
}
}
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 ca46ed98..35cad6dc 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
@@ -11,6 +11,9 @@ import net.ME1312.SubServers.Bungee.SubPlugin;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.json.JSONObject;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Download Server Info Packet
*/
@@ -60,6 +63,12 @@ public class PacketDownloadServerInfo implements PacketIn, PacketOut {
info.put("stop-cmd", ((SubServer) server).getStopCommand());
info.put("auto-run", plugin.config.get().getSection("Servers").getSection(server.getName()).getKeys().contains("Run-On-Launch") && plugin.config.get().getSection("Servers").getSection(server.getName()).getBoolean("Run-On-Launch"));
info.put("auto-restart", ((SubServer) server).willAutoRestart());
+ List incompatibleCurrent = new ArrayList();
+ List incompatible = new ArrayList();
+ for (SubServer server : ((SubServer) this.server).getCurrentIncompatibilities()) incompatibleCurrent.add(server.getName());
+ for (SubServer server : ((SubServer) this.server).getIncompatibilities()) incompatible.add(server.getName());
+ info.put("incompatible", incompatibleCurrent);
+ info.put("incompatible-list", incompatible);
info.put("temp", ((SubServer) server).isTemporary());
} if (server != null) {
info.put("name", server.getName());
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 77266f57..297b34f1 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
@@ -68,7 +68,14 @@ public class PacketStartServer implements PacketIn, PacketOut {
} else if (!((SubServer) servers.get(data.getString("server").toLowerCase())).isEnabled()) {
client.sendPacket(new PacketStartServer(5, "That SubServer is not enabled", (data.keySet().contains("id"))?data.getString("id"):null));
} else if (((SubServer) servers.get(data.getString("server").toLowerCase())).isRunning()) {
- client.sendPacket(new PacketStartServer(6, "That SubServer is already running", (data.keySet().contains("id"))?data.getString("id"):null));
+ client.sendPacket(new PacketStartServer(6, "That SubServer is already running", (data.keySet().contains("id")) ? data.getString("id") : null));
+ } else if (((SubServer) servers.get(data.getString("server").toLowerCase())).getCurrentIncompatibilities().size() != 0) {
+ String list = "";
+ for (SubServer server : ((SubServer) servers.get(data.getString("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.keySet().contains("id")) ? data.getString("id") : null));
} else {
if (((SubServer) servers.get(data.getString("server").toLowerCase())).start((data.keySet().contains("player"))?UUID.fromString(data.getString("player")):null)) {
client.sendPacket(new PacketStartServer(0, "Starting SubServer", (data.keySet().contains("id"))?data.getString("id"):null));
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
index a49f193b..226ccbc2 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
@@ -71,6 +71,13 @@ public final class SubCommand extends Command implements TabExecutor {
sender.sendMessage("SubServers > That SubServer is not enabled");
} else if (((SubServer) servers.get(args[1].toLowerCase())).isRunning()) {
sender.sendMessage("SubServers > That SubServer is already running");
+ } else if (((SubServer) servers.get(args[1].toLowerCase())).getCurrentIncompatibilities().size() != 0) {
+ String list = "";
+ for (SubServer server : ((SubServer) servers.get(args[1].toLowerCase())).getCurrentIncompatibilities()) {
+ if (list.length() != 0) list += ", ";
+ list += server.getName();
+ }
+ sender.sendMessages("That SubServer cannot start while these server(s) are running:", list);
} else {
((SubServer) servers.get(args[1].toLowerCase())).start();
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
index 5f6a0b2f..40f41d5c 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
@@ -81,7 +81,7 @@ public final class SubPlugin extends BungeeCord {
if (!(new UniversalFile(dir, "lang.yml").exists())) {
Util.copyFromJar(SubPlugin.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/lang.yml", new UniversalFile(dir, "lang.yml").getPath());
System.out.println("SubServers > Created ~/SubServers/lang.yml");
- } else if ((new Version((new YAMLConfig(new UniversalFile(dir, "lang.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
+ } else if ((new Version((new YAMLConfig(new UniversalFile(dir, "lang.yml"))).get().getString("Version", "0")).compareTo(new Version("2.12b+"))) != 0) {
Files.move(new UniversalFile(dir, "lang.yml").toPath(), new UniversalFile(dir, "lang.old" + Math.round(Math.random() * 100000) + ".yml").toPath());
Util.copyFromJar(SubPlugin.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/lang.yml", new UniversalFile(dir, "lang.yml").getPath());
System.out.println("SubServers > Updated ~/SubServers/lang.yml");
@@ -171,7 +171,6 @@ public final class SubPlugin extends BungeeCord {
p++;
legServers.put(name, new BungeeServerInfo(name, new InetSocketAddress(InetAddress.getByName(i + ".0.0.0"), p), "Some SubServer", false));
}
-
}
/**
@@ -208,6 +207,7 @@ public final class SubPlugin extends BungeeCord {
config.get().getSection("Hosts").getSection(name).getRawString("Git-Bash"));
this.hosts.put(name.toLowerCase(), host);
if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Display")) host.setDisplayName(config.get().getSection("Hosts").getSection(name).getString("Display"));
+ if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Extra")) for (String extra : config.get().getSection("Hosts").getSection(name).getSection("Extra").getKeys()) host.addExtra(extra, config.get().getSection("Hosts").getSection(name).getSection("Extra").getObject(extra));
SubDataServer.allowConnection(host.getAddress());
hosts++;
} catch (Exception e) {
@@ -224,6 +224,7 @@ public final class SubPlugin extends BungeeCord {
Integer.parseInt(bungee.get().getSection("servers").getSection(name).getRawString("address").split(":")[1]), bungee.get().getSection("servers").getSection(name).getColoredString("motd", '&'),
bungee.get().getSection("servers").getSection(name).getBoolean("hidden", false), bungee.get().getSection("servers").getSection(name).getBoolean("restricted"));
if (bungee.get().getSection("servers").getSection(name).getKeys().contains("display")) server.setDisplayName(bungee.get().getSection("servers").getSection(name).getString("display"));
+ if (bungee.get().getSection("servers").getSection(name).getKeys().contains("extra")) for (String extra : config.get().getSection("servers").getSection(name).getSection("extra").getKeys()) server.addExtra(extra, config.get().getSection("servers").getSection(name).getSection("extra").getObject(extra));
SubDataServer.allowConnection(server.getAddress().getAddress());
servers++;
} catch (Exception e) {
@@ -245,11 +246,18 @@ public final class SubPlugin extends BungeeCord {
config.get().getSection("Servers").getSection(name).getRawString("Directory"), new Executable(config.get().getSection("Servers").getSection(name).getRawString("Executable")), config.get().getSection("Servers").getSection(name).getRawString("Stop-Command"),
config.get().getSection("Servers").getSection(name).getBoolean("Run-On-Launch"), config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart"), config.get().getSection("Servers").getSection(name).getBoolean("Hidden"), config.get().getSection("Servers").getSection(name).getBoolean("Restricted"), false);
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Display")) server.setDisplayName(config.get().getSection("Servers").getSection(name).getString("Display"));
+ if (config.get().getSection("Servers").getSection(name).getKeys().contains("Extra")) for (String extra : config.get().getSection("Servers").getSection(name).getSection("Extra").getKeys()) server.addExtra(extra, config.get().getSection("Servers").getSection(name).getSection("Extra").getObject(extra));
subservers++;
} catch (Exception e) {
e.printStackTrace();
}
}
+ for (SubServer server : api.getSubServers().values()) {
+ for (String name : config.get().getSection("Servers").getSection(server.getName()).getRawStringList("Incompatible", new ArrayList<>())) {
+ SubServer other = api.getSubServer(name);
+ if (other != null && server.isCompatible(other)) server.toggleCompatibility(other);
+ }
+ }
running = true;
legServers.clear();
@@ -298,8 +306,8 @@ public final class SubPlugin extends BungeeCord {
public Map getServers() {
HashMap servers = new HashMap();
if (!running) {
- servers.putAll(super.getServers());
servers.putAll(legServers);
+ servers.putAll(super.getServers());
} else {
for (ServerInfo server : exServers.values()) servers.put(server.getName(), server);
for (Host host : this.hosts.values()) {
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 323eee4c..d5dacce0 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
@@ -772,7 +772,7 @@ public class InternalUIRenderer extends UIRenderer {
lore.add(ChatColor.GRAY + subserver);
lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Player-Count", '&').replace("$int$", new DecimalFormat("#,###").format(json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getJSONObject("players").keySet().size())));
blockMeta.setLore(lore);
- } else if (json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getBoolean("enabled")) {
+ } else if (json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getBoolean("enabled") && json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getJSONArray("incompatible").length() == 0) {
block = new ItemStack(Material.STAINED_GLASS_PANE, 1, offline);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.YELLOW + json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getString("display"));
@@ -788,7 +788,15 @@ public class InternalUIRenderer extends UIRenderer {
LinkedList lore = new LinkedList();
if (!subserver.equals(json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getString("display")))
lore.add(ChatColor.GRAY + subserver);
- lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
+ if (json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getJSONArray("incompatible").length() != 0) {
+ String list = "";
+ for (int ii = 0; ii < json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getJSONArray("incompatible").length(); ii++) {
+ if (list.length() != 0) list += ", ";
+ list += json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getJSONArray("incompatible").getString(ii);
+ }
+ lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Incompatible", '&').replace("$str$", list));
+ }
+ if (!json.getJSONObject("hosts").getJSONObject(hosts.get(subserver)).getJSONObject("servers").getJSONObject(subserver).getBoolean("enabled")) lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
@@ -934,7 +942,7 @@ public class InternalUIRenderer extends UIRenderer {
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Admin.Start", '&')));
blockMeta.setLore(Arrays.asList(plugin.lang.getSection("Lang").getColoredString("Interface.Generic.Invalid-Permission", '&').replace("$str$", "subservers.subserver.start." + subserver.toLowerCase())));
- } else if (!json.getJSONObject("server").getBoolean("enabled")) {
+ } else if (!json.getJSONObject("server").getBoolean("enabled") || json.getJSONObject("server").getJSONArray("incompatible").length() != 0) {
block = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Admin.Start", '&')));
@@ -984,7 +992,7 @@ public class InternalUIRenderer extends UIRenderer {
lore.add(ChatColor.GRAY + subserver);
lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Player-Count", '&').replace("$int$", new DecimalFormat("#,###").format(json.getJSONObject("server").getJSONObject("players").keySet().size())));
blockMeta.setLore(lore);
- } else if (json.getJSONObject("server").getBoolean("enabled")) {
+ } else if (json.getJSONObject("server").getBoolean("enabled") && json.getJSONObject("server").getJSONArray("incompatible").length() == 0) {
block = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.YELLOW + json.getJSONObject("server").getString("display"));
@@ -1000,7 +1008,15 @@ public class InternalUIRenderer extends UIRenderer {
LinkedList lore = new LinkedList();
if (!subserver.equals(json.getJSONObject("server").getString("display")))
lore.add(ChatColor.GRAY + subserver);
- lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
+ if (json.getJSONObject("server").getJSONArray("incompatible").length() != 0) {
+ String list = "";
+ for (int ii = 0; ii < json.getJSONObject("server").getJSONArray("incompatible").length(); ii++) {
+ if (list.length() != 0) list += ", ";
+ list += json.getJSONObject("server").getJSONArray("incompatible").getString(ii);
+ }
+ lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Incompatible", '&').replace("$str$", list));
+ }
+ if (!json.getJSONObject("server").getBoolean("enabled")) lore.add(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
blockMeta.setLore(lore);
}
block.setItemMeta(blockMeta);
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 e7dafc95..0d7a7138 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
@@ -121,7 +121,7 @@ public final class SubDataClient {
}
JSONObject json = new JSONObject(decoded);
for (PacketIn packet : decodePacket(json)) {
- Bukkit.getScheduler().runTask(plugin, () -> {
+ if (plugin.isEnabled()) Bukkit.getScheduler().runTask(plugin, () -> {
try {
packet.execute((json.keySet().contains("c")) ? json.getJSONObject("c") : null);
} catch (Throwable e) {
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
index 518db315..3b409486 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
@@ -123,7 +123,7 @@ public final class SubCommand implements CommandExecutor {
hoverm.add(hover);
}
hover = new net.md_5.bungee.api.chat.TextComponent(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Player-Count", '&').replace("$int$", new DecimalFormat("#,###").format(servers.get(server).getJSONObject("players").keySet().size())));
- } else if (servers.get(server).getBoolean("enabled")) {
+ } else if (servers.get(server).getBoolean("enabled") && servers.get(server).getJSONArray("incompatible").length() == 0) {
message.setColor(net.md_5.bungee.api.ChatColor.YELLOW);
hover.setColor(net.md_5.bungee.api.ChatColor.YELLOW);
hoverm.add(hover);
@@ -136,13 +136,24 @@ public final class SubCommand implements CommandExecutor {
} else {
message.setColor(net.md_5.bungee.api.ChatColor.RED);
hover.setColor(net.md_5.bungee.api.ChatColor.RED);
- hoverm.add(hover);
if (!server.equals(servers.get(server).getString("display"))) {
+ hoverm.add(hover);
hover = new net.md_5.bungee.api.chat.TextComponent(server + '\n');
hover.setColor(net.md_5.bungee.api.ChatColor.GRAY);
- hoverm.add(hover);
}
- hover = new net.md_5.bungee.api.chat.TextComponent(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
+ if (servers.get(server).getJSONArray("incompatible").length() != 0) {
+ hoverm.add(hover);
+ String list = "";
+ for (int ii = 0; ii < servers.get(server).getJSONArray("incompatible").length(); ii++) {
+ if (list.length() != 0) list += ", ";
+ list += servers.get(server).getJSONArray("incompatible").getString(ii);
+ }
+ hover = new net.md_5.bungee.api.chat.TextComponent(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Incompatible", '&').replace("$str$", list));
+ }
+ if (!servers.get(server).getBoolean("enabled")) {
+ hoverm.add(hover);
+ hover = new net.md_5.bungee.api.chat.TextComponent(plugin.lang.getSection("Lang").getColoredString("Interface.SubServer-Menu.SubServer-Disabled", '&'));
+ }
}
}
hoverm.add(hover);
@@ -215,6 +226,9 @@ public final class SubCommand implements CommandExecutor {
case 6:
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Start.Running", '&'));
break;
+ case 7:
+ sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Start.Server-Incompatible", '&').replace("$str$", json.getString("m").split(":\\s")[1]));
+ break;
case 0:
case 1:
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Start", '&'));
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubPlugin.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubPlugin.java
index 3cd2e981..5705a6be 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubPlugin.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubPlugin.java
@@ -27,7 +27,7 @@ public final class SubPlugin extends JavaPlugin {
public UIHandler gui = null;
public final Version version;
- public final Version bversion = new Version(1);
+ public final Version bversion = new Version(2);
public final SubAPI api = new SubAPI(this);
public SubPlugin() {
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java
index 862de9af..d6fcbcbc 100644
--- a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java
@@ -47,7 +47,7 @@ public final class ExHost {
public SubDataClient subdata = null;
public final Version version = new Version("2.12c");
- public final Version bversion = new Version(1);
+ public final Version bversion = new Version(2);
public final SubAPI api = new SubAPI(this);
private boolean running;
diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java b/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java
index 479a57a3..2caef163 100644
--- a/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java
+++ b/SubServers.Host/src/net/ME1312/SubServers/Host/SubCommand.java
@@ -89,6 +89,9 @@ public class SubCommand {
case 6:
host.log.message.println("That SubServer is already running");
break;
+ case 7:
+ host.log.message.println("That SubServer cannot start while these server(s) are running:", json.getString("m").split(":\\s")[1]);
+ break;
case 0:
case 1:
host.log.message.println("Server was started successfully");