Fix #3079 修复 NeoForge 整合包版本识别不正确的问题 (#3082)

* Fix #3079

* Fix.

* Fix: checkstyle.
This commit is contained in:
Burning_TNT
2024-05-28 08:28:35 +08:00
committed by GitHub
parent 96471e3a92
commit 704d4e9cc0
3 changed files with 7 additions and 20 deletions

View File

@@ -22,10 +22,8 @@ import com.google.gson.annotations.SerializedName;
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.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;
import org.jackhuang.hmcl.util.versioning.VersionNumber;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -62,8 +60,7 @@ public final class NeoForgeBMCLVersionList extends VersionList<NeoForgeRemoteVer
@Override @Override
public Optional<NeoForgeRemoteVersion> getVersion(String gameVersion, String remoteVersion) { public Optional<NeoForgeRemoteVersion> getVersion(String gameVersion, String remoteVersion) {
if (gameVersion.equals("1.20.1")) { if (gameVersion.equals("1.20.1")) {
remoteVersion = NeoForgeRemoteVersion.fixInvalidVersion(remoteVersion); remoteVersion = NeoForgeRemoteVersion.normalize(remoteVersion);
remoteVersion = VersionNumber.compare(remoteVersion, "47.1.85") >= 0 ? "1.20.1-" + remoteVersion : remoteVersion;
} }
return super.getVersion(gameVersion, remoteVersion); return super.getVersion(gameVersion, remoteVersion);
} }
@@ -79,16 +76,10 @@ public final class NeoForgeBMCLVersionList extends VersionList<NeoForgeRemoteVer
try { try {
versions.clear(gameVersion); versions.clear(gameVersion);
for (NeoForgeVersion neoForgeVersion : neoForgeVersions) { for (NeoForgeVersion neoForgeVersion : neoForgeVersions) {
String nf = StringUtils.removePrefix(
neoForgeVersion.version,
"1.20.1".equals(gameVersion) ? "1.20.1-forge-" : "neoforge-" // Som of the version numbers for 1.20.1 are like forge.
);
versions.put(gameVersion, new NeoForgeRemoteVersion( versions.put(gameVersion, new NeoForgeRemoteVersion(
neoForgeVersion.mcVersion, neoForgeVersion.mcVersion,
nf, NeoForgeRemoteVersion.normalize(neoForgeVersion.version),
Collections.singletonList( Collections.singletonList(apiRoot + "/neoforge/version/" + neoForgeVersion.version + "/download/installer.jar")
apiRoot + "/neoforge/version/" + neoForgeVersion.version + "/download/installer.jar"
)
)); ));
} }
} finally { } finally {

View File

@@ -2,7 +2,6 @@ package org.jackhuang.hmcl.download.neoforge;
import org.jackhuang.hmcl.download.DownloadProvider; import org.jackhuang.hmcl.download.DownloadProvider;
import org.jackhuang.hmcl.download.VersionList; import org.jackhuang.hmcl.download.VersionList;
import org.jackhuang.hmcl.util.StringUtils;
import org.jackhuang.hmcl.util.io.HttpRequest; import org.jackhuang.hmcl.util.io.HttpRequest;
import java.util.Collections; import java.util.Collections;
@@ -31,10 +30,7 @@ public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemot
@Override @Override
public Optional<NeoForgeRemoteVersion> getVersion(String gameVersion, String remoteVersion) { public Optional<NeoForgeRemoteVersion> getVersion(String gameVersion, String remoteVersion) {
if (gameVersion.equals("1.20.1")) { if (gameVersion.equals("1.20.1")) {
remoteVersion = NeoForgeRemoteVersion.fixInvalidVersion(remoteVersion); remoteVersion = NeoForgeRemoteVersion.normalize(remoteVersion);
if (!remoteVersion.equals("47.1.82")) {
remoteVersion = "1.20.1-" + remoteVersion;
}
} }
return super.getVersion(gameVersion, remoteVersion); return super.getVersion(gameVersion, remoteVersion);
} }
@@ -52,7 +48,7 @@ public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemot
for (String version : results[0].versions) { for (String version : results[0].versions) {
versions.put("1.20.1", new NeoForgeRemoteVersion( versions.put("1.20.1", new NeoForgeRemoteVersion(
"1.20.1", StringUtils.removePrefix(version, "1.20.1-"), "1.20.1", NeoForgeRemoteVersion.normalize(version),
Collections.singletonList( Collections.singletonList(
"https://maven.neoforged.net/releases/net/neoforged/forge/" + version + "/forge-" + version + "-installer.jar" "https://maven.neoforged.net/releases/net/neoforged/forge/" + version + "/forge-" + version + "-installer.jar"
) )
@@ -62,7 +58,7 @@ public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemot
for (String version : results[1].versions) { for (String version : results[1].versions) {
String mcVersion = "1." + version.substring(0, version.indexOf('.', version.indexOf('.') + 1)); String mcVersion = "1." + version.substring(0, version.indexOf('.', version.indexOf('.') + 1));
versions.put(mcVersion, new NeoForgeRemoteVersion( versions.put(mcVersion, new NeoForgeRemoteVersion(
mcVersion, version, mcVersion, NeoForgeRemoteVersion.normalize(version),
Collections.singletonList( Collections.singletonList(
"https://maven.neoforged.net/releases/net/neoforged/neoforge/" + version + "/neoforge-" + version + "-installer.jar" "https://maven.neoforged.net/releases/net/neoforged/neoforge/" + version + "/neoforge-" + version + "-installer.jar"
) )

View File

@@ -18,7 +18,7 @@ public class NeoForgeRemoteVersion extends RemoteVersion {
return new NeoForgeInstallTask(dependencyManager, baseVersion, this); return new NeoForgeInstallTask(dependencyManager, baseVersion, this);
} }
public static String fixInvalidVersion(String version) { public static String normalize(String version) {
if (version.startsWith("1.20.1-")) { if (version.startsWith("1.20.1-")) {
if (version.startsWith("forge-", "1.20.1-".length())) { if (version.startsWith("forge-", "1.20.1-".length())) {
return version.substring("1.20.1-forge-".length()); return version.substring("1.20.1-forge-".length());