将 GameJavaVersion 转换为 record (#5222)
This commit is contained in:
@@ -21,7 +21,7 @@ import org.jackhuang.hmcl.download.ArtifactMalformedException;
|
||||
import org.jackhuang.hmcl.download.DownloadProvider;
|
||||
import org.jackhuang.hmcl.game.DownloadInfo;
|
||||
import org.jackhuang.hmcl.game.GameJavaVersion;
|
||||
import org.jackhuang.hmcl.java.*;
|
||||
import org.jackhuang.hmcl.java.JavaInfo;
|
||||
import org.jackhuang.hmcl.task.FileDownloadTask;
|
||||
import org.jackhuang.hmcl.task.GetTask;
|
||||
import org.jackhuang.hmcl.task.Task;
|
||||
@@ -59,11 +59,11 @@ public final class MojangJavaDownloadTask extends Task<MojangJavaDownloadTask.Re
|
||||
MojangJavaDownloads allDownloads = JsonUtils.fromNonNullJson(javaDownloadsJson, MojangJavaDownloads.class);
|
||||
|
||||
Map<String, List<MojangJavaDownloads.JavaDownload>> osDownloads = allDownloads.getDownloads().get(platform);
|
||||
if (osDownloads == null || !osDownloads.containsKey(javaVersion.getComponent()))
|
||||
if (osDownloads == null || !osDownloads.containsKey(javaVersion.component()))
|
||||
throw new UnsupportedPlatformException("Unsupported platform: " + platform);
|
||||
List<MojangJavaDownloads.JavaDownload> candidates = osDownloads.get(javaVersion.getComponent());
|
||||
List<MojangJavaDownloads.JavaDownload> candidates = osDownloads.get(javaVersion.component());
|
||||
for (MojangJavaDownloads.JavaDownload download : candidates) {
|
||||
if (JavaInfo.parseVersion(download.getVersion().getName()) >= javaVersion.getMajorVersion()) {
|
||||
if (JavaInfo.parseVersion(download.getVersion().getName()) >= javaVersion.majorVersion()) {
|
||||
this.download = download;
|
||||
return new GetTask(downloadProvider.injectURLWithCandidates(download.getManifest().getUrl()));
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public final class MojangJavaRemoteVersion implements JavaRemoteVersion {
|
||||
|
||||
@Override
|
||||
public int getJdkVersion() {
|
||||
return gameJavaVersion.getMajorVersion();
|
||||
return gameJavaVersion.majorVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,14 +17,18 @@
|
||||
*/
|
||||
package org.jackhuang.hmcl.game;
|
||||
|
||||
import org.jackhuang.hmcl.util.gson.JsonSerializable;
|
||||
import org.jackhuang.hmcl.util.platform.Architecture;
|
||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||
import org.jackhuang.hmcl.util.platform.Platform;
|
||||
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public final class GameJavaVersion {
|
||||
@JsonSerializable
|
||||
public record GameJavaVersion(String component, int majorVersion) {
|
||||
public static final GameJavaVersion JAVA_25 = new GameJavaVersion("java-runtime-epsilon", 25);
|
||||
public static final GameJavaVersion JAVA_21 = new GameJavaVersion("java-runtime-delta", 21);
|
||||
public static final GameJavaVersion JAVA_17 = new GameJavaVersion("java-runtime-beta", 17);
|
||||
@@ -86,36 +90,13 @@ public final class GameJavaVersion {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
private final String component;
|
||||
private final int majorVersion;
|
||||
|
||||
public GameJavaVersion() {
|
||||
this("", 0);
|
||||
}
|
||||
|
||||
public GameJavaVersion(String component, int majorVersion) {
|
||||
this.component = component;
|
||||
this.majorVersion = majorVersion;
|
||||
}
|
||||
|
||||
public String getComponent() {
|
||||
return component;
|
||||
}
|
||||
|
||||
public int getMajorVersion() {
|
||||
return majorVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getMajorVersion();
|
||||
return majorVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof GameJavaVersion)) return false;
|
||||
GameJavaVersion that = (GameJavaVersion) o;
|
||||
return majorVersion == that.majorVersion;
|
||||
return this == o || o instanceof GameJavaVersion that && this.majorVersion == that.majorVersion;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
package org.jackhuang.hmcl.game;
|
||||
|
||||
import org.jackhuang.hmcl.download.LibraryAnalyzer;
|
||||
import org.jackhuang.hmcl.java.JavaRuntime;
|
||||
import org.jackhuang.hmcl.util.Lang;
|
||||
import org.jackhuang.hmcl.util.platform.Architecture;
|
||||
import org.jackhuang.hmcl.java.JavaRuntime;
|
||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
|
||||
import org.jackhuang.hmcl.util.versioning.VersionNumber;
|
||||
@@ -43,7 +43,7 @@ public enum JavaVersionConstraint {
|
||||
@Override
|
||||
public boolean checkJava(GameVersionNumber gameVersionNumber, Version version, JavaRuntime java) {
|
||||
GameJavaVersion minimumJavaVersion = GameJavaVersion.getMinimumJavaVersion(gameVersionNumber);
|
||||
return minimumJavaVersion == null || java.getParsedVersion() >= minimumJavaVersion.getMajorVersion();
|
||||
return minimumJavaVersion == null || java.getParsedVersion() >= minimumJavaVersion.majorVersion();
|
||||
}
|
||||
},
|
||||
// Minecraft with suggested java version recorded in game json is restrictedly constrained.
|
||||
@@ -59,10 +59,10 @@ public enum JavaVersionConstraint {
|
||||
@Override
|
||||
public VersionRange<VersionNumber> getJavaVersionRange(Version version) {
|
||||
String javaVersion;
|
||||
if (Objects.requireNonNull(version.getJavaVersion()).getMajorVersion() >= 9) {
|
||||
javaVersion = "" + version.getJavaVersion().getMajorVersion();
|
||||
if (Objects.requireNonNull(version.getJavaVersion()).majorVersion() >= 9) {
|
||||
javaVersion = "" + version.getJavaVersion().majorVersion();
|
||||
} else {
|
||||
javaVersion = "1." + version.getJavaVersion().getMajorVersion();
|
||||
javaVersion = "1." + version.getJavaVersion().majorVersion();
|
||||
}
|
||||
return VersionNumber.atLeast(javaVersion);
|
||||
}
|
||||
@@ -247,9 +247,9 @@ public enum JavaVersionConstraint {
|
||||
return true;
|
||||
}
|
||||
|
||||
String versionNumber = gameJavaVersion.getMajorVersion() >= 9
|
||||
? String.valueOf(gameJavaVersion.getMajorVersion())
|
||||
: "1." + gameJavaVersion.getMajorVersion();
|
||||
String versionNumber = gameJavaVersion.majorVersion() >= 9
|
||||
? String.valueOf(gameJavaVersion.majorVersion())
|
||||
: "1." + gameJavaVersion.majorVersion();
|
||||
|
||||
VersionRange<VersionNumber> range = getJavaVersionRange(version);
|
||||
VersionNumber maximum = range.getMaximum();
|
||||
|
||||
Reference in New Issue
Block a user