Skip to content

Commit 997b75b

Browse files
Glavoburningtnt
andauthored
修复无法为 MC 26.1.1 从官方源安装 NeoForge 的问题 (#5926)
#5910 Co-authored-by: Burning_TNT <pangyl08@163.com>
1 parent 373e5c1 commit 997b75b

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOfficialVersionList.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.jackhuang.hmcl.download.VersionList;
55
import org.jackhuang.hmcl.task.GetTask;
66
import org.jackhuang.hmcl.task.Task;
7+
import org.jackhuang.hmcl.util.gson.JsonSerializable;
78

89
import java.util.Collections;
910
import java.util.List;
@@ -58,16 +59,38 @@ public Task<?> refreshAsync() {
5859
String mcVersion;
5960

6061
try {
61-
int si1 = version.indexOf('.'), si2 = version.indexOf('.', version.indexOf('.') + 1);
62+
int si1 = version.indexOf('.');
63+
int si2 = version.indexOf('.', si1 + 1);
64+
if (si1 < 0 || si2 < 0) {
65+
LOG.warning("Unsupported NeoForge version: " + version);
66+
continue;
67+
}
68+
6269
int majorVersion = Integer.parseInt(version.substring(0, si1));
6370
if (majorVersion == 0) { // Snapshot version.
6471
mcVersion = version.substring(si1 + 1, si2);
6572
} else {
66-
String ver = version.substring(0, Integer.parseInt(version.substring(si1 + 1, si2)) == 0 ? si1 : si2);
6773
if (majorVersion >= 26) {
74+
int si3 = version.indexOf('.', si2 + 1);
75+
76+
if (si3 < 0) {
77+
LOG.warning("Unsupported NeoForge version: " + version);
78+
continue;
79+
}
80+
81+
String ver = Integer.parseInt(version.substring(si2 + 1, si3)) == 0
82+
? version.substring(0, si2)
83+
: version.substring(0, si3);
84+
6885
int separator = version.indexOf('+');
69-
mcVersion = separator < 0 ? ver : ver + "-" + version.substring(separator + 1);
86+
if (separator < 0)
87+
mcVersion = ver;
88+
else
89+
mcVersion = ver + "-" + version.substring(separator + 1);
7090
} else {
91+
String ver = Integer.parseInt(version.substring(si1 + 1, si2)) == 0
92+
? version.substring(0, si1)
93+
: version.substring(0, si2);
7194
mcVersion = "1." + ver;
7295
}
7396
}
@@ -89,14 +112,7 @@ public Task<?> refreshAsync() {
89112
});
90113
}
91114

92-
private static final class OfficialAPIResult {
93-
private final boolean isSnapshot;
94-
95-
private final List<String> versions;
96-
97-
public OfficialAPIResult(boolean isSnapshot, List<String> versions) {
98-
this.isSnapshot = isSnapshot;
99-
this.versions = versions;
100-
}
115+
@JsonSerializable
116+
private record OfficialAPIResult(boolean isSnapshot, List<String> versions) {
101117
}
102118
}

0 commit comments

Comments
 (0)