diff --git a/core/src/main/java/com/volmit/iris/Iris.java b/core/src/main/java/com/volmit/iris/Iris.java index b0a32fc58..45e7a4765 100644 --- a/core/src/main/java/com/volmit/iris/Iris.java +++ b/core/src/main/java/com/volmit/iris/Iris.java @@ -102,8 +102,6 @@ import static com.volmit.iris.core.safeguard.ServerBootSFG.passedserversoftware; @SuppressWarnings("CanBeFinal") public class Iris extends VolmitPlugin implements Listener { - public static final String OVERWORLD_TAG = "31010"; - private static final Queue syncJobs = new ShurikenQueue<>(); public static Iris instance; diff --git a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java index e22ebff27..054ec042f 100644 --- a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java +++ b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java @@ -21,6 +21,7 @@ package com.volmit.iris.core.commands; import com.volmit.iris.Iris; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.loader.IrisData; +import com.volmit.iris.core.nms.INMS; import com.volmit.iris.core.pregenerator.ChunkUpdater; import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.tools.IrisBenchmarking; @@ -412,7 +413,7 @@ public class CommandIris implements DecreeExecutor { ) { sender().sendMessage(C.GREEN + "Downloading pack: " + pack + "/" + branch + (trim ? " trimmed" : "") + (overwrite ? " overwriting" : "")); if (pack.equals("overworld")) { - String url = "https://github.com/IrisDimensions/overworld/releases/download/" + Iris.OVERWORLD_TAG + "/overworld.zip"; + String url = "https://github.com/IrisDimensions/overworld/releases/download/" + INMS.OVERWORLD_TAG + "/overworld.zip"; Iris.service(StudioSVC.class).downloadRelease(sender(), url, trim, overwrite); } else { Iris.service(StudioSVC.class).downloadSearch(sender(), "IrisDimensions/" + pack + "/" + branch, trim, overwrite); diff --git a/core/src/main/java/com/volmit/iris/core/nms/INMS.java b/core/src/main/java/com/volmit/iris/core/nms/INMS.java index 225575efd..d9a960341 100644 --- a/core/src/main/java/com/volmit/iris/core/nms/INMS.java +++ b/core/src/main/java/com/volmit/iris/core/nms/INMS.java @@ -23,6 +23,7 @@ import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.nms.v1X.NMSBinding1X; import org.bukkit.Bukkit; +import java.util.List; import java.util.Map; public class INMS { @@ -35,8 +36,15 @@ public class INMS { "1.21.3", "v1_21_R2", "1.21.4", "v1_21_R3" ); + private static final List PACKS = List.of( + new Version(21, 4, "31010"), + new Version(21, 2, "31000"), + new Version(20, 1, "3910") + ); + //@done private static final INMSBinding binding = bind(); + public static final String OVERWORLD_TAG = getOverworldTag(); public static INMSBinding get() { return binding; @@ -87,4 +95,26 @@ public class INMS { return new NMSBinding1X(); } + + private static String getOverworldTag() { + var version = Bukkit.getServer().getBukkitVersion().split("-")[0].split("\\.", 3); + int major = 0; + int minor = 0; + + if (version.length > 2) { + major = Integer.parseInt(version[1]); + minor = Integer.parseInt(version[2]); + } else if (version.length == 2) { + major = Integer.parseInt(version[1]); + } + + for (var p : PACKS) { + if (p.major > major || p.minor > minor) + continue; + return p.tag; + } + return "3910"; + } + + private record Version(int major, int minor, String tag) {} } diff --git a/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java b/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java index b2d67fd02..118a11e13 100644 --- a/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java +++ b/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java @@ -24,6 +24,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.ServerConfigurator; import com.volmit.iris.core.loader.IrisData; +import com.volmit.iris.core.nms.INMS; import com.volmit.iris.core.pack.IrisPack; import com.volmit.iris.core.project.IrisProject; import com.volmit.iris.core.tools.IrisToolbelt; @@ -64,7 +65,7 @@ public class StudioSVC implements IrisService { if (!f.exists()) { Iris.info("Downloading Default Pack " + pack); if (pack.equals("overworld")) { - String url = "https://github.com/IrisDimensions/overworld/releases/download/" + Iris.OVERWORLD_TAG + "/overworld.zip"; + String url = "https://github.com/IrisDimensions/overworld/releases/download/" + INMS.OVERWORLD_TAG + "/overworld.zip"; Iris.service(StudioSVC.class).downloadRelease(Iris.getSender(), url, false, false); } else { downloadSearch(Iris.getSender(), pack, false);