修复 #3135 Forge 1.7.10-pre4 安装问题 (#3136)

* Fix #3135

* Update ForgeBMCLVersionList.java

---------

Co-authored-by: Glavo <zjx001202@gmail.com>
This commit is contained in:
Burning_TNT 2024-06-21 23:24:16 +08:00 committed by GitHub
parent e0ecd5e695
commit 7d5d74d0c6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

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