From 024c0c3e9b344c2c6faf58bbc1af1eba58bfe656 Mon Sep 17 00:00:00 2001 From: LostLuma Date: Thu, 11 Jul 2024 14:13:47 +0200 Subject: [PATCH] Fix Modrinth update checking for Minecraft 1.0.0 and below --- .../modmenu/util/UpdateCheckerUtil.java | 4 +--- .../modmenu/util/VersionUtil.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/terraformersmc/modmenu/util/UpdateCheckerUtil.java b/src/main/java/com/terraformersmc/modmenu/util/UpdateCheckerUtil.java index 10277b36..a1ae18d5 100644 --- a/src/main/java/com/terraformersmc/modmenu/util/UpdateCheckerUtil.java +++ b/src/main/java/com/terraformersmc/modmenu/util/UpdateCheckerUtil.java @@ -11,7 +11,6 @@ import com.terraformersmc.modmenu.config.ModMenuConfig; import com.terraformersmc.modmenu.util.mod.Mod; import com.terraformersmc.modmenu.util.mod.ModrinthUpdateInfo; -import net.fabricmc.loader.api.FabricLoader; import org.apache.http.HttpResponse; import org.apache.http.client.methods.RequestBuilder; @@ -211,8 +210,7 @@ private static UpdateChannel getUpdateChannel(String versionType) { } private static @Nullable Map getUpdatedVersions(Collection modHashes) { - String mcVer = FabricLoader.getInstance().getModContainer("minecraft").get() - .getMetadata().getVersion().getFriendlyString(); + String mcVer = VersionUtil.getModrinthCompatibleMcVersion(); List loaders = ModMenu.runningQuilt ? Arrays.asList("fabric", "quilt") : Arrays.asList("fabric"); List updateChannels; diff --git a/src/main/java/com/terraformersmc/modmenu/util/VersionUtil.java b/src/main/java/com/terraformersmc/modmenu/util/VersionUtil.java index deb0f067..1cf11a2c 100644 --- a/src/main/java/com/terraformersmc/modmenu/util/VersionUtil.java +++ b/src/main/java/com/terraformersmc/modmenu/util/VersionUtil.java @@ -1,5 +1,7 @@ package com.terraformersmc.modmenu.util; +import net.fabricmc.loader.api.FabricLoader; + import java.util.Arrays; import java.util.List; @@ -27,4 +29,24 @@ public static String getPrefixedVersion(String version) { public static String removeBuildMetadata(String version) { return version.split("\\+")[0]; } + + /** + * @return a Modrinth API-compatible Minecraft version string. + */ + public static String getModrinthCompatibleMcVersion() { + String version = FabricLoader.getInstance().getModContainer("minecraft").get() + .getMetadata().getVersion().getFriendlyString(); + + if (version.startsWith("1.0.0-alpha.")) { + // Turn 1.0.0-alpha.2.3 into a1.2.3 + return "a1." + version.substring(12); + } else if (version.startsWith("1.0.0-beta.")) { + // Turn 1.0.0-beta.7.3 into b1.7.3 + return "b1." + version.substring(11); + } else if (version.equals("1.0.0")) { + return "1.0"; // 1.0.0 is the only release with an extra following zero for some reason ... + } + + return version; + } }