diff --git a/src/main/java/com/garbagemule/MobArena/MobArena.java b/src/main/java/com/garbagemule/MobArena/MobArena.java index d34d47b..2141b63 100644 --- a/src/main/java/com/garbagemule/MobArena/MobArena.java +++ b/src/main/java/com/garbagemule/MobArena/MobArena.java @@ -69,6 +69,8 @@ public class MobArena extends JavaPlugin } public void onEnable() { + ServerVersionCheck.check(getServer()); + // Initialize config-file configFile = new File(getDataFolder(), "config.yml"); config = new YamlConfiguration(); diff --git a/src/main/java/com/garbagemule/MobArena/ServerVersionCheck.java b/src/main/java/com/garbagemule/MobArena/ServerVersionCheck.java new file mode 100644 index 0000000..bdde3d9 --- /dev/null +++ b/src/main/java/com/garbagemule/MobArena/ServerVersionCheck.java @@ -0,0 +1,44 @@ +package com.garbagemule.MobArena; + +import org.bukkit.Server; + +import java.util.Arrays; +import java.util.StringJoiner; + +class ServerVersionCheck { + + private static final String[] EXACTS = {"1.11", "1.12"}; + private static final String[] PREFIXES = {"1.11.", "1.12."}; + + static void check(Server server) { + String version = getMinecraftVersion(server); + + for (String exact : EXACTS) { + if (version.equals(exact)) { + return; + } + } + for (String prefix : PREFIXES) { + if (version.startsWith(prefix)) { + return; + } + } + + throw new IllegalStateException(new StringJoiner(" ") + .add("Incompatible server version!") + .add("This build only works on " + Arrays.toString(EXACTS) + ",") + .add("but this server is running " + version + ".") + .add("Perhaps you downloaded the wrong build?") + .toString() + ); + } + + private static String getMinecraftVersion(Server server) { + // Same substring as the one bStats uses, so should be safe + String version = server.getVersion(); + int start = version.indexOf("MC: ") + 4; + int end = version.length() - 1; + return version.substring(start, end); + } + +}