diff --git a/Artifacts/SubServers.Bungee.jar b/Artifacts/SubServers.Bungee.jar index 14866f85..08e1bb6f 100644 Binary files a/Artifacts/SubServers.Bungee.jar and b/Artifacts/SubServers.Bungee.jar differ diff --git a/Artifacts/SubServers.Client.Bukkit.jar b/Artifacts/SubServers.Client.Bukkit.jar index 488568e2..67aa99c0 100644 Binary files a/Artifacts/SubServers.Client.Bukkit.jar and b/Artifacts/SubServers.Client.Bukkit.jar differ diff --git a/Artifacts/SubServers.Host.jar b/Artifacts/SubServers.Host.jar index e78c83f3..dc32cbb6 100644 Binary files a/Artifacts/SubServers.Host.jar and b/Artifacts/SubServers.Host.jar differ diff --git a/Artifacts/SubServers.Sync.jar b/Artifacts/SubServers.Sync.jar index 594223f2..fa46a869 100644 Binary files a/Artifacts/SubServers.Sync.jar and b/Artifacts/SubServers.Sync.jar differ diff --git a/Javadoc/SubServers.Bungee.jar b/Javadoc/SubServers.Bungee.jar index 3f69b1d8..cff237a9 100644 Binary files a/Javadoc/SubServers.Bungee.jar and b/Javadoc/SubServers.Bungee.jar differ diff --git a/Javadoc/SubServers.Bungee/index-all.html b/Javadoc/SubServers.Bungee/index-all.html index 0f3c7ce7..bb87bd18 100644 --- a/Javadoc/SubServers.Bungee/index-all.html +++ b/Javadoc/SubServers.Bungee/index-all.html @@ -1062,7 +1062,7 @@
 
getGameVersion() - Method in class net.ME1312.SubServers.Bungee.SubAPI
-
Gets the Recommended Minecraft Version
+
Get an array of compatible Minecraft Versions
getGlobalPlayers() - Method in interface net.ME1312.SubServers.Bungee.Host.Server
diff --git a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/SubAPI.html b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/SubAPI.html index d2746484..e35fcf33 100644 --- a/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/SubAPI.html +++ b/Javadoc/SubServers.Bungee/net/ME1312/SubServers/Bungee/SubAPI.html @@ -259,9 +259,9 @@ extends java.lang.Object -Version +Version[] getGameVersion() -
Gets the Recommended Minecraft Version
+
Get an array of compatible Minecraft Versions
@@ -1309,11 +1309,11 @@ public 
  • getGameVersion

    -
    public Version getGameVersion()
    -
    Gets the Recommended Minecraft Version
    +
    public Version[] getGameVersion()
    +
    Get an array of compatible Minecraft Versions
    Returns:
    -
    Minecraft Version
    +
    Minecraft Versions
  • diff --git a/Javadoc/SubServers.Client.Bukkit.jar b/Javadoc/SubServers.Client.Bukkit.jar index 83f0da4d..8f6426c2 100644 Binary files a/Javadoc/SubServers.Client.Bukkit.jar and b/Javadoc/SubServers.Client.Bukkit.jar differ diff --git a/Javadoc/SubServers.Host.jar b/Javadoc/SubServers.Host.jar index 1c8bd49d..ab4cb7b0 100644 Binary files a/Javadoc/SubServers.Host.jar and b/Javadoc/SubServers.Host.jar differ diff --git a/Javadoc/SubServers.Sync.jar b/Javadoc/SubServers.Sync.jar index 1044f69a..ad48f83e 100644 Binary files a/Javadoc/SubServers.Sync.jar and b/Javadoc/SubServers.Sync.jar differ diff --git a/Javadoc/SubServers.Sync/index-all.html b/Javadoc/SubServers.Sync/index-all.html index 9156bcd8..577a99f7 100644 --- a/Javadoc/SubServers.Sync/index-all.html +++ b/Javadoc/SubServers.Sync/index-all.html @@ -605,7 +605,7 @@
    getGameVersion() - Method in class net.ME1312.SubServers.Sync.SubAPI
    -
    Gets the Latest Supported Minecraft Version
    +
    Get an array of compatible Minecraft Versions
    getHost() - Method in class net.ME1312.SubServers.Sync.Event.SubAddHostEvent
    diff --git a/Javadoc/SubServers.Sync/net/ME1312/SubServers/Sync/SubAPI.html b/Javadoc/SubServers.Sync/net/ME1312/SubServers/Sync/SubAPI.html index b92a0115..4e0051c3 100644 --- a/Javadoc/SubServers.Sync/net/ME1312/SubServers/Sync/SubAPI.html +++ b/Javadoc/SubServers.Sync/net/ME1312/SubServers/Sync/SubAPI.html @@ -136,9 +136,9 @@ extends java.lang.Object -Version +Version[] getGameVersion() -
    Gets the Latest Supported Minecraft Version
    +
    Get an array of compatible Minecraft Versions
    @@ -418,11 +418,11 @@ public 
  • getGameVersion

    -
    public Version getGameVersion()
    -
    Gets the Latest Supported Minecraft Version
    +
    public Version[] getGameVersion()
    +
    Get an array of compatible Minecraft Versions
    Returns:
    -
    Minecraft Version
    +
    Minecraft Versions
  • diff --git a/SubServers.Bungee/pom.xml b/SubServers.Bungee/pom.xml index 45ccd331..7ab9e88c 100644 --- a/SubServers.Bungee/pom.xml +++ b/SubServers.Bungee/pom.xml @@ -28,7 +28,7 @@ net.md_5 bungeecord-internal - 1.8-SNAPSHOT + 1.9-SNAPSHOT provided diff --git a/SubServers.Bungee/src.jar b/SubServers.Bungee/src.jar index 84f18a5e..ee692395 100644 Binary files a/SubServers.Bungee/src.jar and b/SubServers.Bungee/src.jar differ diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java index 507c7c55..5ecba63d 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java @@ -89,17 +89,21 @@ public final class Launch { if (!options.has("noconsole")) { String line; - while (plugin.isRunning && (line = plugin.getConsoleReader().readLine(">")) != null) { - if (plugin.sudo == null) { - if (!plugin.getPluginManager().dispatchCommand(net.md_5.bungee.command.ConsoleCommandSender.class.cast(net.md_5.bungee.command.ConsoleCommandSender.class.getMethod("getInstance").invoke(null)), line)) { - plugin.getConsole().sendMessage(net.md_5.bungee.api.ChatColor.RED + "Command not found"); + try { + while (plugin.isRunning && (line = plugin.getConsoleReader().readLine(">")) != null) { + if (plugin.sudo == null) { + if (!plugin.getPluginManager().dispatchCommand(net.md_5.bungee.command.ConsoleCommandSender.class.cast(net.md_5.bungee.command.ConsoleCommandSender.class.getMethod("getInstance").invoke(null)), line)) { + plugin.getConsole().sendMessage(net.md_5.bungee.api.ChatColor.RED + "Command not found"); + } + } else if (line.equalsIgnoreCase("exit")) { + plugin.sudo = null; + System.out.println("SubServers > Reverting to the BungeeCord Console"); + } else { + plugin.sudo.command(line); } - } else if (line.equalsIgnoreCase("exit")) { - plugin.sudo = null; - System.out.println("SubServers > Reverting to the BungeeCord Console"); - } else { - plugin.sudo.command(line); } + } catch (NoSuchMethodError | NoSuchMethodException e) { + plugin.getLogger().warning("Standard BungeeCord console not found; Console commands now disabled."); } } } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java index b212671d..93b816f1 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java @@ -7,6 +7,8 @@ import net.ME1312.SubServers.Bungee.Network.PacketIn; import net.ME1312.SubServers.Bungee.Network.PacketOut; import net.ME1312.SubServers.Bungee.SubPlugin; +import java.util.Arrays; + /** * Download Proxy Info Packet */ @@ -49,7 +51,7 @@ public class PacketDownloadProxyInfo implements PacketIn, PacketOut { bungee.set("servers", plugin.api.getServers().size()); data.set("bungee", bungee); YAMLSection minecraft = new YAMLSection(); - minecraft.set("version", plugin.api.getGameVersion()); + minecraft.set("version", Arrays.asList(plugin.api.getGameVersion())); minecraft.set("players", plugin.api.getGlobalPlayers().size()); data.set("minecraft", minecraft); YAMLSection system = new YAMLSection(); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java index f394e661..4cfa64ec 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java @@ -5,6 +5,7 @@ import net.ME1312.SubServers.Bungee.Event.SubAddServerEvent; import net.ME1312.SubServers.Bungee.Event.SubRemoveHostEvent; import net.ME1312.SubServers.Bungee.Event.SubRemoveServerEvent; import net.ME1312.SubServers.Bungee.Host.*; +import net.ME1312.SubServers.Bungee.Library.Container; import net.ME1312.SubServers.Bungee.Library.Exception.InvalidHostException; import net.ME1312.SubServers.Bungee.Library.NamedContainer; import net.ME1312.SubServers.Bungee.Library.UniversalFile; @@ -12,6 +13,7 @@ import net.ME1312.SubServers.Bungee.Library.Util; import net.ME1312.SubServers.Bungee.Library.Version.Version; import net.ME1312.SubServers.Bungee.Network.SubDataServer; import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.protocol.ProtocolConstants; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; @@ -666,31 +668,36 @@ public final class SubAPI { } /** - * Gets the Recommended Minecraft Version + * Get an array of compatible Minecraft Versions * - * @return Minecraft Version + * @return Minecraft Versions */ - public Version getGameVersion() { - if (System.getProperty("subservers.minecraft.version", "").length() > 0) { - return new Version(System.getProperty("subservers.minecraft.version")); - } else { - String raw = plugin.getGameVersion(); - if (raw == null) { - if (System.getProperty("subservers.minecraft.version.unknown", "false").equalsIgnoreCase("false")) { - System.setProperty("subservers.minecraft.version.unknown", "true"); - System.out.println("Could not determine compatible Minecraft version(s); Now using 1.x.x as a placeholder."); - System.out.println("Use this launch argument to specify a compatible Minecraft version: -Dsubservers.minecraft.version=1.x.x"); + public Version[] getGameVersion() { + if (GAME_VERSION == null) { + Container valid = new Container(false); + if (System.getProperty("subservers.minecraft.version", "").length() > 0) { + return new Version[]{new Version(System.getProperty("subservers.minecraft.version"))}; + } else if (!Util.isException(() -> valid.set(ProtocolConstants.SUPPORTED_VERSIONS != null)) && valid.get()) { + List versions = new LinkedList(); + for (String version : ProtocolConstants.SUPPORTED_VERSIONS) versions.add(new Version(version)); + Collections.sort(versions); + return versions.toArray(new Version[versions.size()]); + } else if (!Util.isException(() -> valid.set(plugin.getGameVersion() != null)) && valid.get()) { + String raw = plugin.getGameVersion(); + if (raw.contains("-") || raw.contains(",")) { + List versions = new LinkedList(); + for (String version : raw.split("(?:\\s*-|,)\\s*")) versions.add(new Version(version)); + Collections.sort(versions); + return versions.toArray(new Version[versions.size()]); + } else { + return new Version[]{new Version(plugin.getGameVersion())}; } - return new Version("1.x.x"); - } else if (raw.contains(",")) { - String[] split = raw.split(",\\s*"); - return new Version(split[split.length - 1]); - } else if (raw.contains("-")) { - String[] split = raw.split("\\s*-\\s*"); - return new Version(split[split.length - 1]); } else { - return new Version(plugin.getGameVersion()); + plugin.getLogger().warning("Could not determine compatible Minecraft version(s); Now using 1.x.x as a placeholder."); + plugin.getLogger().warning("Use this launch argument to specify a compatible Minecraft version: -Dsubservers.minecraft.version=1.x.x"); + return new Version[]{new Version("1.x.x")}; } - } + } else return GAME_VERSION; } + private Version[] GAME_VERSION = getGameVersion(); } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java index 0ce293b0..69ef4fba 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java @@ -41,7 +41,7 @@ public final class SubCommand extends CommandX { protected static NamedContainer newInstance(SubPlugin plugin, String command) { NamedContainer cmd = new NamedContainer<>(new SubCommand(plugin, command), null); CommandX now = cmd.name(); - if (plugin.api.getGameVersion().compareTo(new Version("1.13")) >= 0) { + if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { now = new net.ME1312.SubServers.Bungee.Library.Compatibility.v1_13.CommandX(cmd.name()); } cmd.set(now); @@ -533,7 +533,7 @@ public final class SubCommand extends CommandX { protected static NamedContainer newInstance(SubPlugin plugin, String command) { NamedContainer cmd = new NamedContainer<>(new BungeeServer(plugin, command), null); CommandX now = cmd.name(); - if (plugin.api.getGameVersion().compareTo(new Version("1.13")) >= 0) { + if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { now = new net.ME1312.SubServers.Bungee.Library.Compatibility.v1_13.CommandX(cmd.name()); } cmd.set(now); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java index 2a422172..40677423 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java @@ -60,7 +60,7 @@ public final class SubPlugin extends BungeeCord implements Listener { public SubServer sudo = null; //public static final Version version = new Version("2.13a"); //public static final Version version = new Version(new Version("2.13a"), VersionType.BETA, 1); // TODO Beta Version Setting - public static final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 2); // TODO Beta Version Setting + public static final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 3); // TODO Beta Version Setting public boolean redis = false; public long resetDate = 0; @@ -70,7 +70,7 @@ public final class SubPlugin extends BungeeCord implements Listener { @SuppressWarnings("unchecked") protected SubPlugin(PrintStream out) throws IOException { - System.out.println("SubServers > Loading SubServers.Bungee v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion() + ")"); + System.out.println("SubServers > 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())) { diff --git a/SubServers.Client/Bukkit/src.jar b/SubServers.Client/Bukkit/src.jar index 1c9a4ed2..2ef338ff 100644 Binary files a/SubServers.Client/Bukkit/src.jar and b/SubServers.Client/Bukkit/src.jar differ diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java index 1c37fd5e..f5229111 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubAPI.java @@ -135,19 +135,19 @@ public final class SubAPI { * @return Minecraft Version */ public Version getGameVersion() { - if (System.getProperty("subservers.minecraft.version", "").length() > 0) { - return new Version(System.getProperty("subservers.minecraft.version")); - } else { - try { - return new Version(Bukkit.getBukkitVersion().split("-")[0]); - } catch (ArrayIndexOutOfBoundsException e) { - if (System.getProperty("subservers.minecraft.version.unknown", "false").equalsIgnoreCase("false")) { - System.setProperty("subservers.minecraft.version.unknown", "true"); - System.out.println("Could not determine this server's game version; Now using 1.x.x as a placeholder."); - System.out.println("Use this launch argument to specify what version this server serves: -Dsubservers.minecraft.version=1.x.x"); + if (GAME_VERSION == null) { + if (System.getProperty("subservers.minecraft.version", "").length() > 0) { + return new Version(System.getProperty("subservers.minecraft.version")); + } else { + try { + return new Version(Bukkit.getBukkitVersion().split("-")[0]); + } catch (ArrayIndexOutOfBoundsException e) { + plugin.getLogger().warning("Could not determine this server's game version; Now using 1.x.x as a placeholder."); + plugin.getLogger().warning("Use this launch argument to specify what version this server serves: -Dsubservers.minecraft.version=1.x.x"); + return new Version("1.x.x"); } - return new Version("1.x.x"); } - } + } else return GAME_VERSION; } + private Version GAME_VERSION = getGameVersion(); } 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 b1f2dd30..c755361c 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 @@ -48,7 +48,7 @@ public final class SubPlugin extends JavaPlugin { super(); //version = new Version(getDescription().getVersion()); //version = new Version(new Version(getDescription().getVersion()), VersionType.BETA, 1); // TODO Beta Version Setting - version = new Version(new Version(new Version(getDescription().getVersion()), VersionType.PRE_RELEASE, 3), VersionType.BETA, 2); // TODO Beta Version Setting + version = new Version(new Version(new Version(getDescription().getVersion()), VersionType.PRE_RELEASE, 3), VersionType.BETA, 3); // TODO Beta Version Setting } /** diff --git a/SubServers.Host/src.jar b/SubServers.Host/src.jar index b380805b..d2389543 100644 Binary files a/SubServers.Host/src.jar and b/SubServers.Host/src.jar differ diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java index 0f282eec..bfa0510b 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/ExHost.java @@ -53,7 +53,7 @@ public final class ExHost { //public final Version version = new Version("2.13a"); //public final Version version = new Version(new Version("2.13a"), VersionType.BETA, 1); // TODO Beta Version Setting - public final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 2); // TODO Beta Version Setting + public final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 3); // TODO Beta Version Setting public final SubAPI api = new SubAPI(this); private ConsoleReader jline; diff --git a/SubServers.Sync/pom.xml b/SubServers.Sync/pom.xml index d7330bbf..d4c6e3b2 100644 --- a/SubServers.Sync/pom.xml +++ b/SubServers.Sync/pom.xml @@ -28,7 +28,7 @@ net.md_5 bungeecord-internal - 1.8-SNAPSHOT + 1.9-SNAPSHOT provided diff --git a/SubServers.Sync/src.jar b/SubServers.Sync/src.jar index 4fba2721..60862d63 100644 Binary files a/SubServers.Sync/src.jar and b/SubServers.Sync/src.jar differ diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java index da20974f..0ad9b8d0 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Launch.java @@ -88,11 +88,15 @@ public final class Launch { plugin.start(); if (!options.has("noconsole")) { - String line; - while (plugin.isRunning && (line = plugin.getConsoleReader().readLine(">")) != null) { - if (!plugin.getPluginManager().dispatchCommand(net.md_5.bungee.command.ConsoleCommandSender.class.cast(net.md_5.bungee.command.ConsoleCommandSender.class.getMethod("getInstance").invoke(null)), line)) { - plugin.getConsole().sendMessage(net.md_5.bungee.api.ChatColor.RED + "Command not found"); + try { + String line; + while (plugin.isRunning && (line = plugin.getConsoleReader().readLine(">")) != null) { + if (!plugin.getPluginManager().dispatchCommand(net.md_5.bungee.command.ConsoleCommandSender.class.cast(net.md_5.bungee.command.ConsoleCommandSender.class.getMethod("getInstance").invoke(null)), line)) { + plugin.getConsole().sendMessage(net.md_5.bungee.api.ChatColor.RED + "Command not found"); + } } + } catch (NoSuchMethodError | NoSuchMethodException e) { + plugin.getLogger().warning("Standard BungeeCord console not found; Console commands now disabled."); } } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java index cf384ddd..628f1e4a 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubAPI.java @@ -1,11 +1,13 @@ package net.ME1312.SubServers.Sync; +import net.ME1312.SubServers.Sync.Library.Container; import net.ME1312.SubServers.Sync.Library.NamedContainer; import net.ME1312.SubServers.Sync.Library.UniversalFile; import net.ME1312.SubServers.Sync.Library.Util; import net.ME1312.SubServers.Sync.Library.Version.Version; import net.ME1312.SubServers.Sync.Network.SubDataClient; import net.ME1312.SubServers.Sync.Server.Server; +import net.md_5.bungee.protocol.ProtocolConstants; import java.util.*; @@ -141,31 +143,36 @@ public final class SubAPI { } /** - * Gets the Latest Supported Minecraft Version + * Get an array of compatible Minecraft Versions * - * @return Minecraft Version + * @return Minecraft Versions */ - public Version getGameVersion() { - if (System.getProperty("subservers.minecraft.version", "").length() > 0) { - return new Version(System.getProperty("subservers.minecraft.version")); - } else { - String raw = plugin.getGameVersion(); - if (raw == null) { - if (System.getProperty("subservers.minecraft.version.unknown", "false").equalsIgnoreCase("false")) { - System.setProperty("subservers.minecraft.version.unknown", "true"); - System.out.println("Could not determine compatible Minecraft version(s); Now using 1.x.x as a placeholder."); - System.out.println("Use this launch argument to specify a compatible Minecraft version: -Dsubservers.minecraft.version=1.x.x"); + public Version[] getGameVersion() { + if (GAME_VERSION == null) { + Container valid = new Container(false); + if (System.getProperty("subservers.minecraft.version", "").length() > 0) { + return new Version[]{new Version(System.getProperty("subservers.minecraft.version"))}; + } else if (!Util.isException(() -> valid.set(ProtocolConstants.SUPPORTED_VERSIONS != null)) && valid.get()) { + List versions = new LinkedList(); + for (String version : ProtocolConstants.SUPPORTED_VERSIONS) versions.add(new Version(version)); + Collections.sort(versions); + return versions.toArray(new Version[versions.size()]); + } else if (!Util.isException(() -> valid.set(plugin.getGameVersion() != null)) && valid.get()) { + String raw = plugin.getGameVersion(); + if (raw.contains("-") || raw.contains(",")) { + List versions = new LinkedList(); + for (String version : raw.split("(?:\\s*-|,)\\s*")) versions.add(new Version(version)); + Collections.sort(versions); + return versions.toArray(new Version[versions.size()]); + } else { + return new Version[]{new Version(plugin.getGameVersion())}; } - return new Version("1.x.x"); - } else if (raw.contains(",")) { - String[] split = raw.split(",\\s*"); - return new Version(split[split.length - 1]); - } else if (raw.contains("-")) { - String[] split = raw.split("\\s*-\\s*"); - return new Version(split[split.length - 1]); } else { - return new Version(plugin.getGameVersion()); + plugin.getLogger().warning("Could not determine compatible Minecraft version(s); Now using 1.x.x as a placeholder."); + plugin.getLogger().warning("Use this launch argument to specify a compatible Minecraft version: -Dsubservers.minecraft.version=1.x.x"); + return new Version[]{new Version("1.x.x")}; } - } + } else return GAME_VERSION; } + private Version[] GAME_VERSION = getGameVersion(); } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java index 96d7dc4f..2d6affba 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubCommand.java @@ -41,7 +41,7 @@ public final class SubCommand extends CommandX { protected static NamedContainer newInstance(SubPlugin plugin, String command) { NamedContainer cmd = new NamedContainer<>(new SubCommand(plugin, command), null); CommandX now = cmd.name(); - if (plugin.api.getGameVersion().compareTo(new Version("1.13")) >= 0) { + if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { now = new net.ME1312.SubServers.Sync.Library.Compatibility.v1_13.CommandX(cmd.name()); } cmd.set(now); @@ -530,7 +530,7 @@ public final class SubCommand extends CommandX { protected static NamedContainer newInstance(SubPlugin plugin, String command) { NamedContainer cmd = new NamedContainer<>(new BungeeServer(plugin, command), null); CommandX now = cmd.name(); - if (plugin.api.getGameVersion().compareTo(new Version("1.13")) >= 0) { + if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { now = new net.ME1312.SubServers.Sync.Library.Compatibility.v1_13.CommandX(cmd.name()); } cmd.set(now); diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java index 21dcd679..1edfedd5 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java @@ -50,14 +50,14 @@ public final class SubPlugin extends BungeeCord implements Listener { public SubDataClient subdata = null; //public static final Version version = new Version("2.13a"); //public static final Version version = new Version(new Version("2.13a"), VersionType.BETA, 1); // TODO Beta Version Setting - public static final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 2); // TODO Beta Version Setting + public static final Version version = new Version(new Version(new Version("2.13a"), VersionType.PRE_RELEASE, 3), VersionType.BETA, 3); // TODO Beta Version Setting public long lastReload = -1; private boolean posted = false; protected SubPlugin(PrintStream out) throws IOException { - System.out.println("SubServers > Loading SubServers.Sync v" + version.toString() + " Libraries (for Minecraft " + api.getGameVersion() + ")"); + System.out.println("SubServers > 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())) {