From 2a5a7c0de4694bb650035cc8d34b0aafccb41a8f Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Apr 2026 20:50:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Fix=20#5907:=20=E4=BF=AE=E5=A4=8D=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=B8=BA=20MC=2026.1.1=20=E4=BB=8E=E5=AE=98=E6=96=B9?= =?UTF-8?q?=E6=BA=90=E5=AE=89=E8=A3=85=20NeoForge=20=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../neoforge/NeoForgeOfficialVersionList.java | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java index 3411779512..78208a77f5 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java @@ -21,6 +21,7 @@ import org.jackhuang.hmcl.download.VersionList; import org.jackhuang.hmcl.task.GetTask; import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.util.gson.JsonSerializable; import java.util.Collections; import java.util.List; @@ -75,16 +76,38 @@ public Task refreshAsync() { String mcVersion; try { - int si1 = version.indexOf('.'), si2 = version.indexOf('.', version.indexOf('.') + 1); + int si1 = version.indexOf('.'); + int si2 = version.indexOf('.', si1 + 1); + if (si1 < 0 || si2 < 0) { + LOG.warning("Unsupported NeoForge version: " + version); + continue; + } + int majorVersion = Integer.parseInt(version.substring(0, si1)); if (majorVersion == 0) { // Snapshot version. mcVersion = version.substring(si1 + 1, si2); } else { - String ver = version.substring(0, Integer.parseInt(version.substring(si1 + 1, si2)) == 0 ? si1 : si2); if (majorVersion >= 26) { + int si3 = version.indexOf('.', si2 + 1); + + if (si3 < 0) { + LOG.warning("Unsupported NeoForge version: " + version); + continue; + } + + String ver = Integer.parseInt(version.substring(si2 + 1, si3)) == 0 + ? version.substring(0, si1) + : version.substring(0, si2); + int separator = version.indexOf('+'); - mcVersion = separator < 0 ? ver : ver + "-" + version.substring(separator + 1); + if (separator < 0) + mcVersion = ver; + else + mcVersion = ver + "-" + version.substring(separator + 1); } else { + String ver = Integer.parseInt(version.substring(si1 + 1, si2)) == 0 + ? version.substring(0, si1) + : version.substring(0, si2); mcVersion = "1." + ver; } } @@ -106,14 +129,7 @@ public Task refreshAsync() { }); } - private static final class OfficialAPIResult { - private final boolean isSnapshot; - - private final List versions; - - public OfficialAPIResult(boolean isSnapshot, List versions) { - this.isSnapshot = isSnapshot; - this.versions = versions; - } + @JsonSerializable + private record OfficialAPIResult(boolean isSnapshot, List versions) { } } From 3b664a50b6773b034948e4966ac2072c96afd0ca Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Apr 2026 20:59:06 +0800 Subject: [PATCH 2/2] update --- .../hmcl/download/neoforge/NeoForgeOfficialVersionList.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java index 78208a77f5..a7cab8ddd2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java @@ -96,8 +96,8 @@ public Task refreshAsync() { } String ver = Integer.parseInt(version.substring(si2 + 1, si3)) == 0 - ? version.substring(0, si1) - : version.substring(0, si2); + ? version.substring(0, si2) + : version.substring(0, si3); int separator = version.indexOf('+'); if (separator < 0)