Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
997b75ba19 | ||
|
|
373e5c1ff0 |
No files matched your search
@@ -155,7 +155,32 @@ public class Translator_lzh extends Translator {
|
||||
case "23w13a_or_b" -> "二三週一三暨";
|
||||
case "24w14potato" -> "二四週一四芋";
|
||||
case "25w14craftmine" -> "二五週一四礦";
|
||||
default -> version;
|
||||
default -> {
|
||||
if (version.length() >= 6 && version.charAt(2) == 'w') {
|
||||
Matcher matcher = Pattern.compile("(?<year>[0-9]{2})w(?<week>[0-9]{2})(?<suffix>.+)").matcher(version);
|
||||
if (matcher.matches()) {
|
||||
int year = Integer.parseInt(matcher.group("year"));
|
||||
int week = Integer.parseInt(matcher.group("week"));
|
||||
String suffix = matcher.group("suffix");
|
||||
char suffixFirstChar = suffix.charAt(0);
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
appendDigitByDigit(builder, String.valueOf(year));
|
||||
builder.append('週');
|
||||
appendDigitByDigit(builder, String.valueOf(week));
|
||||
|
||||
if (suffix.length() == 1
|
||||
&& suffixFirstChar >= 'a' && (suffixFirstChar - 'a') < TIAN_GAN.length)
|
||||
builder.append(TIAN_GAN[suffixFirstChar - 'a']);
|
||||
else
|
||||
builder.append(suffix);
|
||||
|
||||
yield builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
yield version;
|
||||
}
|
||||
};
|
||||
} else {
|
||||
return gameVersion.toString();
|
||||
|
||||
+28
-12
@@ -4,6 +4,7 @@ import org.jackhuang.hmcl.download.DownloadProvider;
|
||||
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;
|
||||
@@ -58,16 +59,38 @@ public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemot
|
||||
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, si2)
|
||||
: version.substring(0, si3);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -89,14 +112,7 @@ public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemot
|
||||
});
|
||||
}
|
||||
|
||||
private static final class OfficialAPIResult {
|
||||
private final boolean isSnapshot;
|
||||
|
||||
private final List<String> versions;
|
||||
|
||||
public OfficialAPIResult(boolean isSnapshot, List<String> versions) {
|
||||
this.isSnapshot = isSnapshot;
|
||||
this.versions = versions;
|
||||
}
|
||||
@JsonSerializable
|
||||
private record OfficialAPIResult(boolean isSnapshot, List<String> versions) {
|
||||
}
|
||||
}
|
||||
@@ -627,6 +627,10 @@ public abstract sealed class GameVersionNumber implements Comparable<GameVersion
|
||||
throw new IllegalArgumentException(value);
|
||||
}
|
||||
|
||||
if (year >= Release.MINIMUM_YEAR_MAJOR_VERSION) {
|
||||
throw new IllegalArgumentException(value);
|
||||
}
|
||||
|
||||
char suffix = value.charAt(5);
|
||||
if (suffix < 'a' || suffix > 'z')
|
||||
throw new IllegalArgumentException(value);
|
||||
|
||||
@@ -912,3 +912,6 @@
|
||||
26.1-rc-1
|
||||
26.1-rc-2
|
||||
26.1
|
||||
26.1.1-rc-1
|
||||
26.1.1
|
||||
26w14a
|
||||
+2
-1
@@ -376,10 +376,11 @@ public final class GameVersionNumberTest {
|
||||
"1.21.11-pre1_unobfuscated",
|
||||
"1.21.11-pre2",
|
||||
"1.21.11-pre2_unobfuscated",
|
||||
"99w99a",
|
||||
"26.1-snapshot-1",
|
||||
"26.1-snapshot-2",
|
||||
"26.1",
|
||||
"26.1.1",
|
||||
"26w14a",
|
||||
"26.2-snapshot-1",
|
||||
"26.2-snapshot-2",
|
||||
"26.2",
|
||||
|
||||
Reference in new issue
Block a user