diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-04-23 15:48:39 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-04-23 15:48:59 +0800 |
| commit | b04445138664ac1e8151286b0c3858c442da9419 (patch) | |
| tree | 89b0f540e0d371efab2ba1c01a388884490d7f08 | |
| parent | 8eb903cc67d5e6813570ddd1d74bcfd3a3ffba45 (diff) | |
| download | RoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.tar.gz RoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.tar.bz2 RoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.zip | |
Compare versions more on a smaller scale
3 files changed, 44 insertions, 4 deletions
diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java index 566b52c22..f683dfb18 100644 --- a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java @@ -85,4 +85,24 @@ public class RoughlyEnoughItemsInitializerImpl { public static String getMinecraftVersion() { return FabricLoader.getInstance().getModContainer("minecraft").get().getMetadata().getVersion().getFriendlyString(); } + + public static int compareVersions(String version1, String version2) { + Version v1, v2; + + try { + v1 = SemanticVersion.parse(version1); + } catch (VersionParsingException e) { + new IllegalStateException("Failed to parse version: " + version1, e).printStackTrace(); + return 0; + } + + try { + v2 = SemanticVersion.parse(version2); + } catch (VersionParsingException e) { + new IllegalStateException("Failed to parse version: " + version2, e).printStackTrace(); + return 0; + } + + return v1.compareTo(v2); + } } diff --git a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java index 54ed0c55f..76952dd4b 100644 --- a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java +++ b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java @@ -28,6 +28,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.loading.FMLLoader; +import org.apache.maven.artifact.versioning.ComparableVersion; public class RoughlyEnoughItemsInitializerImpl { public static boolean isClient() { @@ -47,4 +48,16 @@ public class RoughlyEnoughItemsInitializerImpl { public static String getMinecraftVersion() { return ModList.get().getModContainerById("minecraft").get().getModInfo().getVersion().toString(); } + + public static int compareVersions(String version1, String version2) { + ComparableVersion v1 = new ComparableVersion(version1); + ComparableVersion v2 = new ComparableVersion(version2); + + try { + return v1.compareTo(v2); + } catch (IllegalStateException e) { + new IllegalStateException("Failed to compare versions: " + version1 + " and " + version2, e).printStackTrace(); + return 0; + } + } } diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java index 5b56c0739..adc82c4c4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java @@ -30,14 +30,16 @@ import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; public class RoughlyEnoughItemsInitializer { - public static final String COMPATIBLE_MC_VERSION = "1.18"; + public static final String COMPATIBLE_MC_VERSION_LOW = "1.18.2"; + public static final String COMPATIBLE_MC_VERSION_HIGH = "1.19"; public static void onInitialize() { RoughlyEnoughItemsState.env = isClient() ? EnvType.CLIENT : EnvType.SERVER; RoughlyEnoughItemsState.isDev = isDev(); - - if (getMinecraftVersion().startsWith("1.") && !getMinecraftVersion().startsWith(COMPATIBLE_MC_VERSION)) { - RoughlyEnoughItemsState.error("Your current REI version (for " + COMPATIBLE_MC_VERSION + ") is not compatible with your current Minecraft version (" + getMinecraftVersion() + ")."); + + String minecraftVersion = getMinecraftVersion(); + if (minecraftVersion.startsWith("1.") && (compareVersions(minecraftVersion, COMPATIBLE_MC_VERSION_LOW) < 0 || compareVersions(minecraftVersion, COMPATIBLE_MC_VERSION_HIGH) >= 0)) { + RoughlyEnoughItemsState.error("Your current REI version (for >=" + COMPATIBLE_MC_VERSION_LOW + " and <" + COMPATIBLE_MC_VERSION_HIGH + ") is not compatible with your current Minecraft version (" + minecraftVersion + ")."); } checkMods(); @@ -106,4 +108,9 @@ public class RoughlyEnoughItemsInitializer { public static String getMinecraftVersion() { throw new AssertionError(); } + + @ExpectPlatform + public static int compareVersions(String version1, String version2) { + throw new AssertionError(); + } }
\ No newline at end of file |
