diff --git a/SubServers.Bungee/pom.xml b/SubServers.Bungee/pom.xml index c44971f0..608e8c69 100644 --- a/SubServers.Bungee/pom.xml +++ b/SubServers.Bungee/pom.xml @@ -30,7 +30,7 @@ net.ME1312.Galaxi GalaxiUtil - 19w20b + 19w20k compile 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 67ca0a59..6907d9e2 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 @@ -10,6 +10,7 @@ import net.ME1312.SubServers.Bungee.Host.Host; import net.ME1312.SubServers.Bungee.Host.SubCreator; import net.ME1312.SubServers.Bungee.Host.SubServer; import net.ME1312.Galaxi.Library.Map.ObjectMap; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; @@ -227,7 +228,7 @@ public class ExternalHost extends Host implements ClientHandler { getSubServer(server).waitFor(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); ObjectMap info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?plugin.servers.get().getMap("Servers").getMap(server).clone():new ObjectMap(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -240,13 +241,13 @@ public class ExternalHost extends Host implements ClientHandler { e.printStackTrace(); } - System.out.println("SubServers > Moving Files..."); + Logger.get("SubServers").info("Moving Files..."); queue(new PacketExDeleteServer(server, info, true, data -> { if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) { servers.remove(server.toLowerCase()); - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); } else { - System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); + Logger.get("SubServers").info("Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); } })); return true; @@ -264,7 +265,7 @@ public class ExternalHost extends Host implements ClientHandler { getSubServer(server).terminate(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); ObjectMap info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?plugin.servers.get().getMap("Servers").getMap(server).clone():new ObjectMap(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -277,14 +278,14 @@ public class ExternalHost extends Host implements ClientHandler { e.printStackTrace(); } - System.out.println("SubServers > Moving Files..."); + Logger.get("SubServers").info("Moving Files..."); queue(new PacketExDeleteServer(server, info, true, data -> { if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) { for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group); servers.remove(server.toLowerCase()); - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); } else { - System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); + Logger.get("SubServers").info("Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); } })); return true; @@ -303,7 +304,7 @@ public class ExternalHost extends Host implements ClientHandler { getSubServer(server).waitFor(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); ObjectMap info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?plugin.servers.get().getMap("Servers").getMap(server).clone():new ObjectMap(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -316,13 +317,13 @@ public class ExternalHost extends Host implements ClientHandler { e.printStackTrace(); } - System.out.println("SubServers > Removing Files..."); + Logger.get("SubServers").info("Removing Files..."); queue(new PacketExDeleteServer(server, info, false, data -> { if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) { servers.remove(server.toLowerCase()); - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); } else { - System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); + Logger.get("SubServers").info("Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); } })); return true; @@ -340,7 +341,7 @@ public class ExternalHost extends Host implements ClientHandler { getSubServer(server).terminate(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); ObjectMap info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?plugin.servers.get().getMap("Servers").getMap(server).clone():new ObjectMap(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -353,14 +354,14 @@ public class ExternalHost extends Host implements ClientHandler { e.printStackTrace(); } - System.out.println("SubServers > Removing Files..."); + Logger.get("SubServers").info("Removing Files..."); queue(new PacketExDeleteServer(server, info, false, data -> { if (data.getInt(0x0001) == 0 || data.getInt(0x0001) == 1) { for (String group : getSubServer(server).getGroups()) getSubServer(server).removeGroup(group); servers.remove(server.toLowerCase()); - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); } else { - System.out.println("SubServers > Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); + Logger.get("SubServers").info("Couldn't remove " + server + " from memory. See " + getName() + " console for more details"); } })); return true; diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java index c265308f..875e951d 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.java @@ -4,6 +4,7 @@ import net.ME1312.SubServers.Bungee.Host.SubLogFilter; import net.ME1312.SubServers.Bungee.Host.SubLogger; import net.ME1312.Galaxi.Library.Container; import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Network.Packet.PacketInExLogMessage; import net.ME1312.SubServers.Bungee.SubAPI; import net.md_5.bungee.api.ProxyServer; @@ -113,7 +114,7 @@ public class ExternalSubLogger extends SubLogger { } // Log to CONSOLE - if (allow) ProxyServer.getInstance().getLogger().log(level, name + " > " + msg); + if (allow) Logger.get(name).log(level, msg); // Log to FILE if (writer != null) { 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 5cc6649c..44beba54 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 @@ -6,6 +6,7 @@ import net.ME1312.SubServers.Bungee.Host.*; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Map.ObjectMapValue; import net.ME1312.Galaxi.Library.Container; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.Galaxi.Library.NamedContainer; import net.ME1312.Galaxi.Library.Util; @@ -77,7 +78,7 @@ public class ExternalSubServer extends SubServerContainer { host.plugin.getPluginManager().callEvent(event); lock = false; if (!event.isCancelled()) { - System.out.println("SubServers > Now starting " + getName()); + Logger.get("SubServers").info("Now starting " + getName()); running = true; logger.start(); host.queue(new PacketExUpdateServer(this, PacketExUpdateServer.UpdateType.START, logger.getExternalAddress().toString())); @@ -86,7 +87,7 @@ public class ExternalSubServer extends SubServerContainer { } else return false; } private void falsestart() { - System.out.println("SubServers > Couldn't start " + getName() + " - See the " + host.getName() + " console for more details"); + Logger.get("SubServers").info("Couldn't start " + getName() + " - See the " + host.getName() + " console for more details"); running = false; logger.stop(); } @@ -106,7 +107,7 @@ public class ExternalSubServer extends SubServerContainer { private void stopped(Boolean allowrestart) { SubStoppedEvent event = new SubStoppedEvent(this); host.plugin.getPluginManager().callEvent(event); - System.out.println("SubServers > " + getName() + " has stopped"); + Logger.get("SubServers").info(getName() + " has stopped"); logger.stop(); history.clear(); running = false; diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java index 68ccec6c..fc4df2d5 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalHost.java @@ -6,6 +6,7 @@ import net.ME1312.Galaxi.Library.Config.YAMLSection; import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent; import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent; import net.ME1312.Galaxi.Library.Map.ObjectMap; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.SubServers.Bungee.Host.Host; import net.ME1312.SubServers.Bungee.Host.SubCreator; @@ -154,7 +155,7 @@ public class InternalHost extends Host { UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + server.toLowerCase()); try { if (from.exists()) { - System.out.println("SubServers > Moving Files..."); + Logger.get("SubServers").info("Moving Files..."); if (to.exists()) { if (to.isDirectory()) Util.deleteDirectory(to); else to.delete(); @@ -167,7 +168,7 @@ public class InternalHost extends Host { e.printStackTrace(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); YAMLSection info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.servers.get().getMap("Servers").getMap(server).get()):new YAMLSection(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -183,7 +184,7 @@ public class InternalHost extends Host { } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); }, "SubServers.Bungee::Internal_Server_Recycler(" + name + ')').start(); return true; } else return false; @@ -199,7 +200,7 @@ public class InternalHost extends Host { UniversalFile to = new UniversalFile(plugin.dir, "SubServers:Recently Deleted:" + server.toLowerCase()); try { if (from.exists()) { - System.out.println("SubServers > Moving Files..."); + Logger.get("SubServers").info("Moving Files..."); if (to.exists()) { if (to.isDirectory()) Util.deleteDirectory(to); else to.delete(); @@ -212,7 +213,7 @@ public class InternalHost extends Host { e.printStackTrace(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); YAMLSection info = (plugin.servers.get().getMap("Servers").getKeys().contains(server))?new YAMLSection(plugin.servers.get().getMap("Servers").getMap(server).get()):new YAMLSection(); info.set("Name", server); info.set("Timestamp", Calendar.getInstance().getTime().getTime()); @@ -228,7 +229,7 @@ public class InternalHost extends Host { } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); }, "SubServers.Bungee::Internal_Server_Recycler(" + name + ')').start(); return true; } else return false; @@ -243,14 +244,14 @@ public class InternalHost extends Host { new Thread(() -> { try { if (from.exists()) { - System.out.println("SubServers > Removing Files..."); + Logger.get("SubServers").info("Removing Files..."); Util.deleteDirectory(from); } } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); try { if (plugin.servers.get().getMap("Servers").getKeys().contains(server)) { plugin.servers.get().getMap("Servers").remove(server); @@ -259,7 +260,7 @@ public class InternalHost extends Host { } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); }, "SubServers.Bungee::Internal_Server_Deletion(" + name + ')').start(); return true; } else return false; @@ -274,14 +275,14 @@ public class InternalHost extends Host { new Thread(() -> { try { if (from.exists()) { - System.out.println("SubServers > Removing Files..."); + Logger.get("SubServers").info("Removing Files..."); Util.deleteDirectory(from); } } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Saving..."); + Logger.get("SubServers").info("Saving..."); try { if (plugin.servers.get().getMap("Servers").getKeys().contains(server)) { plugin.servers.get().getMap("Servers").remove(server); @@ -290,7 +291,7 @@ public class InternalHost extends Host { } catch (Exception e) { e.printStackTrace(); } - System.out.println("SubServers > Deleted SubServer: " + server); + Logger.get("SubServers").info("Deleted SubServer: " + server); }, "SubServers.Bungee::Internal_Server_Deletion(" + name + ')').start(); return true; } else return false; diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java index b2358922..900106a6 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java @@ -4,6 +4,7 @@ import net.ME1312.SubServers.Bungee.Host.SubLogFilter; import net.ME1312.SubServers.Bungee.Host.SubLogger; import net.ME1312.Galaxi.Library.Container; import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubAPI; import net.md_5.bungee.api.ProxyServer; @@ -131,7 +132,7 @@ public class InternalSubLogger extends SubLogger { } // Log to CONSOLE - if (allow) ProxyServer.getInstance().getLogger().log(level, name + " > " + msg); + if (allow) Logger.get(name).log(level, msg); // Log to FILE if (writer != null) { 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 afd5d541..37a77002 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 @@ -5,6 +5,7 @@ import net.ME1312.SubServers.Bungee.Host.*; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Map.ObjectMapValue; import net.ME1312.Galaxi.Library.Container; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException; import net.ME1312.Galaxi.Library.NamedContainer; import net.ME1312.Galaxi.Library.UniversalFile; @@ -125,7 +126,7 @@ public class InternalSubServer extends SubServerContainer { pb.environment().put("address", host.getAddress().getHostAddress()); pb.environment().put("port", Integer.toString(getAddress().getPort())); process = pb.start(); - System.out.println("SubServers > Now starting " + getName()); + Logger.get("SubServers").info("Now starting " + getName()); logger.process = process; logger.start(); command = new BufferedWriter(new OutputStreamWriter(process.getOutputStream())); @@ -143,7 +144,7 @@ public class InternalSubServer extends SubServerContainer { SubStoppedEvent event = new SubStoppedEvent(this); host.plugin.getPluginManager().callEvent(event); - System.out.println("SubServers > " + getName() + " has stopped"); + Logger.get("SubServers").info(getName() + " has stopped"); process = null; command = null; history.clear(); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java index 407f012d..7b615ab9 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java @@ -1,11 +1,15 @@ package net.ME1312.SubServers.Bungee; import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Bungee.Library.Compatibility.GalaxiInfo; import java.security.Security; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.jar.Manifest; +import java.util.logging.Logger; /** * SubServers/BungeeCord Launch Class @@ -71,54 +75,65 @@ public final class Launch { javaarch = System.getProperty("sun.arch.data.model"); } + Version galaxi = GalaxiInfo.getVersion(); + Version galaxibuild = GalaxiInfo.getSignature(); + System.out.println(""); System.out.println(System.getProperty("os.name") + ((!System.getProperty("os.name").toLowerCase().startsWith("windows"))?' ' + System.getProperty("os.version"):"") + ((osarch != null)?" [" + osarch + ']':"") + ','); System.out.println("Java " + System.getProperty("java.version") + ((javaarch != null)?" [" + javaarch + ']':"") + ','); - System.out.println("BungeeCord" + ((patched)?" [Patched] ":" ") + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ','); + if (galaxi != null) + System.out.println("GalaxiEngine v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") + ','); + System.out.println("BungeeCord" + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ((patched)?" [Patched]":"") + ','); System.out.println("SubServers.Bungee v" + SubPlugin.version.toExtendedString() + ((SubPlugin.class.getPackage().getSpecificationTitle() != null)?" (" + SubPlugin.class.getPackage().getSpecificationTitle() + ')':"")); System.out.println(""); } else { - System.out.println(""); - System.out.println("*******************************************"); - 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! ***"); - System.out.println("*******************************************"); - try { - if (net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion() != null) { - Date date = (new SimpleDateFormat("yyyyMMdd")).parse(net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion()); - Calendar line = Calendar.getInstance(); - line.add(3, -4); - if (date.before(line.getTime())) { - System.out.println("*** Warning: BungeeCord is outdated ***"); - System.out.println("*** Please download a new build from: ***"); - System.out.println("*** http://ci.md-5.net/job/BungeeCord ***"); - System.out.println("*** Errors may arise on older versions! ***"); - System.out.println("*******************************************"); - } - } else throw new Exception(); - } catch (Exception e) { - System.out.println("*** Problem checking BungeeCord version ***"); - System.out.println("*** BungeeCord could be outdated. ***"); - System.out.println("*** ***"); - System.out.println("*** Errors may arise on older versions! ***"); + boolean gb; + if (!(gb = !Util.isException(() -> Util.reflect(net.md_5.bungee.log.LoggingOutputStream.class.getMethod("setLogger", Logger.class, String.class), null, + Util.reflect(net.md_5.bungee.log.BungeeLogger.class.getMethod("get", String.class), null, "SubServers"), "net.ME1312.SubServers.Bungee.")))) { + System.out.println(""); System.out.println("*******************************************"); + 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! ***"); + System.out.println("*******************************************"); + try { + if (net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion() != null) { + Date date = (new SimpleDateFormat("yyyyMMdd")).parse(net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion()); + Calendar line = Calendar.getInstance(); + line.add(3, -4); + if (date.before(line.getTime())) { + System.out.println("*** Warning: BungeeCord is outdated ***"); + System.out.println("*** Please download a new build from: ***"); + System.out.println("*** http://ci.md-5.net/job/BungeeCord ***"); + System.out.println("*** Errors may arise on older versions! ***"); + System.out.println("*******************************************"); + } + } else throw new Exception(); + } catch (Exception e) { + System.out.println("*** Problem checking BungeeCord version ***"); + System.out.println("*** BungeeCord could be outdated. ***"); + System.out.println("*** ***"); + System.out.println("*** Errors may arise on older versions! ***"); + System.out.println("*******************************************"); + } + System.out.println(""); } - System.out.println(""); SubPlugin plugin = new SubPlugin(System.out, patched); net.md_5.bungee.api.ProxyServer.class.getMethod("setInstance", net.md_5.bungee.api.ProxyServer.class).invoke(null, plugin); - plugin.getLogger().info("Enabled " + plugin.getBungeeName() + " version " + plugin.getVersion()); + if (!gb) plugin.getLogger().info("Enabled " + plugin.getBungeeName() + " version " + plugin.getVersion()); plugin.start(); if (!options.has("noconsole")) { try { - if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands") != null, false)) { + if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands") != null, false)) { // Waterfall Setup Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands").invoke(null); } else if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("start") != null, false)) { Class console = Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole"); console.getMethod("start").invoke(console.getConstructor().newInstance()); + } else if (Util.getDespiteException(() -> Class.forName("net.md_5.bungee.util.GalaxiBungeeInfo").getMethod("get").invoke(null).getClass().getCanonicalName().equals("net.ME1312.Galaxi.Plugin.PluginInfo"), false)) { + // GalaxiBungee initializes its console automatically } else { plugin.canSudo = true; String line; @@ -129,7 +144,7 @@ public final class Launch { } } else if (line.equalsIgnoreCase("exit")) { plugin.sudo = null; - System.out.println("SubServers > Reverting to the BungeeCord Console"); + net.ME1312.SubServers.Bungee.Library.Compatibility.Logger.get("SubServers").info("Reverting to the BungeeCord Console"); } else { plugin.sudo.command(line); } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiCommand.java new file mode 100644 index 00000000..acd02585 --- /dev/null +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiCommand.java @@ -0,0 +1,47 @@ +package net.ME1312.SubServers.Bungee.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.md_5.bungee.api.plugin.Command; + +/** + * Galaxi Command Compatibility Class + */ +public class GalaxiCommand { + + /** + * Set the Description of a Command + * + * @param command Command + * @param value Value + * @return The Command + */ + public static Command description(Command command, String value) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("description", String.class), command, value)); + return command; + } + + /** + * Set the Help Page for a Command + * + * @param command Command + * @param lines Help Page Lines + * @return The Command + */ + public static Command help(Command command, String... lines) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("help", String[].class), command, (Object) lines)); + return command; + } + + /** + * Set the Usage of a Command + * + * @param command Command + * @param args Argument Placeholders + * @return The Command + */ + public static Command usage(Command command, String... args) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("usage", String[].class), command, (Object) args)); + return command; + } + +} diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiInfo.java new file mode 100644 index 00000000..023dc111 --- /dev/null +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/GalaxiInfo.java @@ -0,0 +1,47 @@ +package net.ME1312.SubServers.Bungee.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; + +import java.lang.annotation.Annotation; +import java.util.jar.Manifest; + +/** + * Galaxi Info Class + */ +public class GalaxiInfo { + private GalaxiInfo() {} + + @SuppressWarnings("unchecked") + private static Class asAnnotation(Class clazz) { + return (Class) clazz; + } + + /** + * Get the Galaxi Version + * + * @return Galaxi Version + */ + public static Version getVersion() { + return Util.getDespiteException(() -> Version.fromString((String) Class.forName("net.ME1312.Galaxi.Plugin.App").getMethod("version").invoke( + Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getAnnotation(asAnnotation(Class.forName("net.ME1312.Galaxi.Plugin.App"))))), null); + } + + /** + * Get the Galaxi Build Signature + * + * @return Galaxi Build Signature + */ + public static Version getSignature() { + try { + Manifest manifest = new Manifest(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getResourceAsStream("/META-INF/GalaxiEngine.MF")); + if (manifest.getMainAttributes().getValue("Implementation-Version") != null && manifest.getMainAttributes().getValue("Implementation-Version").length() > 0) { + return new Version(manifest.getMainAttributes().getValue("Implementation-Version")); + } else { + return null; + } + } catch (Throwable e) { + return null; + } + } +} diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/Logger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/Logger.java new file mode 100644 index 00000000..18fc4310 --- /dev/null +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Compatibility/Logger.java @@ -0,0 +1,58 @@ +package net.ME1312.SubServers.Bungee.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Bungee.SubAPI; +import net.ME1312.SubServers.Bungee.SubPlugin; +import net.md_5.bungee.api.ProxyServer; + +import java.util.HashMap; +import java.util.logging.Handler; +import java.util.logging.LogRecord; + +/** + * Logger Compatibility Class + */ +public class Logger { + private static final HashMap existing = new HashMap(); + private static SubPlugin plugin; + + /** + * Get a logger + * + * @param prefix Prefix + * @return Logger + */ + @SuppressWarnings("deprecation") + public static java.util.logging.Logger get(String prefix) { + if (!existing.keySet().contains(prefix)) { + java.util.logging.Logger log = Util.getDespiteException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Library.Log.Logger").getDeclaredMethod("toPrimitive"), + Util.reflect(Class.forName("net.ME1312.Galaxi.Library.Log.Logger").getConstructor(String.class), prefix)), null); + + if (log == null) { + log = java.util.logging.Logger.getAnonymousLogger(); + log.setUseParentHandlers(false); + log.addHandler(new Handler() { + private boolean open = true; + + @Override + public void publish(LogRecord record) { + if (open) + plugin.getLogger().log(record.getLevel(), prefix + " > " + record.getMessage(), record.getParameters()); + } + + @Override + public void flush() { + + } + + @Override + public void close() throws SecurityException { + open = false; + } + }); + } + existing.put(prefix, log); + } + return existing.get(prefix); + } +} diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Updates/ConfigUpdater.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Updates/ConfigUpdater.java index c70742e7..ad5da97d 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Updates/ConfigUpdater.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Updates/ConfigUpdater.java @@ -4,6 +4,7 @@ import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Config.YAMLSection; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubAPI; import java.io.File; @@ -43,7 +44,7 @@ public class ConfigUpdater { updated.set("Hosts", hosts); i++; - System.out.println("SubServers > Created ./SubServers/config.yml"); + Logger.get("SubServers").info("Created ./SubServers/config.yml"); } else { if (was.compareTo(new Version("19w17a")) <= 0) { if (existing.getMap("Settings", new YAMLSection()).contains("Log-Creator")) for (String name : existing.getMap("Hosts", new YAMLSection()).getKeys()) @@ -64,7 +65,7 @@ public class ConfigUpdater { sc.get().safeSet("Servers", new YAMLSection()); sc.get().getMap("Servers").safeSetAll(existing.getMap("Servers")); - System.out.println("SubServers > Created ./SubServers/servers.yml (using existing data)"); + Logger.get("SubServers").info("Created ./SubServers/servers.yml (using existing data)"); sc.save(); } @@ -75,7 +76,7 @@ public class ConfigUpdater { // i++ //} - if (i > 0) System.out.println("SubServers > Updated ./SubServers/config.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); + if (i > 0) Logger.get("SubServers").info("Updated ./SubServers/config.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); } if (i > 0) { @@ -143,7 +144,7 @@ public class ConfigUpdater { updated.set("Servers", servers); i++; - System.out.println("SubServers > Created ./SubServers/servers.yml"); + Logger.get("SubServers").info("Created ./SubServers/servers.yml"); } else { if (was.compareTo(new Version("19w17a")) <= 0) { for (String name : existing.getMap("Servers", new YAMLSection()).getKeys()) { @@ -159,7 +160,7 @@ public class ConfigUpdater { // i++ //} - if (i > 0) System.out.println("SubServers > Updated ./SubServers/servers.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); + if (i > 0) Logger.get("SubServers").info("Updated ./SubServers/servers.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); } if (i > 0) { @@ -217,7 +218,7 @@ public class ConfigUpdater { if (!existing.contains("Settings") || !existing.getMap("Settings").contains("Version")) { i++; - System.out.println("SubServers > Created ./SubServers/lang.yml"); + Logger.get("SubServers").info("Created ./SubServers/lang.yml"); } else { if (was.compareTo(new Version("19w17a")) <= 0) { i++; @@ -226,7 +227,7 @@ public class ConfigUpdater { // i++ //} - if (i > 0) System.out.println("SubServers > Updated ./SubServers/lang.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); + if (i > 0) Logger.get("SubServers").info("Updated ./SubServers/lang.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); } if (i > 0) { diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDownloadTemplates.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDownloadTemplates.java index 462adf67..73dfd8c9 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDownloadTemplates.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketExDownloadTemplates.java @@ -6,6 +6,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubData.Server.Protocol.PacketIn; import net.ME1312.SubData.Server.Protocol.PacketStreamOut; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubPlugin; import java.io.*; @@ -38,7 +39,7 @@ public class PacketExDownloadTemplates implements PacketIn, PacketStreamOut { Util.zip(new UniversalFile(plugin.dir, "SubServers:Templates"), stream); stream.close(); } catch (Exception e) { - System.out.println("SubData > Problem encoding template files for Host: " + host.getName()); + Logger.get("SubData").info("Problem encoding template files for Host: " + host.getName()); e.printStackTrace(); } } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkExHost.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkExHost.java index 892d8d40..f724aa7b 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkExHost.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkExHost.java @@ -10,6 +10,7 @@ import net.ME1312.SubData.Server.ClientHandler; import net.ME1312.SubData.Server.Protocol.PacketObjectIn; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; import net.ME1312.SubServers.Bungee.Host.ServerContainer; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubPlugin; import java.util.HashMap; @@ -64,7 +65,7 @@ public class PacketLinkExHost implements InitialPacket, PacketObjectIn, HashMap subdata = Util.getDespiteException(() -> Util.reflect(ExternalHost.class.getDeclaredField("subdata"), host), null); if (!subdata.keySet().contains(channel) || (channel == 0 && subdata.get(0) == null)) { ((ExternalHost) host).setSubData(client, channel); - System.out.println("SubData > " + client.getAddress().toString() + " has been defined as Host: " + host.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); + Logger.get("SubData").info(client.getAddress().toString() + " has been defined as Host: " + host.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); client.sendPacket(new PacketLinkExHost(0, null)); setReady(client, true); } else { diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkProxy.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkProxy.java index 23074957..214c489a 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkProxy.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkProxy.java @@ -10,6 +10,7 @@ import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; import net.ME1312.SubData.Server.Protocol.PacketObjectIn; import net.ME1312.SubServers.Bungee.Host.ServerContainer; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubPlugin; import java.util.HashMap; @@ -75,7 +76,7 @@ public class PacketLinkProxy implements InitialPacket, PacketObjectIn, if (!subdata.keySet().contains(channel) || (channel == 0 && subdata.get(0) == null)) { proxy.setSubData(client, channel); if (isnew) plugin.getPluginManager().callEvent(new SubAddProxyEvent(proxy)); - System.out.println("SubData > " + client.getAddress().toString() + " has been defined as Proxy: " + proxy.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); + Logger.get("SubData").info(client.getAddress().toString() + " has been defined as Proxy: " + proxy.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); client.sendPacket(new PacketLinkProxy(proxy.getName(), 0, null)); setReady(client, true); } else { diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkServer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkServer.java index 7623882c..08a68fd2 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkServer.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketLinkServer.java @@ -10,6 +10,7 @@ import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Server.Protocol.PacketObjectIn; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.SubPlugin; import java.net.InetSocketAddress; @@ -100,9 +101,9 @@ public class PacketLinkServer implements InitialPacket, PacketObjectIn, HashMap subdata = Util.getDespiteException(() -> Util.reflect(ServerContainer.class.getDeclaredField("subdata"), server), null); if (!subdata.keySet().contains(channel) || (channel == 0 && subdata.get(0) == null)) { server.setSubData(client, channel); - System.out.println("SubData > " + client.getAddress().toString() + " has been defined as " + ((server instanceof SubServer) ? "SubServer" : "Server") + ": " + server.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); + Logger.get("SubData").info(client.getAddress().toString() + " has been defined as " + ((server instanceof SubServer) ? "SubServer" : "Server") + ": " + server.getName() + ((channel > 0)?" (Sub-"+channel+")":"")); if (server instanceof SubServer && !((SubServer) server).isRunning()) { - System.out.println("SubServers > Sending shutdown signal to rogue SubServer: " + server.getName()); + Logger.get("SubServers").info("Sending shutdown signal to rogue SubServer: " + server.getName()); client.sendPacket(new PacketOutExReset("Rogue SubServer Detected")); } else { client.sendPacket(new PacketLinkServer(server.getName(), 0, null)); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubProtocol.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubProtocol.java index d3bbea43..9bed9dfc 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubProtocol.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/SubProtocol.java @@ -25,28 +25,8 @@ public class SubProtocol extends SubDataProtocol { @SuppressWarnings("deprecation") public static SubProtocol get() { if (instance == null) { - log = Logger.getAnonymousLogger(); - log.setUseParentHandlers(false); - log.addHandler(new Handler() { - private boolean open = true; - - @Override - public void publish(LogRecord record) { - if (open) - ProxyServer.getInstance().getLogger().log(record.getLevel(), "SubData > " + record.getMessage(), record.getParameters()); - } - - @Override - public void flush() { - - } - - @Override - public void close() throws SecurityException { - open = false; - } - }); instance = new SubProtocol(); + log = net.ME1312.SubServers.Bungee.Library.Compatibility.Logger.get("SubData"); SubPlugin plugin = SubAPI.getInstance().getInternals(); plugin.getPluginManager().registerListener(null, new PacketOutExRunEvent(plugin)); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java index 3103c264..8b0b67f7 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java @@ -9,6 +9,8 @@ import net.ME1312.Galaxi.Library.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.SubData.Server.ClientHandler; +import net.ME1312.SubServers.Bungee.Library.Compatibility.GalaxiInfo; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Network.Packet.PacketExCheckPermission; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; @@ -28,6 +30,8 @@ import java.nio.charset.Charset; import java.util.*; import java.util.concurrent.TimeUnit; +import static net.ME1312.SubServers.Bungee.Library.Compatibility.GalaxiCommand.*; + /** * Plugin Command Class */ @@ -51,6 +55,15 @@ public final class SubCommand extends CommandX { super(command); this.plugin = plugin; this.label = '/' + command; + + description(this, "The SubServers Command"); + help(this, + "The command for accessing the SubServers Server Manager.", + "", + "Permission: subservers.command", + "Extended help entries:", + " /sub help" + ); } /** @@ -93,10 +106,15 @@ public final class SubCommand extends CommandX { javaarch = System.getProperty("sun.arch.data.model"); } + Version galaxi = GalaxiInfo.getVersion(); + Version galaxibuild = GalaxiInfo.getSignature(); + sender.sendMessage("SubServers > These are the platforms and versions that are running SubServers.Bungee:"); sender.sendMessage(" " + System.getProperty("os.name") + ((!System.getProperty("os.name").toLowerCase().startsWith("windows"))?' ' + System.getProperty("os.version"):"") + ((osarch != null)?" [" + osarch + ']':"") + ','); sender.sendMessage(" Java " + System.getProperty("java.version") + ((javaarch != null)?" [" + javaarch + ']':"") + ','); - sender.sendMessage(" " + plugin.getBungeeName() + ((plugin.isPatched)?" [Patched] ":" ") + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ','); + if (galaxi != null) + Util.isException(() -> sender.sendMessage(" GalaxiEngine v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") + ',')); + sender.sendMessage(" " + plugin.getBungeeName() + ((plugin.isGalaxi)?" v":" ") + plugin.getVersion() + ((plugin.isPatched)?" [Patched]":"") + ','); sender.sendMessage(" SubServers.Bungee v" + SubPlugin.version.toExtendedString() + ((plugin.api.getWrapperBuild() != null)?" (" + plugin.api.getWrapperBuild() + ')':"")); sender.sendMessage(""); new Thread(() -> { @@ -547,7 +565,7 @@ public final class SubCommand extends CommandX { sender.sendMessage("SubServers > That SubServer is not running"); } else { plugin.sudo = (SubServer) servers.get(args[1].toLowerCase()); - System.out.println("SubServers > Now forwarding commands to " + plugin.sudo.getDisplayName() + ". Type \"exit\" to return."); + Logger.get("SubServers").info("Now forwarding commands to " + plugin.sudo.getDisplayName() + ". Type \"exit\" to return."); } } else { sender.sendMessage("SubServers > Usage: " + label + " " + args[0].toLowerCase() + " "); @@ -590,7 +608,7 @@ public final class SubCommand extends CommandX { } else if (((SubServer) servers.get(args[1].toLowerCase())).isRunning()) { sender.sendMessage("SubServers > That SubServer is still running"); } else if (!((SubServer) servers.get(args[1].toLowerCase())).getHost().recycleSubServer(args[1].toLowerCase())){ - System.out.println("SubServers > Couldn't remove server from memory."); + Logger.get("SubServers").info("Couldn't remove server from memory."); } } catch (Exception e) { e.printStackTrace(); @@ -900,6 +918,16 @@ public final class SubCommand extends CommandX { private BungeeServer(SubPlugin plugin, String command) { super(command, "bungeecord.command.server"); this.plugin = plugin; + + description(this, "Displays a list of or connects you to servers"); + help(this, + "Displays a list of all players connected to BungeeCord.", + "This list is separated into groups by server.", + "", + "Permission: bungeecord.command.list", + "Example:", + " /glist" + ); } protected static NamedContainer newInstance(SubPlugin plugin, String command) { @@ -993,6 +1021,16 @@ public final class SubCommand extends CommandX { protected BungeeList(SubPlugin plugin, String command) { super(command, "bungeecord.command.list"); this.plugin = plugin; + + description(this, "Displays a list of all players"); + help(this, + "Displays a list of all players connected to BungeeCord.", + "This list is separated into groups by server.", + "", + "Permission: bungeecord.command.list", + "Example:", + " /glist" + ); } /** diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java index 39c74191..955a8478 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java @@ -15,6 +15,7 @@ import net.ME1312.SubServers.Bungee.Host.*; import net.ME1312.SubServers.Bungee.Library.*; import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Config.YAMLSection; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.ME1312.SubServers.Bungee.Library.Fallback.SmartReconnectHandler; import net.ME1312.SubServers.Bungee.Library.Updates.ConfigUpdater; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidHostException; @@ -77,15 +78,22 @@ public final class SubPlugin extends BungeeCord implements Listener { public Proxy redis = null; public boolean canSudo = false; public final boolean isPatched; + public final boolean isGalaxi; public long resetDate = 0; private boolean running = false; private boolean posted = false; private static BigInteger lastSignature = BigInteger.valueOf(-1); @SuppressWarnings("unchecked") - protected SubPlugin(PrintStream out, boolean isPatched) throws IOException { + protected SubPlugin(PrintStream out, boolean isPatched) throws Exception { this.isPatched = isPatched; - System.out.println("SubServers > Loading SubServers.Bungee v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion()[api.getGameVersion().length - 1] + ")"); + this.isGalaxi = !Util.isException(() -> + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.PluginManager").getMethod("findClasses", Class.class), + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getMethod("getPluginManager"), + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getMethod("getInstance"), null)), Launch.class)); + + Util.reflect(Logger.class.getDeclaredField("plugin"), null, this); + Logger.get("SubServers").info("Loading SubServers.Bungee v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion()[api.getGameVersion().length - 1] + ")"); this.out = out; if (!(new UniversalFile(dir, "config.yml").exists())) { @@ -93,7 +101,7 @@ public final class SubPlugin extends BungeeCord implements Listener { YAMLConfig tmp = new YAMLConfig(new UniversalFile("config.yml")); tmp.get().set("stats", UUID.randomUUID().toString()); tmp.save(); - System.out.println("SubServers > Created ./config.yml"); + Logger.get("SubServers").info("Created ./config.yml"); } bungee = new YAMLConfig(new UniversalFile(dir, "config.yml")); @@ -113,36 +121,36 @@ public final class SubPlugin extends BungeeCord implements Listener { new UniversalFile(dir, "Templates").mkdirs(); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Created ./SubServers/Templates/Vanilla"); + Logger.get("SubServers").info("Created ./SubServers/Templates/Vanilla"); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Created ./SubServers/Templates/Spigot"); + Logger.get("SubServers").info("Created ./SubServers/Templates/Spigot"); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/forge.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Created ./SubServers/Templates/Forge"); + Logger.get("SubServers").info("Created ./SubServers/Templates/Forge"); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Created ./SubServers/Templates/Sponge"); + Logger.get("SubServers").info("Created ./SubServers/Templates/Sponge"); } else { if (new UniversalFile(dir, "Templates:Vanilla:template.yml").exists() && ((new YAMLConfig(new UniversalFile(dir, "Templates:Vanilla:template.yml"))).get().getVersion("Version", new Version(0))).compareTo(new Version("2.13.2c+")) != 0) { Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Vanilla.old" + Math.round(Math.random() * 100000) + ".x").toPath()); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Updated ./SubServers/Templates/Vanilla"); + Logger.get("SubServers").info("Updated ./SubServers/Templates/Vanilla"); } if (new UniversalFile(dir, "Templates:Spigot:template.yml").exists() && ((new YAMLConfig(new UniversalFile(dir, "Templates:Spigot:template.yml"))).get().getVersion("Version", new Version(0))).compareTo(new Version("2.13.2c+")) != 0) { Files.move(new UniversalFile(dir, "Templates:Spigot").toPath(), new UniversalFile(dir, "Templates:Spigot.old" + Math.round(Math.random() * 100000) + ".x").toPath()); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Updated ./SubServers/Templates/Spigot"); + Logger.get("SubServers").info("Updated ./SubServers/Templates/Spigot"); } if (new UniversalFile(dir, "Templates:Forge:template.yml").exists() && ((new YAMLConfig(new UniversalFile(dir, "Templates:Forge:template.yml"))).get().getVersion("Version", new Version(0))).compareTo(new Version("2.13.2c+")) != 0) { Files.move(new UniversalFile(dir, "Templates:Forge").toPath(), new UniversalFile(dir, "Templates:Forge.old" + Math.round(Math.random() * 100000) + ".x").toPath()); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/forge.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Updated ./SubServers/Templates/Forge"); + Logger.get("SubServers").info("Updated ./SubServers/Templates/Forge"); } if (new UniversalFile(dir, "Templates:Sponge:template.yml").exists() && ((new YAMLConfig(new UniversalFile(dir, "Templates:Sponge:template.yml"))).get().getVersion("Version", new Version(0))).compareTo(new Version("2.13.2c+")) != 0) { Files.move(new UniversalFile(dir, "Templates:Sponge").toPath(), new UniversalFile(dir, "Templates:Sponge.old" + Math.round(Math.random() * 100000) + ".x").toPath()); Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates")); - System.out.println("SubServers > Updated ./SubServers/Templates/Sponge"); + Logger.get("SubServers").info("Updated ./SubServers/Templates/Sponge"); } } @@ -161,25 +169,25 @@ public final class SubPlugin extends BungeeCord implements Listener { if (TimeUnit.MILLISECONDS.toDays(Calendar.getInstance().getTime().getTime() - info.getLong("Timestamp")) >= 7) { Util.deleteDirectory(file); f--; - System.out.println("SubServers > Removed ./SubServers/Recently Deleted/" + file.getName()); + Logger.get("SubServers").info("Removed ./SubServers/Recently Deleted/" + file.getName()); } } else { Util.deleteDirectory(file); f--; - System.out.println("SubServers > Removed ./SubServers/Recently Deleted/" + file.getName()); + Logger.get("SubServers").info("Removed ./SubServers/Recently Deleted/" + file.getName()); } } else { Util.deleteDirectory(file); f--; - System.out.println("SubServers > Removed ./SubServers/Recently Deleted/" + file.getName()); + Logger.get("SubServers").info("Removed ./SubServers/Recently Deleted/" + file.getName()); } } else { Files.delete(file.toPath()); f--; - System.out.println("SubServers > Removed ./SubServers/Recently Deleted/" + file.getName()); + Logger.get("SubServers").info("Removed ./SubServers/Recently Deleted/" + file.getName()); } } catch (Exception e) { - System.out.println("SubServers > Problem scanning .SubServers/Recently Deleted/" + file.getName()); + Logger.get("SubServers").info("Problem scanning .SubServers/Recently Deleted/" + file.getName()); e.printStackTrace(); Files.delete(file.toPath()); } @@ -205,7 +213,7 @@ public final class SubPlugin extends BungeeCord implements Listener { getPluginManager().registerListener(null, this); - System.out.println("SubServers > Pre-Parsing Config..."); + Logger.get("SubServers").info("Pre-Parsing Config..."); for (String name : servers.get().getMap("Servers").getKeys()) { try { if (Util.getCaseInsensitively(config.get().getMap("Hosts").get(), servers.get().getMap("Servers").getMap(name).getString("Host")) == null) throw new InvalidServerException("There is no host with this name: " + servers.get().getMap("Servers").getMap(name).getString("Host")); @@ -217,7 +225,7 @@ public final class SubPlugin extends BungeeCord implements Listener { } subprotocol = SubProtocol.get(); - System.out.println("SubServers > Loading BungeeCord Libraries..."); + Logger.get("SubServers").info("Loading BungeeCord Libraries..."); } /** @@ -303,22 +311,22 @@ public final class SubPlugin extends BungeeCord implements Listener { subprotocol.registerCipher("AES-192", new AES(192, config.get().getMap("Settings").getMap("SubData").getRawString("Password"))); subprotocol.registerCipher("AES-256", new AES(256, config.get().getMap("Settings").getMap("SubData").getRawString("Password"))); - System.out.println("SubData > Encrypting SubData with AES:"); - System.out.println("SubData > Use the password in config.yml to allow clients to connect"); + Logger.get("SubData").info("Encrypting SubData with AES:"); + Logger.get("SubData").info("Use the password in config.yml to allow clients to connect"); } else if (ciphers[0].equals("RSA") || ciphers[0].equals("RSA-2048") || ciphers[0].equals("RSA-3072") || ciphers[0].equals("RSA-4096")) { try { int length = (ciphers[0].contains("-"))?Integer.parseInt(ciphers[0].split("-")[1]):2048; subprotocol.registerCipher("RSA", new RSA(length, new UniversalFile("SubServers:Cache:private.rsa.key"), new UniversalFile("SubServers:subdata.rsa.key"))); cipher = "RSA" + cipher.substring(ciphers[0].length()); - System.out.println("SubData > Encrypting SubData with RSA:"); - System.out.println("SubData > Copy your subdata.rsa.key to clients to allow them to connect"); + Logger.get("SubData").info("Encrypting SubData with RSA:"); + Logger.get("SubData").info("Copy your subdata.rsa.key to clients to allow them to connect"); } catch (Exception e) { e.printStackTrace(); } } - System.out.println("SubData > "); + Logger.get("SubData").info(""); subdata = subprotocol.open((config.get().getMap("Settings").getMap("SubData").getRawString("Address", "127.0.0.1:4391").split(":")[0].equals("0.0.0.0"))?null:InetAddress.getByName(config.get().getMap("Settings").getMap("SubData").getRawString("Address", "127.0.0.1:4391").split(":")[0]), Integer.parseInt(config.get().getMap("Settings").getMap("SubData").getRawString("Address", "127.0.0.1:4391").split(":")[1]), cipher); } // Add new entries to Allowed-Connections @@ -338,7 +346,7 @@ public final class SubPlugin extends BungeeCord implements Listener { 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..."); + if (first) Logger.get("SubServers").info(((status)?"Rel":"L")+"oading Proxies..."); first = false; Proxy proxy = this.proxies.get(name.toLowerCase()); if (proxy == null) { @@ -359,7 +367,7 @@ public final class SubPlugin extends BungeeCord implements Listener { ukeys.clear(); int hosts = 0; - System.out.println("SubServers > "+((status)?"Rel":"L")+"oading Hosts..."); + Logger.get("SubServers").info(((status)?"Rel":"L")+"oading Hosts..."); for (String name : config.get().getMap("Hosts").getKeys()) { if (!ukeys.contains(name.toLowerCase())) try { if (!hostDrivers.keySet().contains(config.get().getMap("Hosts").getMap(name).getRawString("Driver").toUpperCase().replace('-', '_').replace(' ', '_'))) throw new InvalidHostException("Invalid Driver for host: " + name); @@ -396,7 +404,7 @@ public final class SubPlugin extends BungeeCord implements Listener { ukeys.clear(); int servers = 0; - System.out.println("SubServers > "+((status)?"Rel":"L")+"oading Servers..."); + Logger.get("SubServers").info(((status)?"Rel":"L")+"oading Servers..."); bungee.reload(); for (String name : bungee.get().getMap("servers").getKeys()) { if (!ukeys.contains(name.toLowerCase())) try { @@ -437,10 +445,10 @@ public final class SubPlugin extends BungeeCord implements Listener { ukeys.clear(); int subservers = 0; - System.out.println("SubServers > "+((status)?"Rel":"L")+"oading SubServers..."); + Logger.get("SubServers").info(((status)?"Rel":"L")+"oading SubServers..."); if (!posted) Runtime.getRuntime().addShutdownHook(new Thread(() -> { if (running) { - System.out.println("SubServers > Received request from system to shutdown"); + Logger.get("SubServers").info("Received request from system to shutdown"); try { shutdown(); } catch (Exception e) { @@ -552,7 +560,7 @@ public final class SubPlugin extends BungeeCord implements Listener { int plugins = 0; List listeners = (status)?api.reloadListeners:api.enableListeners; if (listeners.size() > 0) { - System.out.println("SubServers > "+((status)?"Rel":"L")+"oading SubAPI Plugins..."); + Logger.get("SubServers").info(((status)?"Rel":"L")+"oading SubAPI Plugins..."); for (Runnable obj : listeners) { try { obj.run(); @@ -568,7 +576,7 @@ public final class SubPlugin extends BungeeCord implements Listener { for (Server server : api.getServers().values()) if (server.getSubData()[0] != null) ((SubDataClient) server.getSubData()[0]).sendPacket(new PacketOutExReload(null)); } - System.out.println("SubServers > " + ((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + ((proxies > 1)?proxies+" Proxies, ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" "+((status)?"re":"")+"loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s"); + Logger.get("SubServers").info(((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + ((proxies > 1)?proxies+" Proxies, ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" "+((status)?"re":"")+"loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s"); long scd = TimeUnit.SECONDS.toMillis(this.servers.get().getMap("Settings").getLong("Run-On-Launch-Timeout", 0L)); if (autorun.size() > 0) for (Host host : api.getHosts().values()) { @@ -594,7 +602,7 @@ public final class SubPlugin extends BungeeCord implements Listener { } } if (running && begin == resetDate && Calendar.getInstance().getTime().getTime() - init >= 5000) - System.out.println("SubServers > The auto-start queue for " + host.getName() + " has been finished"); + Logger.get("SubServers").info("The auto-start queue for " + host.getName() + " has been finished"); } catch (Exception e) { e.printStackTrace(); } @@ -633,7 +641,7 @@ public final class SubPlugin extends BungeeCord implements Listener { updcount++; } } - if (updcount > 0) System.out.println("SubServers > SubServers.Bungee v" + updversion + " is available. You are " + updcount + " version" + ((updcount == 1)?"":"s") + " behind."); + if (updcount > 0) Logger.get("SubServers").info("SubServers.Bungee v" + updversion + " is available. You are " + updcount + " version" + ((updcount == 1)?"":"s") + " behind."); } catch (Exception e) {} } }, 0, TimeUnit.DAYS.toMillis(2)); @@ -650,7 +658,7 @@ public final class SubPlugin extends BungeeCord implements Listener { legServers.clear(); legServers.putAll(getServers()); if (api.disableListeners.size() > 0) { - System.out.println("SubServers > Resetting SubAPI Plugins..."); + Logger.get("SubServers").info("Resetting SubAPI Plugins..."); for (Runnable listener : api.disableListeners) { try { listener.run(); @@ -674,7 +682,7 @@ public final class SubPlugin extends BungeeCord implements Listener { super.stopListeners(); } private void shutdown() throws Exception { api.ready = false; - System.out.println("SubServers > Resetting Hosts and Server Data"); + Logger.get("SubServers").info("Resetting Hosts and Server Data"); List hosts = new ArrayList(); hosts.addAll(this.hosts.keySet()); @@ -876,7 +884,7 @@ public final class SubPlugin extends BungeeCord implements Listener { public void unsudo(SubStoppedEvent e) { if (sudo == e.getServer()) { sudo = null; - System.out.println("SubServers > Reverting to the BungeeCord Console"); + Logger.get("SubServers").info("Reverting to the BungeeCord Console"); } } } diff --git a/SubServers.Client/Bukkit/pom.xml b/SubServers.Client/Bukkit/pom.xml index 3020802d..96118031 100644 --- a/SubServers.Client/Bukkit/pom.xml +++ b/SubServers.Client/Bukkit/pom.xml @@ -48,7 +48,7 @@ net.ME1312.Galaxi GalaxiUtil - 19w20b + 19w20k compile 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 68e28101..8178346e 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 @@ -34,8 +34,8 @@ import java.util.concurrent.TimeUnit; * SubServers Client Plugin Class */ public final class SubPlugin extends JavaPlugin { - protected HashMap subdata = new HashMap(); - protected NamedContainer>> lang = null; + HashMap subdata = new HashMap(); + NamedContainer>> lang = null; public YAMLConfig config; public SubProtocol subprotocol; diff --git a/SubServers.Client/Sponge/pom.xml b/SubServers.Client/Sponge/pom.xml index b2aa4a2d..3a12ab91 100644 --- a/SubServers.Client/Sponge/pom.xml +++ b/SubServers.Client/Sponge/pom.xml @@ -30,7 +30,7 @@ net.ME1312.Galaxi GalaxiUtil - 19w20b + 19w20k compile @@ -123,6 +123,8 @@ ${basedir}/../../Javadoc/SubServers.Client.Sponge -Xdoclint:none + https://src.me1312.net/jenkins/job/GalaxiEngine/javadoc/GalaxiUtil/ + https://src.me1312.net/jenkins/job/SubData/javadoc/Client/ https://jd.spongepowered.org/ diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubPlugin.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubPlugin.java index d3cd72d7..ea16eec7 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubPlugin.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubPlugin.java @@ -42,8 +42,8 @@ import java.util.concurrent.TimeUnit; */ @Plugin(id = "subservers-client-sponge", name = "SubServers-Client-Sponge", authors = "ME1312", version = "2.14a", url = "https://github.com/ME1312/SubServers-2", description = "Access your SubServers from Anywhere") public final class SubPlugin { - protected HashMap subdata = new HashMap(); - protected NamedContainer>> lang = null; + HashMap subdata = new HashMap(); + NamedContainer>> lang = null; public YAMLConfig config; public SubProtocol subprotocol; diff --git a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleCommand.java b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleCommand.java index 97e7cce4..31bea768 100644 --- a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleCommand.java +++ b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleCommand.java @@ -3,6 +3,7 @@ package net.ME1312.SubServers.Console; import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.SubServers.Bungee.Host.Host; import net.ME1312.SubServers.Bungee.Host.SubServer; +import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; @@ -37,7 +38,7 @@ public final class ConsoleCommand { SubServer server = plugin.getProxy().api.getSubServer(name); if (server != null) { if (server.isRunning()) { - System.out.println("SubConsole > Opening console window..."); + Logger.get("SubConsole").info("Opening console window..."); if (!plugin.sCurrent.keySet().contains(name.toLowerCase())) { ConsoleWindow window = new ConsoleWindow(plugin, server.getLogger()); plugin.sCurrent.put(name.toLowerCase(), window); @@ -107,7 +108,7 @@ public final class ConsoleCommand { } } } else { - System.out.println("SubConsole > Usage: /" + label + " [host|server] "); + Logger.get("SubConsole").info("Usage: /" + label + " [host|server] "); } } else { String str = label; @@ -204,7 +205,7 @@ public final class ConsoleCommand { } } } else { - System.out.println("SubConsole > Usage: /" + label + " [host|server] "); + Logger.get("SubConsole").info("Usage: /" + label + " [host|server] "); } } else { String str = label; diff --git a/SubServers.Host/pom.xml b/SubServers.Host/pom.xml index 46c1aeca..1f8385ca 100644 --- a/SubServers.Host/pom.xml +++ b/SubServers.Host/pom.xml @@ -20,7 +20,7 @@ net.ME1312.Galaxi GalaxiEngine - 19w20b + 19w20k compile @@ -122,6 +122,7 @@ -Xdoclint:none https://src.me1312.net/jenkins/job/GalaxiEngine/javadoc/GalaxiEngine/ + https://src.me1312.net/jenkins/job/SubData/javadoc/Client/ diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java index ebfa599a..e3e1d4bd 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java @@ -14,7 +14,7 @@ import net.ME1312.Galaxi.Library.UniversalFile; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.Galaxi.Library.Version.VersionType; -import net.ME1312.Galaxi.Plugin.Plugin; +import net.ME1312.Galaxi.Plugin.App; import net.ME1312.Galaxi.Plugin.PluginInfo; import net.ME1312.SubData.Client.Encryption.AES; import net.ME1312.SubData.Client.Encryption.RSA; @@ -41,10 +41,10 @@ import java.util.jar.Manifest; /** * SubServers.Host Main Class */ -@Plugin(name = "SubServers.Host", version = "2.14a", authors = "ME1312", description = "Host SubServers from other Machines", website = "https://github.com/ME1312/SubServers-2") +@App(name = "SubServers.Host", version = "2.14a", authors = "ME1312", description = "Host SubServers from other Machines", website = "https://github.com/ME1312/SubServers-2") public final class ExHost { - protected HashMap subdata = new HashMap(); - protected NamedContainer>> lang = null; + HashMap subdata = new HashMap(); + NamedContainer>> lang = null; public HashMap templates = new HashMap(); public HashMap servers = new HashMap(); public SubCreator creator; @@ -103,8 +103,8 @@ public final class ExHost { javaarch = System.getProperty("sun.arch.data.model"); } - Version galaxi = Version.fromString(GalaxiEngine.class.getAnnotation(Plugin.class).version()); - Version subservers = Version.fromString(ExHost.class.getAnnotation(Plugin.class).version()); + Version galaxi = Version.fromString(GalaxiEngine.class.getAnnotation(App.class).version()); + Version subservers = Version.fromString(ExHost.class.getAnnotation(App.class).version()); Version galaxibuild = null; Version subserversbuild = null; try { @@ -119,9 +119,8 @@ public final class ExHost { System.out.println(""); System.out.println(System.getProperty("os.name") + ((!System.getProperty("os.name").toLowerCase().startsWith("windows"))?' ' + System.getProperty("os.version"):"") + ((osarch != null)?" [" + osarch + ']':"") + ','); System.out.println("Java " + System.getProperty("java.version") + ((javaarch != null)?" [" + javaarch + ']':"") + ','); - System.out.println(GalaxiEngine.class.getAnnotation(Plugin.class).name() + " v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") - + ((GalaxiEngine.class.getProtectionDomain().getCodeSource().getLocation().equals(ExHost.class.getProtectionDomain().getCodeSource().getLocation()))?" [Patched]":"") + ','); - System.out.println(ExHost.class.getAnnotation(Plugin.class).name() + " v" + subservers.toExtendedString() + ((subserversbuild != null)?" (" + subserversbuild + ')':"")); + System.out.println(GalaxiEngine.class.getAnnotation(App.class).name() + " v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") + ','); + System.out.println(ExHost.class.getAnnotation(App.class).name() + " v" + subservers.toExtendedString() + ((subserversbuild != null)?" (" + subserversbuild + ')':"")); System.out.println(""); } else { new ExHost(options); diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java b/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java index 338f2cfa..3e5ad2b9 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java @@ -42,7 +42,7 @@ public final class SubAPI { * Gets the SubServers Internals * * @deprecated Use SubAPI Methods when available - * @return SubPlugin Internals + * @return ExHost Internals */ @Deprecated public ExHost getInternals() { @@ -50,9 +50,9 @@ public final class SubAPI { } /** - * Get the Server Name + * Get the Host Name * - * @return Server Name + * @return Host Name */ public String getName() { return name; diff --git a/SubServers.Sync/pom.xml b/SubServers.Sync/pom.xml index 88b50e2b..78e027af 100644 --- a/SubServers.Sync/pom.xml +++ b/SubServers.Sync/pom.xml @@ -30,7 +30,7 @@ net.ME1312.Galaxi GalaxiUtil - 19w20b + 19w20k compile @@ -136,6 +136,8 @@ ${basedir}/../Javadoc/SubServers.Sync -Xdoclint:none + https://src.me1312.net/jenkins/job/GalaxiEngine/javadoc/GalaxiUtil/ + https://src.me1312.net/jenkins/job/SubData/javadoc/Client/ https://ci.md-5.net/job/BungeeCord/ws/api/target/apidocs/ diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java index 9b6f0abb..d767b497 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java @@ -4,12 +4,14 @@ import net.ME1312.Galaxi.Library.Container; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; import net.ME1312.Galaxi.Library.Version.VersionType; +import net.ME1312.SubServers.Sync.Library.Compatibility.GalaxiInfo; import java.lang.reflect.Field; import java.security.Security; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.logging.Logger; /** * SubServers/BungeeCord Launch Class @@ -75,54 +77,67 @@ public final class Launch { javaarch = System.getProperty("sun.arch.data.model"); } + Version galaxi = GalaxiInfo.getVersion(); + Version galaxibuild = GalaxiInfo.getSignature(); + System.out.println(""); System.out.println(System.getProperty("os.name") + ((!System.getProperty("os.name").toLowerCase().startsWith("windows"))?' ' + System.getProperty("os.version"):"") + ((osarch != null)?" [" + osarch + ']':"") + ','); System.out.println("Java " + System.getProperty("java.version") + ((javaarch != null)?" [" + javaarch + ']':"") + ','); - System.out.println("BungeeCord" + ((patched)?" [Patched] ":" ") + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ','); + if (galaxi != null) + System.out.println("GalaxiEngine v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") + ','); + System.out.println("BungeeCord" + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ((patched)?" [Patched]":"") + ','); System.out.println("SubServers.Sync v" + SubPlugin.version.toExtendedString() + ((SubPlugin.class.getPackage().getSpecificationTitle() != null)?" (" + SubPlugin.class.getPackage().getSpecificationTitle() + ')':"")); System.out.println(""); } else { - System.out.println(""); - System.out.println("*******************************************"); - 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! ***"); - System.out.println("*******************************************"); - try { - if (net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion() != null) { - Date date = (new SimpleDateFormat("yyyyMMdd")).parse(net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion()); - Calendar line = Calendar.getInstance(); - line.add(3, -4); - if (date.before(line.getTime())) { - System.out.println("*** Warning: BungeeCord is outdated ***"); - System.out.println("*** Please download a new build from: ***"); - System.out.println("*** http://ci.md-5.net/job/BungeeCord ***"); - System.out.println("*** Errors may arise on older versions! ***"); - System.out.println("*******************************************"); - } - } else throw new Exception(); - } catch (Exception e) { - System.out.println("*** Problem checking BungeeCord Version ***"); - System.out.println("*** BungeeCord could be outdated. ***"); - System.out.println("*** ***"); - System.out.println("*** Errors may arise on older versions! ***"); + boolean gb; + if (!(gb = !Util.isException(() -> Util.reflect(net.md_5.bungee.log.LoggingOutputStream.class.getMethod("setLogger", Logger.class, String.class), null, + Util.reflect(net.md_5.bungee.log.BungeeLogger.class.getMethod("get", String.class), null, "SubServers"), "net.ME1312.SubServers.Sync.")))) { + System.out.println(""); System.out.println("*******************************************"); + 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! ***"); + System.out.println("*******************************************"); + try { + if (net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion() != null) { + Date date = (new SimpleDateFormat("yyyyMMdd")).parse(net.md_5.bungee.BungeeCord.class.getPackage().getSpecificationVersion()); + Calendar line = Calendar.getInstance(); + line.add(3, -4); + if (date.before(line.getTime())) { + System.out.println("*** Warning: BungeeCord is outdated ***"); + System.out.println("*** Please download a new build from: ***"); + System.out.println("*** http://ci.md-5.net/job/BungeeCord ***"); + System.out.println("*** Errors may arise on older versions! ***"); + System.out.println("*******************************************"); + } + } else throw new Exception(); + } catch (Exception e) { + System.out.println("*** Problem checking BungeeCord Version ***"); + System.out.println("*** BungeeCord could be outdated. ***"); + System.out.println("*** ***"); + System.out.println("*** Errors may arise on older versions! ***"); + System.out.println("*******************************************"); + } + System.out.println(""); + } else { + } - System.out.println(""); SubPlugin plugin = new SubPlugin(System.out, patched); net.md_5.bungee.api.ProxyServer.class.getMethod("setInstance", net.md_5.bungee.api.ProxyServer.class).invoke(null, plugin); - plugin.getLogger().info("Enabled " + plugin.getBungeeName() + " version " + plugin.getVersion()); + if (!gb) plugin.getLogger().info("Enabled " + plugin.getBungeeName() + " version " + plugin.getVersion()); plugin.start(); if (!options.has("noconsole")) { try { - if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole") != null, false)) { + if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands") != null, false)) { // Waterfall Setup Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands").invoke(null); } else if (Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("start") != null, false)) { Class console = Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole"); console.getMethod("start").invoke(console.getConstructor().newInstance()); + } else if (Util.getDespiteException(() -> Class.forName("net.md_5.bungee.util.GalaxiBungeeInfo").getMethod("get").invoke(null).getClass().getCanonicalName().equals("net.ME1312.Galaxi.Plugin.PluginInfo"), false)) { + // GalaxiBungee initializes its console automatically } else { String line; while (plugin.isRunning && (line = plugin.getConsoleReader().readLine(">")) != null) { diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiCommand.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiCommand.java new file mode 100644 index 00000000..cac1603e --- /dev/null +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiCommand.java @@ -0,0 +1,47 @@ +package net.ME1312.SubServers.Sync.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.md_5.bungee.api.plugin.Command; + +/** + * Galaxi Command Compatibility Class + */ +public class GalaxiCommand { + + /** + * Set the Description of a Command + * + * @param command Command + * @param value Value + * @return The Command + */ + public static Command description(Command command, String value) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("description", String.class), command, value)); + return command; + } + + /** + * Set the Help Page for a Command + * + * @param command Command + * @param lines Help Page Lines + * @return The Command + */ + public static Command help(Command command, String... lines) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("help", String[].class), command, (Object) lines)); + return command; + } + + /** + * Set the Usage of a Command + * + * @param command Command + * @param args Argument Placeholders + * @return The Command + */ + public static Command usage(Command command, String... args) { + Util.isException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Plugin.Command.Command").getMethod("usage", String[].class), command, (Object) args)); + return command; + } + +} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiInfo.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiInfo.java new file mode 100644 index 00000000..ba744eb3 --- /dev/null +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/GalaxiInfo.java @@ -0,0 +1,47 @@ +package net.ME1312.SubServers.Sync.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; + +import java.lang.annotation.Annotation; +import java.util.jar.Manifest; + +/** + * Galaxi Info Class + */ +public class GalaxiInfo { + private GalaxiInfo() {} + + @SuppressWarnings("unchecked") + private static Class asAnnotation(Class clazz) { + return (Class) clazz; + } + + /** + * Get the Galaxi Version + * + * @return Galaxi Version + */ + public static Version getVersion() { + return Util.getDespiteException(() -> Version.fromString((String) Class.forName("net.ME1312.Galaxi.Plugin.App").getMethod("version").invoke( + Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getAnnotation(asAnnotation(Class.forName("net.ME1312.Galaxi.Plugin.App"))))), null); + } + + /** + * Get the Galaxi Build Signature + * + * @return Galaxi Build Signature + */ + public static Version getSignature() { + try { + Manifest manifest = new Manifest(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getResourceAsStream("/META-INF/GalaxiEngine.MF")); + if (manifest.getMainAttributes().getValue("Implementation-Version") != null && manifest.getMainAttributes().getValue("Implementation-Version").length() > 0) { + return new Version(manifest.getMainAttributes().getValue("Implementation-Version")); + } else { + return null; + } + } catch (Throwable e) { + return null; + } + } +} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/Logger.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/Logger.java new file mode 100644 index 00000000..04b2783d --- /dev/null +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Compatibility/Logger.java @@ -0,0 +1,61 @@ +package net.ME1312.SubServers.Sync.Library.Compatibility; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.SubServers.Sync.SubAPI; +import net.ME1312.SubServers.Sync.SubPlugin; +import net.md_5.bungee.api.ProxyServer; + +import java.util.HashMap; +import java.util.logging.Handler; +import java.util.logging.LogRecord; + +/** + * Logger Compatibility Class + */ +public class Logger { + private static final HashMap existing = new HashMap(); + private static SubPlugin plugin; + + /** + * Get a logger + * + * @param prefix Prefix + * @return Logger + */ + @SuppressWarnings("deprecation") + public static java.util.logging.Logger get(String prefix) { + if (!existing.keySet().contains(prefix)) { + SubPlugin plugin = SubAPI.getInstance().getInternals(); + java.util.logging.Logger log; + + if (plugin.isGalaxi) { + log = Util.getDespiteException(() -> Util.reflect(Class.forName("net.ME1312.Galaxi.Library.Log.Logger").getDeclaredMethod("toPrimitive"), + Util.reflect(Class.forName("net.ME1312.Galaxi.Library.Log.Logger").getConstructor(String.class), prefix)), null); + } else { + log = java.util.logging.Logger.getAnonymousLogger(); + log.setUseParentHandlers(false); + log.addHandler(new Handler() { + private boolean open = true; + + @Override + public void publish(LogRecord record) { + if (open) + plugin.getLogger().log(record.getLevel(), prefix + " > " + record.getMessage(), record.getParameters()); + } + + @Override + public void flush() { + + } + + @Override + public void close() throws SecurityException { + open = false; + } + }); + } + existing.put(prefix, log); + } + return existing.get(prefix); + } +} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Files/config.yml b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Files/config.yml deleted file mode 100644 index 1d757a70..00000000 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Files/config.yml +++ /dev/null @@ -1,16 +0,0 @@ -Settings: - Version: '2.11.2a+' - Override-Bungee-Commands: true - UPnP: - Forward-Proxy: true - SubData: - Address: '127.0.0.1:4391' - Password: 'default' - Encryption: 'AES' - -Sync: - Disabled-Commands: false - Forced-Hosts: true - Motd: false - Player-Limit: false - Server-Priorities: true \ No newline at end of file diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Updates/ConfigUpdater.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Updates/ConfigUpdater.java index 35200c9f..ade4d04e 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Updates/ConfigUpdater.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Updates/ConfigUpdater.java @@ -4,6 +4,7 @@ import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Config.YAMLSection; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Sync.Library.Compatibility.Logger; import net.ME1312.SubServers.Sync.SubAPI; import java.io.File; @@ -36,7 +37,7 @@ public class ConfigUpdater { if (!existing.contains("Settings") || !existing.getMap("Settings").contains("Version")) { i++; - System.out.println("SubServers > Created ./SubServers/sync.yml"); + Logger.get("SubServers").info("Created ./SubServers/sync.yml"); } else { if (was.compareTo(new Version("19w17a")) <= 0) { @@ -46,7 +47,7 @@ public class ConfigUpdater { // i++ //} - if (i > 0) System.out.println("SubServers > Updated ./SubServers/sync.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); + if (i > 0) Logger.get("SubServers").info("Updated ./SubServers/sync.yml (" + i + " pass" + ((i != 1)?"es":"") + ")"); } if (i > 0) { diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadLang.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadLang.java index 37ad42ba..0722cf84 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadLang.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketDownloadLang.java @@ -6,6 +6,7 @@ import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Client.Protocol.PacketObjectIn; import net.ME1312.SubData.Client.Protocol.PacketOut; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Sync.Library.Compatibility.Logger; import net.ME1312.SubServers.Sync.SubPlugin; import java.util.Calendar; @@ -35,7 +36,7 @@ public class PacketDownloadLang implements PacketObjectIn, PacketOut { public void receive(SubDataClient client, ObjectMap data) { try { Util.reflect(SubPlugin.class.getDeclaredField("lang"), plugin, new NamedContainer<>(Calendar.getInstance().getTime().getTime(), data.getObject(0x0001))); - System.out.println("SubData > Lang Settings Downloaded"); + Logger.get("SubData").info("Lang Settings Downloaded"); } catch (IllegalAccessException | NoSuchFieldException e) { e.printStackTrace(); } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketLinkProxy.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketLinkProxy.java index 1096c75b..49f1424b 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketLinkProxy.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketLinkProxy.java @@ -6,6 +6,7 @@ import net.ME1312.SubData.Client.Protocol.Initial.InitialPacket; import net.ME1312.SubData.Client.Protocol.PacketObjectIn; import net.ME1312.SubData.Client.Protocol.PacketObjectOut; import net.ME1312.SubData.Client.SubDataClient; +import net.ME1312.SubServers.Sync.Library.Compatibility.Logger; import net.ME1312.SubServers.Sync.SubAPI; import net.ME1312.SubServers.Sync.SubPlugin; @@ -55,7 +56,7 @@ public class PacketLinkProxy implements InitialPacket, PacketObjectIn, e.printStackTrace(); } } else { - System.out.println("SubData > Could not link name with proxy" + ((data.contains(0x0002))?": "+data.getRawString(0x0002):'.')); + Logger.get("SubData").info("Could not link name with proxy" + ((data.contains(0x0002))?": "+data.getRawString(0x0002):'.')); try { if (data.getInt(0x0001) == 2) { if (!plugin.config.get().getMap("Settings").getMap("SubData").contains("Name")) { @@ -63,7 +64,7 @@ public class PacketLinkProxy implements InitialPacket, PacketObjectIn, plugin.config.save(); } if (plugin.config.get().getMap("Settings").getMap("SubData").getRawString("Name").length() <= 0) - System.out.println("SubData > Use the proxy \"Name\" option to override auto-linking"); + Logger.get("SubData").info("Use the proxy \"Name\" option to override auto-linking"); } } catch (Exception e) {} new IllegalStateException().printStackTrace(); diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java index 1331b69b..af128f69 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/SubProtocol.java @@ -104,30 +104,7 @@ public class SubProtocol extends SubDataProtocol { } private Logger getLogger(int channel) { - Logger log = Logger.getAnonymousLogger(); - log.setUseParentHandlers(false); - log.addHandler(new Handler() { - private boolean open = true; - private String prefix = "SubData" + ((channel != 0)? "/Sub-"+channel:""); - - @Override - public void publish(LogRecord record) { - if (open) - ProxyServer.getInstance().getLogger().log(record.getLevel(), prefix + " > " + record.getMessage(), record.getParameters()); - } - - @Override - public void flush() { - - } - - @Override - public void close() throws SecurityException { - open = false; - } - }); - - return log; + return net.ME1312.SubServers.Sync.Library.Compatibility.Logger.get("SubData" + ((channel != 0)? "/Sub-"+channel:"")); } @Override @@ -158,7 +135,7 @@ public class SubProtocol extends SubDataProtocol { subdata.sendPacket(new PacketDownloadLang()); subdata.sendPacket(new PacketDownloadPlatformInfo(platform -> { if (plugin.lastReload != platform.getMap("subservers").getLong("last-reload")) { - System.out.println("SubServers > Resetting Server Data"); + net.ME1312.SubServers.Sync.Library.Compatibility.Logger.get("SubServers").info("Resetting Server Data"); plugin.servers.clear(); plugin.lastReload = platform.getMap("subservers").getLong("last-reload"); } @@ -173,7 +150,7 @@ public class SubProtocol extends SubDataProtocol { if (plugin.config.get().getMap("Sync", new ObjectMap<>()).getBoolean("Disabled-Commands", false)) Util.reflect(Configuration.class.getDeclaredField("disabledCommands"), plugin.getConfig(), platform.getMap("bungee").getRawStringList("disabled-cmds")); if (plugin.config.get().getMap("Sync", new ObjectMap<>()).getBoolean("Player-Limit", false)) Util.reflect(Configuration.class.getDeclaredField("playerLimit"), plugin.getConfig(), platform.getMap("bungee").getInt("player-limit")); } catch (Exception e) { - System.out.println("SubServers > Problem syncing BungeeCord configuration options"); + net.ME1312.SubServers.Sync.Library.Compatibility.Logger.get("SubServers").info("Problem syncing BungeeCord configuration options"); e.printStackTrace(); } @@ -192,7 +169,7 @@ public class SubProtocol extends SubDataProtocol { int reconnect = plugin.config.get().getMap("Settings").getMap("SubData").getInt("Reconnect", 30); if (Util.getDespiteException(() -> Util.reflect(SubPlugin.class.getDeclaredField("reconnect"), plugin), false) && reconnect > 0 && client.name() != DisconnectReason.PROTOCOL_MISMATCH && client.name() != DisconnectReason.ENCRYPTION_MISMATCH) { - System.out.println("SubData > Attempting reconnect in " + reconnect + " seconds"); + net.ME1312.SubServers.Sync.Library.Compatibility.Logger.get("SubData").info("Attempting reconnect in " + reconnect + " seconds"); Timer timer = new Timer("SubServers.Sync::SubData_Reconnect_Handler"); timer.scheduleAtFixedRate(new TimerTask() { @Override @@ -202,7 +179,7 @@ public class SubProtocol extends SubDataProtocol { timer.cancel(); } catch (InvocationTargetException e) { if (e.getTargetException() instanceof IOException) { - System.out.println("SubData > Connection was unsuccessful, retrying in " + reconnect + " seconds"); + net.ME1312.SubServers.Sync.Library.Compatibility.Logger.get("SubData").info("Connection was unsuccessful, retrying in " + reconnect + " seconds"); } else e.printStackTrace(); } catch (NoSuchMethodException | IllegalAccessException e) { e.printStackTrace(); diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java index 2adebcb6..72ca7ee0 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java @@ -67,9 +67,9 @@ public final class SubAPI { } /** - * Get the Server Name + * Get the Proxy Name * - * @return Server Name + * @return Proxy Name */ @SuppressWarnings("unchecked") public String getName() { diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java index 8e5ca36a..78597307 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java @@ -9,6 +9,7 @@ import net.ME1312.Galaxi.Library.Container; import net.ME1312.Galaxi.Library.NamedContainer; import net.ME1312.Galaxi.Library.Util; import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Sync.Library.Compatibility.GalaxiInfo; import net.ME1312.SubServers.Sync.Network.API.*; import net.ME1312.SubServers.Sync.Network.Packet.*; import net.ME1312.SubServers.Sync.Server.ServerContainer; @@ -30,6 +31,8 @@ import java.nio.charset.Charset; import java.util.*; import java.util.concurrent.TimeUnit; +import static net.ME1312.SubServers.Sync.Library.Compatibility.GalaxiCommand.*; + @SuppressWarnings("deprecation") public final class SubCommand extends CommandX { static HashMap>> players = new HashMap>>(); @@ -54,6 +57,15 @@ public final class SubCommand extends CommandX { super(command); this.plugin = plugin; this.label = '/' + command; + + description(this, "The SubServers Command"); + help(this, + "The command for accessing the SubServers Server Manager.", + "", + "Permission: subservers.command", + "Extended help entries:", + " /sub help" + ); } @SuppressWarnings("unchecked") @@ -95,10 +107,15 @@ public final class SubCommand extends CommandX { javaarch = System.getProperty("sun.arch.data.model"); } + Version galaxi = GalaxiInfo.getVersion(); + Version galaxibuild = GalaxiInfo.getSignature(); + sender.sendMessage("SubServers > These are the platforms and versions that are running SubServers.Sync:"); sender.sendMessage(" " + System.getProperty("os.name") + ((!System.getProperty("os.name").toLowerCase().startsWith("windows"))?' ' + System.getProperty("os.version"):"") + ((osarch != null)?" [" + osarch + ']':"") + ','); sender.sendMessage(" Java " + System.getProperty("java.version") + ((javaarch != null)?" [" + javaarch + ']':"") + ','); - sender.sendMessage(" " + plugin.getBungeeName() + ((plugin.isPatched)?" [Patched] ":" ") + net.md_5.bungee.Bootstrap.class.getPackage().getImplementationVersion() + ','); + if (galaxi != null) + Util.isException(() -> sender.sendMessage("GalaxiEngine v" + galaxi.toExtendedString() + ((galaxibuild != null)?" (" + galaxibuild + ')':"") + ',')); + sender.sendMessage(" " + plugin.getBungeeName() + ((plugin.isGalaxi)?" v":" ") + plugin.getVersion() + ((plugin.isPatched)?" [Patched]":"") + ','); sender.sendMessage(" SubServers.Sync v" + SubPlugin.version.toExtendedString() + ((plugin.api.getWrapperBuild() != null)?" (" + plugin.api.getWrapperBuild() + ')':"")); sender.sendMessage(""); new Thread(() -> { @@ -871,6 +888,16 @@ public final class SubCommand extends CommandX { private BungeeServer(SubPlugin plugin, String command) { super(command, "bungeecord.command.server"); this.plugin = plugin; + + description(this, "Displays a list of or connects you to servers"); + help(this, + "Displays a list of all players connected to BungeeCord.", + "This list is separated into groups by server.", + "", + "Permission: bungeecord.command.list", + "Example:", + " /glist" + ); } protected static NamedContainer newInstance(SubPlugin plugin, String command) { @@ -965,6 +992,16 @@ public final class SubCommand extends CommandX { protected BungeeList(SubPlugin plugin, String command) { super(command, "bungeecord.command.list"); this.plugin = plugin; + + description(this, "Displays a list of all players"); + help(this, + "Displays a list of all players connected to BungeeCord.", + "This list is separated into groups by server.", + "", + "Permission: bungeecord.command.list", + "Example:", + " /glist" + ); } /** diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java index a9407452..f648ee57 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java @@ -7,6 +7,7 @@ import net.ME1312.SubData.Client.Encryption.RSA; import net.ME1312.SubServers.Sync.Event.*; import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Map.ObjectMap; +import net.ME1312.SubServers.Sync.Library.Compatibility.Logger; import net.ME1312.SubServers.Sync.Library.Fallback.SmartReconnectHandler; import net.ME1312.SubServers.Sync.Library.Metrics; import net.ME1312.Galaxi.Library.NamedContainer; @@ -44,8 +45,8 @@ import java.util.concurrent.TimeUnit; * Main Plugin Class */ public final class SubPlugin extends BungeeCord implements Listener { - protected HashMap subdata = new HashMap(); - protected NamedContainer>> lang = null; + HashMap subdata = new HashMap(); + NamedContainer>> lang = null; public final Map servers = new TreeMap(); private final HashMap> fallbackLimbo = new HashMap>(); @@ -58,13 +59,20 @@ public final class SubPlugin extends BungeeCord implements Listener { public static final Version version = Version.fromString("2.14a"); public final boolean isPatched; + public final boolean isGalaxi; public long lastReload = -1; private boolean reconnect = false; private boolean posted = false; - protected SubPlugin(PrintStream out, boolean isPatched) throws IOException { + protected SubPlugin(PrintStream out, boolean isPatched) throws Exception { this.isPatched = isPatched; - System.out.println("SubServers > Loading SubServers.Sync v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion()[api.getGameVersion().length - 1] + ")"); + this.isGalaxi = !Util.isException(() -> + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.PluginManager").getMethod("findClasses", Class.class), + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getMethod("getPluginManager"), + Util.reflect(Class.forName("net.ME1312.Galaxi.Engine.GalaxiEngine").getMethod("getInstance"), null)), Launch.class)); + + Util.reflect(Logger.class.getDeclaredField("plugin"), null, this); + Logger.get("SubServers").info("Loading SubServers.Sync v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion()[api.getGameVersion().length - 1] + ")"); this.out = out; if (!(new UniversalFile(dir, "config.yml").exists())) { @@ -72,7 +80,7 @@ public final class SubPlugin extends BungeeCord implements Listener { YAMLConfig tmp = new YAMLConfig(new UniversalFile("config.yml")); tmp.get().set("stats", UUID.randomUUID().toString()); tmp.save(); - System.out.println("SubServers > Created ./config.yml"); + Logger.get("SubServers").info("Created ./config.yml"); } UniversalFile dir = new UniversalFile(this.dir, "SubServers"); dir.mkdir(); @@ -83,7 +91,7 @@ public final class SubPlugin extends BungeeCord implements Listener { subprotocol = SubProtocol.get(); getPluginManager().registerListener(null, this); - System.out.println("SubServers > Loading BungeeCord Libraries..."); + Logger.get("SubServers").info("Loading BungeeCord Libraries..."); } /** @@ -109,19 +117,19 @@ public final class SubPlugin extends BungeeCord implements Listener { subprotocol.registerCipher("AES-192", new AES(192, config.get().getMap("Settings").getMap("SubData").getRawString("Password"))); subprotocol.registerCipher("AES-256", new AES(256, config.get().getMap("Settings").getMap("SubData").getRawString("Password"))); - System.out.println("SubData > AES Encryption Available"); + Logger.get("SubData").info("AES Encryption Available"); } if (new UniversalFile(dir, "SubServers:subdata.rsa.key").exists()) { try { subprotocol.registerCipher("RSA", new RSA(new UniversalFile(dir, "SubServers:subdata.rsa.key"))); - System.out.println("SubData > RSA Encryption Available"); + Logger.get("SubData").info("RSA Encryption Available"); } catch (Exception e) { e.printStackTrace(); } } reconnect = true; - System.out.println("SubData > "); + Logger.get("SubData").info(""); connect(); super.startListeners(); @@ -176,7 +184,7 @@ public final class SubPlugin extends BungeeCord implements Listener { updcount++; } } - if (updcount > 0) System.out.println("SubServers > SubServers.Sync v" + updversion + " is available. You are " + updcount + " version" + ((updcount == 1)?"":"s") + " behind."); + if (updcount > 0) Logger.get("SubServers").info("SubServers.Sync v" + updversion + " is available. You are " + updcount + " version" + ((updcount == 1)?"":"s") + " behind."); } catch (Exception e) {} } }, 0, TimeUnit.DAYS.toMillis(2)); @@ -249,7 +257,7 @@ public final class SubPlugin extends BungeeCord implements Listener { @Override public void stopListeners() { try { - System.out.println("SubServers > Resetting Server Data"); + Logger.get("SubServers").info("Resetting Server Data"); servers.clear(); reconnect = false; @@ -385,11 +393,11 @@ public final class SubPlugin extends BungeeCord implements Listener { if (server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer) { servers.put(server.getName().toLowerCase(), new SubServerContainer(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist(), ((net.ME1312.SubServers.Sync.Network.API.SubServer) server).isRunning())); - System.out.println("SubServers > Added SubServer: " + e.getServer()); + Logger.get("SubServers").info("Added SubServer: " + e.getServer()); } else { servers.put(server.getName().toLowerCase(), new ServerContainer(server.getSignature(), server.getName(), server.getDisplayName(), server.getAddress(), getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist())); - System.out.println("SubServers > Added Server: " + e.getServer()); + Logger.get("SubServers").info("Added Server: " + e.getServer()); } } else System.out.println("PacketDownloadServerInfo(" + e.getServer() + ") returned with an invalid response"); }); @@ -407,7 +415,7 @@ public final class SubPlugin extends BungeeCord implements Listener { getSubDataAsMap(server), server.getMotd(), server.isHidden(), server.isRestricted(), server.getWhitelist())); } - System.out.println("SubServers > Added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); + Logger.get("SubServers").info("Added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); return true; } else { if (server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer) { @@ -423,7 +431,7 @@ public final class SubPlugin extends BungeeCord implements Listener { if (!server.getDisplayName().equals(current.getDisplayName())) current.setDisplayName(server.getDisplayName()); - System.out.println("SubServers > Re-added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); + Logger.get("SubServers").info("Re-added "+((server instanceof net.ME1312.SubServers.Sync.Network.API.SubServer)?"Sub":"")+"Server: " + server.getName()); return false; } } @@ -479,6 +487,6 @@ public final class SubPlugin extends BungeeCord implements Listener { public void remove(SubRemoveServerEvent e) { if (servers.keySet().contains(e.getServer().toLowerCase())) servers.remove(e.getServer().toLowerCase()); - System.out.println("SubServers > Removed Server: " + e.getServer()); + Logger.get("SubServers").info("Removed Server: " + e.getServer()); } }