diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeBMCLVersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeBMCLVersionList.java index cd0cfcd10..ef37315ee 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeBMCLVersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeBMCLVersionList.java @@ -21,6 +21,7 @@ import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import org.jackhuang.hmcl.download.VersionList; import org.jackhuang.hmcl.util.Immutable; +import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.gson.Validation; import org.jackhuang.hmcl.util.io.HttpRequest; @@ -66,12 +67,19 @@ public final class ForgeBMCLVersionList extends VersionList throw new UnsupportedOperationException("ForgeBMCLVersionList does not support loading the entire Forge remote version list."); } - public String toLookupVersion(String version) { - return "1.7.10-pre4".equals(version) ? "1.7.10_pre4" : version; + private static String toLookupVersion(String gameVersion) { + return "1.7.10-pre4".equals(gameVersion) ? "1.7.10_pre4" : gameVersion; } - public String fromLookupVersion(String version) { - return "1.7.10_pre4".equals(version) ? "1.7.10-pre4" : version; + private static String fromLookupVersion(String lookupVersion) { + return "1.7.10_pre4".equals(lookupVersion) ? "1.7.10-pre4" : lookupVersion; + } + + private static String toLookupBranch(String gameVersion, String branch) { + if ("1.7.10-pre4".equals(gameVersion)) { + return "prerelease"; + } + return Lang.requireNonNullElse(branch, ""); } @Override @@ -93,8 +101,9 @@ public final class ForgeBMCLVersionList extends VersionList List urls = new ArrayList<>(); for (ForgeVersion.File file : version.getFiles()) if ("installer".equals(file.getCategory()) && "jar".equals(file.getFormat())) { - String classifier = lookupVersion + "-" + version.getVersion() - + (StringUtils.isNotBlank(version.getBranch()) ? "-" + version.getBranch() : ""); + String branch = toLookupBranch(gameVersion, version.getBranch()); + + String classifier = lookupVersion + "-" + version.getVersion() + (branch.isEmpty() ? "" : '-' + branch); String fileName1 = "forge-" + classifier + "-" + file.getCategory() + "." + file.getFormat(); String fileName2 = "forge-" + classifier + "-" + lookupVersion + "-" + file.getCategory() + "." + file.getFormat(); urls.add("https://files.minecraftforge.net/maven/net/minecraftforge/forge/" + classifier + "/" + fileName1); @@ -102,7 +111,7 @@ public final class ForgeBMCLVersionList extends VersionList urls.add(NetworkUtils.withQuery("https://bmclapi2.bangbang93.com/forge/download", mapOf( pair("mcversion", version.getGameVersion()), pair("version", version.getVersion()), - pair("branch", version.getBranch()), + pair("branch", branch), pair("category", file.getCategory()), pair("format", file.getFormat()) )));