aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-04-23 15:48:39 +0800
committershedaniel <daniel@shedaniel.me>2022-04-23 15:48:59 +0800
commitb04445138664ac1e8151286b0c3858c442da9419 (patch)
tree89b0f540e0d371efab2ba1c01a388884490d7f08
parent8eb903cc67d5e6813570ddd1d74bcfd3a3ffba45 (diff)
downloadRoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.tar.gz
RoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.tar.bz2
RoughlyEnoughItems-b04445138664ac1e8151286b0c3858c442da9419.zip
Compare versions more on a smaller scale
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java20
-rw-r--r--forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java15
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