diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java index fa57ef7e..69a7ee23 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java @@ -14,6 +14,7 @@ import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubServers.Bungee.Event.SubCreateEvent; import net.ME1312.SubServers.Bungee.Event.SubCreatedEvent; import net.ME1312.SubServers.Bungee.Host.*; +import net.ME1312.SubServers.Bungee.Host.SubServer.StopAction; import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExConfigureHost; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExCreateServer; @@ -212,8 +213,11 @@ public class ExternalSubCreator extends SubCreator { if (action != null) subserver.setStopAction(action); if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys()) subserver.addExtra(extra, server.getMap("Extra").getObject(extra)); - host.plugin.servers.get().getMap("Servers").set(name, server); - host.plugin.servers.save(); + + if (!(subserver.getStopAction() == StopAction.REMOVE_SERVER || subserver.getStopAction() == StopAction.RECYCLE_SERVER || subserver.getStopAction() == StopAction.DELETE_SERVER)) { + host.plugin.servers.get().getMap("Servers").set(name, server); + host.plugin.servers.save(); + } if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true)) subserver.start(); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java index b20dc9f6..0a52ca5f 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java @@ -15,6 +15,7 @@ import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubServers.Bungee.Event.SubCreateEvent; import net.ME1312.SubServers.Bungee.Event.SubCreatedEvent; import net.ME1312.SubServers.Bungee.Host.*; +import net.ME1312.SubServers.Bungee.Host.SubServer.StopAction; import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException; @@ -311,8 +312,11 @@ public class InternalSubCreator extends SubCreator { if (action != null) subserver.setStopAction(action); if (server.contains("Extra")) for (String extra : server.getMap("Extra").getKeys()) subserver.addExtra(extra, server.getMap("Extra").getObject(extra)); - host.plugin.servers.get().getMap("Servers").set(name, server); - host.plugin.servers.save(); + + if (!(subserver.getStopAction() == StopAction.REMOVE_SERVER || subserver.getStopAction() == StopAction.RECYCLE_SERVER || subserver.getStopAction() == StopAction.DELETE_SERVER)) { + host.plugin.servers.get().getMap("Servers").set(name, server); + host.plugin.servers.save(); + } if (update == null && template.getBuildOptions().getBoolean("Run-On-Finish", true)) subserver.start(); 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 index 927e86f0..308e76f6 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlatformInfo.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlatformInfo.java @@ -44,13 +44,18 @@ public class PacketDownloadPlatformInfo implements PacketObjectIn, Pack ObjectMap data = new ObjectMap(); if (tracker != null) data.set(0x0000, tracker); ObjectMap info = new ObjectMap(); + + ObjectMap subservers = new ObjectMap(); subservers.set("version", plugin.api.getWrapperVersion().toString()); if (plugin.api.getWrapperBuild() != null) subservers.set("build", plugin.api.getWrapperBuild().toString()); subservers.set("last-reload", plugin.resetDate); + subservers.set("proxies", plugin.api.getProxies().size()); subservers.set("hosts", plugin.api.getHosts().size()); subservers.set("subservers", plugin.api.getSubServers().size()); info.set("subservers", subservers); + + ObjectMap bungee = new ObjectMap(); bungee.set("version", plugin.api.getProxyVersion().toString()); bungee.set("disabled-cmds", plugin.getConfig().getDisabledCommands()); @@ -67,12 +72,16 @@ public class PacketDownloadPlatformInfo implements PacketObjectIn, Pack } bungee.set("listeners", listeners); info.set("bungee", bungee); + + ObjectMap minecraft = new ObjectMap(); LinkedList mcversions = new LinkedList(); for (Version version : plugin.api.getGameVersion()) mcversions.add(version.toString()); minecraft.set("version", mcversions); minecraft.set("players", plugin.api.getRemotePlayers().size()); info.set("minecraft", minecraft); + + ObjectMap system = new ObjectMap(); ObjectMap os = new ObjectMap(); os.set("name", System.getProperty("os.name")); @@ -82,6 +91,8 @@ public class PacketDownloadPlatformInfo implements PacketObjectIn, Pack java.set("version", System.getProperty("java.version")); system.set("java", java); info.set("system", system); + + data.set(0x0001, info); return data; } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubProxy.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubProxy.java index 78371583..382c9ef4 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubProxy.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubProxy.java @@ -734,6 +734,23 @@ public final class SubProxy extends BungeeCommon implements Listener { } } }, TimeUnit.SECONDS.toMillis(rpec_s), TimeUnit.SECONDS.toMillis(rpec_i)); + new Timer("SubServers.Bungee::Garbo_Collector").schedule(new TimerTask() { + @Override + public void run() { + long start = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + System.gc(); + Timer timer = new Timer("SubServers.Bungee::Garbo_Collector_Result"); + timer.schedule(new TimerTask() { + @Override + public void run() { + long end = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + Logger.get("SGC").info("Cleared " + (start - end) + " bytes of extremely useless memory data. Now using " + end + " bytes."); + if (subdata != null) Logger.get("SDD").info(subdata.getClients().size() + " SubData channels are open."); + timer.cancel(); + } + }, TimeUnit.MINUTES.toMillis(1)); + } + }, TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(1)); } /**