Skip to content

Commit a19f147

Browse files
authored
将 GameJavaVersion 转换为 record (#5222)
1 parent 85ce3d9 commit a19f147

7 files changed

Lines changed: 37 additions & 51 deletions

File tree

HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ private static Task<JavaRuntime> checkGameState(Profile profile, VersionSetting
389389
int targetJavaVersionMajor = Integer.parseInt(setting.getJavaVersion());
390390
GameJavaVersion minimumJavaVersion = GameJavaVersion.getMinimumJavaVersion(gameVersion);
391391

392-
if (minimumJavaVersion != null && targetJavaVersionMajor < minimumJavaVersion.getMajorVersion()) {
392+
if (minimumJavaVersion != null && targetJavaVersionMajor < minimumJavaVersion.majorVersion()) {
393393
Controllers.dialog(
394394
i18n("launch.failed.java_version_too_low"),
395395
i18n("message.error"),
@@ -634,7 +634,7 @@ && isCompatibleWithX86Java()) {
634634
private static CompletableFuture<JavaRuntime> downloadJava(GameJavaVersion javaVersion, Profile profile) {
635635
CompletableFuture<JavaRuntime> future = new CompletableFuture<>();
636636
Controllers.dialog(new MessageDialogPane.Builder(
637-
i18n("launch.advice.require_newer_java_version", javaVersion.getMajorVersion()),
637+
i18n("launch.advice.require_newer_java_version", javaVersion.majorVersion()),
638638
i18n("message.warning"),
639639
MessageType.QUESTION)
640640
.yesOrNo(() -> {

HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import org.jetbrains.annotations.Nullable;
3131

3232
import java.io.IOException;
33-
import java.nio.file.*;
33+
import java.nio.file.DirectoryStream;
34+
import java.nio.file.Files;
35+
import java.nio.file.Path;
3436
import java.util.*;
3537

3638
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
@@ -57,7 +59,7 @@ public Path getJavaDir(Platform platform, String name) {
5759
}
5860

5961
public Path getJavaDir(Platform platform, GameJavaVersion gameJavaVersion) {
60-
return getJavaDir(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
62+
return getJavaDir(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
6163
}
6264

6365
@Override
@@ -66,15 +68,15 @@ public Path getManifestFile(Platform platform, String name) {
6668
}
6769

6870
public Path getManifestFile(Platform platform, GameJavaVersion gameJavaVersion) {
69-
return getManifestFile(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
71+
return getManifestFile(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
7072
}
7173

7274
public boolean isInstalled(Platform platform, String name) {
7375
return Files.exists(getManifestFile(platform, name));
7476
}
7577

7678
public boolean isInstalled(Platform platform, GameJavaVersion gameJavaVersion) {
77-
return isInstalled(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
79+
return isInstalled(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
7880
}
7981

8082
public @Nullable Path getJavaExecutable(Platform platform, String name) {
@@ -94,7 +96,7 @@ public boolean isInstalled(Platform platform, GameJavaVersion gameJavaVersion) {
9496
}
9597

9698
public @Nullable Path getJavaExecutable(Platform platform, GameJavaVersion gameJavaVersion) {
97-
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
99+
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
98100
}
99101

100102
private static void getAllJava(List<JavaRuntime> list, Platform platform, Path platformRoot, boolean isManaged) {
@@ -169,7 +171,7 @@ public Task<JavaRuntime> getDownloadJavaTask(DownloadProvider downloadProvider,
169171

170172
Map<String, Object> update = new LinkedHashMap<>();
171173
update.put("provider", "mojang");
172-
update.put("component", gameJavaVersion.getComponent());
174+
update.put("component", gameJavaVersion.component());
173175

174176
Map<String, JavaLocalFiles.Local> files = new LinkedHashMap<>();
175177
result.remoteFiles.getFiles().forEach((path, file) -> {

HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838
import org.jackhuang.hmcl.java.JavaInfo;
3939
import org.jackhuang.hmcl.java.JavaManager;
4040
import org.jackhuang.hmcl.setting.DownloadProviders;
41-
import org.jackhuang.hmcl.task.*;
41+
import org.jackhuang.hmcl.task.FileDownloadTask;
42+
import org.jackhuang.hmcl.task.GetTask;
43+
import org.jackhuang.hmcl.task.Schedulers;
44+
import org.jackhuang.hmcl.task.Task;
4245
import org.jackhuang.hmcl.ui.Controllers;
4346
import org.jackhuang.hmcl.ui.FXUtils;
4447
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
@@ -116,7 +119,7 @@ private final class DownloadMojangJava extends DialogPane {
116119
vbox.getChildren().add(prompt);
117120

118121
for (GameJavaVersion version : supportedGameJavaVersions) {
119-
JFXRadioButton button = new JFXRadioButton("Java " + version.getMajorVersion());
122+
JFXRadioButton button = new JFXRadioButton("Java " + version.majorVersion());
120123
button.setUserData(version);
121124
vbox.getChildren().add(button);
122125
toggleGroup.getToggles().add(button);
@@ -248,7 +251,7 @@ private final class DownloadDiscoJava extends JFXDialogLayout {
248251

249252
for (int i = 0; i < versions.size(); i++) {
250253
DiscoJavaRemoteVersion version = versions.get(i);
251-
if (version.getJdkVersion() == GameJavaVersion.LATEST.getMajorVersion()) {
254+
if (version.getJdkVersion() == GameJavaVersion.LATEST.majorVersion()) {
252255
remoteVersionBox.getSelectionModel().select(i);
253256
return;
254257
}

HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/mojang/MojangJavaDownloadTask.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.jackhuang.hmcl.download.DownloadProvider;
2222
import org.jackhuang.hmcl.game.DownloadInfo;
2323
import org.jackhuang.hmcl.game.GameJavaVersion;
24-
import org.jackhuang.hmcl.java.*;
24+
import org.jackhuang.hmcl.java.JavaInfo;
2525
import org.jackhuang.hmcl.task.FileDownloadTask;
2626
import org.jackhuang.hmcl.task.GetTask;
2727
import org.jackhuang.hmcl.task.Task;
@@ -59,11 +59,11 @@ public MojangJavaDownloadTask(DownloadProvider downloadProvider, Path target, Ga
5959
MojangJavaDownloads allDownloads = JsonUtils.fromNonNullJson(javaDownloadsJson, MojangJavaDownloads.class);
6060

6161
Map<String, List<MojangJavaDownloads.JavaDownload>> osDownloads = allDownloads.getDownloads().get(platform);
62-
if (osDownloads == null || !osDownloads.containsKey(javaVersion.getComponent()))
62+
if (osDownloads == null || !osDownloads.containsKey(javaVersion.component()))
6363
throw new UnsupportedPlatformException("Unsupported platform: " + platform);
64-
List<MojangJavaDownloads.JavaDownload> candidates = osDownloads.get(javaVersion.getComponent());
64+
List<MojangJavaDownloads.JavaDownload> candidates = osDownloads.get(javaVersion.component());
6565
for (MojangJavaDownloads.JavaDownload download : candidates) {
66-
if (JavaInfo.parseVersion(download.getVersion().getName()) >= javaVersion.getMajorVersion()) {
66+
if (JavaInfo.parseVersion(download.getVersion().getName()) >= javaVersion.majorVersion()) {
6767
this.download = download;
6868
return new GetTask(downloadProvider.injectURLWithCandidates(download.getManifest().getUrl()));
6969
}

HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/mojang/MojangJavaRemoteVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public GameJavaVersion getGameJavaVersion() {
3636

3737
@Override
3838
public int getJdkVersion() {
39-
return gameJavaVersion.getMajorVersion();
39+
return gameJavaVersion.majorVersion();
4040
}
4141

4242
@Override

HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameJavaVersion.java

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@
1717
*/
1818
package org.jackhuang.hmcl.game;
1919

20+
import org.jackhuang.hmcl.util.gson.JsonSerializable;
2021
import org.jackhuang.hmcl.util.platform.Architecture;
2122
import org.jackhuang.hmcl.util.platform.OperatingSystem;
2223
import org.jackhuang.hmcl.util.platform.Platform;
2324
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
2425

25-
import java.util.*;
26+
import java.util.Arrays;
27+
import java.util.Collections;
28+
import java.util.List;
2629

27-
public final class GameJavaVersion {
30+
@JsonSerializable
31+
public record GameJavaVersion(String component, int majorVersion) {
2832
public static final GameJavaVersion JAVA_25 = new GameJavaVersion("java-runtime-epsilon", 25);
2933
public static final GameJavaVersion JAVA_21 = new GameJavaVersion("java-runtime-delta", 21);
3034
public static final GameJavaVersion JAVA_17 = new GameJavaVersion("java-runtime-beta", 17);
@@ -86,36 +90,13 @@ public static List<GameJavaVersion> getSupportedVersions(Platform platform) {
8690
return Collections.emptyList();
8791
}
8892

89-
private final String component;
90-
private final int majorVersion;
91-
92-
public GameJavaVersion() {
93-
this("", 0);
94-
}
95-
96-
public GameJavaVersion(String component, int majorVersion) {
97-
this.component = component;
98-
this.majorVersion = majorVersion;
99-
}
100-
101-
public String getComponent() {
102-
return component;
103-
}
104-
105-
public int getMajorVersion() {
106-
return majorVersion;
107-
}
108-
10993
@Override
11094
public int hashCode() {
111-
return getMajorVersion();
95+
return majorVersion();
11296
}
11397

11498
@Override
11599
public boolean equals(Object o) {
116-
if (this == o) return true;
117-
if (!(o instanceof GameJavaVersion)) return false;
118-
GameJavaVersion that = (GameJavaVersion) o;
119-
return majorVersion == that.majorVersion;
100+
return this == o || o instanceof GameJavaVersion that && this.majorVersion == that.majorVersion;
120101
}
121102
}

HMCLCore/src/main/java/org/jackhuang/hmcl/game/JavaVersionConstraint.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
package org.jackhuang.hmcl.game;
1919

2020
import org.jackhuang.hmcl.download.LibraryAnalyzer;
21+
import org.jackhuang.hmcl.java.JavaRuntime;
2122
import org.jackhuang.hmcl.util.Lang;
2223
import org.jackhuang.hmcl.util.platform.Architecture;
23-
import org.jackhuang.hmcl.java.JavaRuntime;
2424
import org.jackhuang.hmcl.util.platform.OperatingSystem;
2525
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
2626
import org.jackhuang.hmcl.util.versioning.VersionNumber;
@@ -43,7 +43,7 @@ protected boolean appliesToVersionImpl(GameVersionNumber gameVersionNumber, @Nul
4343
@Override
4444
public boolean checkJava(GameVersionNumber gameVersionNumber, Version version, JavaRuntime java) {
4545
GameJavaVersion minimumJavaVersion = GameJavaVersion.getMinimumJavaVersion(gameVersionNumber);
46-
return minimumJavaVersion == null || java.getParsedVersion() >= minimumJavaVersion.getMajorVersion();
46+
return minimumJavaVersion == null || java.getParsedVersion() >= minimumJavaVersion.majorVersion();
4747
}
4848
},
4949
// Minecraft with suggested java version recorded in game json is restrictedly constrained.
@@ -59,10 +59,10 @@ protected boolean appliesToVersionImpl(GameVersionNumber gameVersionNumber, @Nul
5959
@Override
6060
public VersionRange<VersionNumber> getJavaVersionRange(Version version) {
6161
String javaVersion;
62-
if (Objects.requireNonNull(version.getJavaVersion()).getMajorVersion() >= 9) {
63-
javaVersion = "" + version.getJavaVersion().getMajorVersion();
62+
if (Objects.requireNonNull(version.getJavaVersion()).majorVersion() >= 9) {
63+
javaVersion = "" + version.getJavaVersion().majorVersion();
6464
} else {
65-
javaVersion = "1." + version.getJavaVersion().getMajorVersion();
65+
javaVersion = "1." + version.getJavaVersion().majorVersion();
6666
}
6767
return VersionNumber.atLeast(javaVersion);
6868
}
@@ -247,9 +247,9 @@ protected boolean appliesToVersionImpl(GameVersionNumber gameVersionNumber, @Nul
247247
return true;
248248
}
249249

250-
String versionNumber = gameJavaVersion.getMajorVersion() >= 9
251-
? String.valueOf(gameJavaVersion.getMajorVersion())
252-
: "1." + gameJavaVersion.getMajorVersion();
250+
String versionNumber = gameJavaVersion.majorVersion() >= 9
251+
? String.valueOf(gameJavaVersion.majorVersion())
252+
: "1." + gameJavaVersion.majorVersion();
253253

254254
VersionRange<VersionNumber> range = getJavaVersionRange(version);
255255
VersionNumber maximum = range.getMaximum();

0 commit comments

Comments
 (0)