mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-11 12:56:53 -04:00
将 OS X 重命名为 macOS (#3878)
This commit is contained in:
parent
c5f56eb5c4
commit
48e3f79965
@ -90,7 +90,7 @@ public final class Launcher extends Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://lapcatsoftware.com/articles/app-translocation.html
|
// https://lapcatsoftware.com/articles/app-translocation.html
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS
|
||||||
&& ConfigHolder.isNewlyCreated()
|
&& ConfigHolder.isNewlyCreated()
|
||||||
&& System.getProperty("user.dir").startsWith("/private/var/folders/")) {
|
&& System.getProperty("user.dir").startsWith("/private/var/folders/")) {
|
||||||
if (showAlert(AlertType.WARNING, i18n("fatal.mac_app_translocation"), ButtonType.YES, ButtonType.NO) == ButtonType.NO)
|
if (showAlert(AlertType.WARNING, i18n("fatal.mac_app_translocation"), ButtonType.YES, ButtonType.NO) == ButtonType.NO)
|
||||||
@ -152,7 +152,7 @@ public final class Launcher extends Application {
|
|||||||
|| configPath.startsWith("/var/cache/")
|
|| configPath.startsWith("/var/cache/")
|
||||||
|| configPath.startsWith("/dev/shm/")
|
|| configPath.startsWith("/dev/shm/")
|
||||||
|| configPath.contains("/Trash/");
|
|| configPath.contains("/Trash/");
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
return configPath.startsWith("/var/folders/")
|
return configPath.startsWith("/var/folders/")
|
||||||
|| configPath.startsWith("/private/var/folders/")
|
|| configPath.startsWith("/private/var/folders/")
|
||||||
|| configPath.startsWith("/tmp/")
|
|| configPath.startsWith("/tmp/")
|
||||||
|
@ -67,7 +67,7 @@ public final class Main {
|
|||||||
// This environment check will take ~300ms
|
// This environment check will take ~300ms
|
||||||
thread(Main::fixLetsEncrypt, "CA Certificate Check", true);
|
thread(Main::fixLetsEncrypt, "CA Certificate Check", true);
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
initIcon();
|
initIcon();
|
||||||
|
|
||||||
checkJavaFX();
|
checkJavaFX();
|
||||||
|
@ -83,7 +83,7 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
try {
|
try {
|
||||||
return JavaManager.getExecutable(javaDir).toRealPath();
|
return JavaManager.getExecutable(javaDir).toRealPath();
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
if (platform.getOperatingSystem() == OperatingSystem.OSX) {
|
if (platform.getOperatingSystem() == OperatingSystem.MACOS) {
|
||||||
try {
|
try {
|
||||||
return JavaManager.getMacExecutable(javaDir).toRealPath();
|
return JavaManager.getMacExecutable(javaDir).toRealPath();
|
||||||
} catch (IOException ignored1) {
|
} catch (IOException ignored1) {
|
||||||
@ -98,14 +98,8 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
|
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private static void getAllJava(List<JavaRuntime> list, Platform platform, Path platformRoot, boolean isManaged) {
|
||||||
public Collection<JavaRuntime> getAllJava(Platform platform) {
|
try (DirectoryStream<Path> stream = Files.newDirectoryStream(platformRoot)) {
|
||||||
Path root = getPlatformRoot(platform);
|
|
||||||
if (!Files.isDirectory(root))
|
|
||||||
return Collections.emptyList();
|
|
||||||
|
|
||||||
ArrayList<JavaRuntime> list = new ArrayList<>();
|
|
||||||
try (DirectoryStream<Path> stream = Files.newDirectoryStream(root)) {
|
|
||||||
for (Path file : stream) {
|
for (Path file : stream) {
|
||||||
try {
|
try {
|
||||||
String name = file.getFileName().toString();
|
String name = file.getFileName().toString();
|
||||||
@ -115,7 +109,7 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
try {
|
try {
|
||||||
executable = JavaManager.getExecutable(javaDir).toRealPath();
|
executable = JavaManager.getExecutable(javaDir).toRealPath();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (platform.getOperatingSystem() == OperatingSystem.OSX)
|
if (platform.getOperatingSystem() == OperatingSystem.MACOS)
|
||||||
executable = JavaManager.getMacExecutable(javaDir).toRealPath();
|
executable = JavaManager.getMacExecutable(javaDir).toRealPath();
|
||||||
else
|
else
|
||||||
throw e;
|
throw e;
|
||||||
@ -127,7 +121,7 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
manifest = JsonUtils.fromJsonFully(input, JavaManifest.class);
|
manifest = JsonUtils.fromJsonFully(input, JavaManifest.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
list.add(JavaRuntime.of(executable, manifest.getInfo(), true));
|
list.add(JavaRuntime.of(executable, manifest.getInfo(), isManaged));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -137,6 +131,23 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
|
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<JavaRuntime> getAllJava(Platform platform) {
|
||||||
|
Path platformRoot = getPlatformRoot(platform);
|
||||||
|
if (!Files.isDirectory(platformRoot))
|
||||||
|
return Collections.emptyList();
|
||||||
|
|
||||||
|
ArrayList<JavaRuntime> list = new ArrayList<>();
|
||||||
|
|
||||||
|
getAllJava(list, platform, platformRoot, true);
|
||||||
|
if (platform.getOperatingSystem() == OperatingSystem.MACOS) {
|
||||||
|
platformRoot = root.resolve(platform.getOperatingSystem().getMojangName() + "-" + platform.getArchitecture().getCheckedName());
|
||||||
|
if (Files.isDirectory(platformRoot))
|
||||||
|
getAllJava(list, platform, platformRoot, false);
|
||||||
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +160,7 @@ public final class HMCLJavaRepository implements JavaRepository {
|
|||||||
try {
|
try {
|
||||||
executable = JavaManager.getExecutable(javaDir).toRealPath();
|
executable = JavaManager.getExecutable(javaDir).toRealPath();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (platform.getOperatingSystem() == OperatingSystem.OSX)
|
if (platform.getOperatingSystem() == OperatingSystem.MACOS)
|
||||||
executable = JavaManager.getMacExecutable(javaDir).toRealPath();
|
executable = JavaManager.getMacExecutable(javaDir).toRealPath();
|
||||||
else
|
else
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -75,7 +75,7 @@ public final class JavaManager {
|
|||||||
} else if (Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
} else if (Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
||||||
return "linux";
|
return "linux";
|
||||||
}
|
}
|
||||||
} else if (platform.getOperatingSystem() == OperatingSystem.OSX) {
|
} else if (platform.getOperatingSystem() == OperatingSystem.MACOS) {
|
||||||
if (Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
if (Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
||||||
return "mac-os";
|
return "mac-os";
|
||||||
} else if (Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
} else if (Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
||||||
@ -113,7 +113,7 @@ public final class JavaManager {
|
|||||||
if (Architecture.SYSTEM_ARCH == Architecture.X86_64)
|
if (Architecture.SYSTEM_ARCH == Architecture.X86_64)
|
||||||
return architecture == Architecture.X86;
|
return architecture == Architecture.X86;
|
||||||
break;
|
break;
|
||||||
case OSX:
|
case MACOS:
|
||||||
if (Architecture.SYSTEM_ARCH == Architecture.ARM64)
|
if (Architecture.SYSTEM_ARCH == Architecture.ARM64)
|
||||||
return architecture == Architecture.X86_64;
|
return architecture == Architecture.X86_64;
|
||||||
break;
|
break;
|
||||||
@ -279,7 +279,7 @@ public final class JavaManager {
|
|||||||
LibraryAnalyzer analyzer = version != null ? LibraryAnalyzer.analyze(version, gameVersion != null ? gameVersion.toString() : null) : null;
|
LibraryAnalyzer analyzer = version != null ? LibraryAnalyzer.analyze(version, gameVersion != null ? gameVersion.toString() : null) : null;
|
||||||
|
|
||||||
boolean forceX86 = Architecture.SYSTEM_ARCH == Architecture.ARM64
|
boolean forceX86 = Architecture.SYSTEM_ARCH == Architecture.ARM64
|
||||||
&& (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
&& (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
&& (gameVersion == null || gameVersion.compareTo("1.6") < 0);
|
&& (gameVersion == null || gameVersion.compareTo("1.6") < 0);
|
||||||
|
|
||||||
GameJavaVersion suggestedJavaVersion =
|
GameJavaVersion suggestedJavaVersion =
|
||||||
@ -349,9 +349,9 @@ public final class JavaManager {
|
|||||||
searchAllJavaInRepository(javaRuntimes, Platform.WINDOWS_X86);
|
searchAllJavaInRepository(javaRuntimes, Platform.WINDOWS_X86);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OSX:
|
case MACOS:
|
||||||
if (Architecture.SYSTEM_ARCH == Architecture.ARM64)
|
if (Architecture.SYSTEM_ARCH == Architecture.ARM64)
|
||||||
searchAllJavaInRepository(javaRuntimes, Platform.OSX_X86_64);
|
searchAllJavaInRepository(javaRuntimes, Platform.MACOS_X86_64);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +375,7 @@ public final class JavaManager {
|
|||||||
searchAllJavaInDirectory(javaRuntimes, Paths.get("/usr/lib64/jvm")); // General locations
|
searchAllJavaInDirectory(javaRuntimes, Paths.get("/usr/lib64/jvm")); // General locations
|
||||||
searchAllJavaInDirectory(javaRuntimes, Paths.get(System.getProperty("user.home"), "/.sdkman/candidates/java")); // SDKMAN!
|
searchAllJavaInDirectory(javaRuntimes, Paths.get(System.getProperty("user.home"), "/.sdkman/candidates/java")); // SDKMAN!
|
||||||
break;
|
break;
|
||||||
case OSX:
|
case MACOS:
|
||||||
searchJavaInMacJavaVirtualMachines(javaRuntimes, Paths.get("/Library/Java/JavaVirtualMachines"));
|
searchJavaInMacJavaVirtualMachines(javaRuntimes, Paths.get("/Library/Java/JavaVirtualMachines"));
|
||||||
searchJavaInMacJavaVirtualMachines(javaRuntimes, Paths.get(System.getProperty("user.home"), "/Library/Java/JavaVirtualMachines"));
|
searchJavaInMacJavaVirtualMachines(javaRuntimes, Paths.get(System.getProperty("user.home"), "/Library/Java/JavaVirtualMachines"));
|
||||||
tryAddJavaExecutable(javaRuntimes, Paths.get("/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"));
|
tryAddJavaExecutable(javaRuntimes, Paths.get("/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"));
|
||||||
@ -405,7 +405,7 @@ public final class JavaManager {
|
|||||||
.ifPresent(it -> searchAllOfficialJava(javaRuntimes, it, false));
|
.ifPresent(it -> searchAllOfficialJava(javaRuntimes, it, false));
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.SYSTEM_ARCH == Architecture.X86_64) {
|
||||||
searchAllOfficialJava(javaRuntimes, Paths.get(System.getProperty("user.home"), ".minecraft/runtime"), false);
|
searchAllOfficialJava(javaRuntimes, Paths.get(System.getProperty("user.home"), ".minecraft/runtime"), false);
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
searchAllOfficialJava(javaRuntimes, Paths.get(System.getProperty("user.home"), "Library/Application Support/minecraft/runtime"), false);
|
searchAllOfficialJava(javaRuntimes, Paths.get(System.getProperty("user.home"), "Library/Application Support/minecraft/runtime"), false);
|
||||||
}
|
}
|
||||||
searchAllOfficialJava(javaRuntimes, CacheRepository.getInstance().getCacheDirectory().resolve("java"), true);
|
searchAllOfficialJava(javaRuntimes, CacheRepository.getInstance().getCacheDirectory().resolve("java"), true);
|
||||||
@ -548,7 +548,7 @@ public final class JavaManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
Path macPath = dir.resolve("jre.bundle/Contents/Home");
|
Path macPath = dir.resolve("jre.bundle/Contents/Home");
|
||||||
if (Files.exists(macPath)) {
|
if (Files.exists(macPath)) {
|
||||||
tryAddJavaHome(javaRuntimes, macPath);
|
tryAddJavaHome(javaRuntimes, macPath);
|
||||||
@ -587,8 +587,8 @@ public final class JavaManager {
|
|||||||
}
|
}
|
||||||
searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.WINDOWS_X86), verify);
|
searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.WINDOWS_X86), verify);
|
||||||
}
|
}
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX && Architecture.CURRENT_ARCH == Architecture.ARM64) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && Architecture.CURRENT_ARCH == Architecture.ARM64) {
|
||||||
searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.OSX_X86_64), verify);
|
searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.MACOS_X86_64), verify);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,8 +293,8 @@ public final class Controllers {
|
|||||||
if (!Architecture.SYSTEM_ARCH.isX86() && globalConfig().getPlatformPromptVersion() < 1) {
|
if (!Architecture.SYSTEM_ARCH.isX86() && globalConfig().getPlatformPromptVersion() < 1) {
|
||||||
Runnable continueAction = () -> globalConfig().setPlatformPromptVersion(1);
|
Runnable continueAction = () -> globalConfig().setPlatformPromptVersion(1);
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX && Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
||||||
Controllers.dialog(i18n("fatal.unsupported_platform.osx_arm64"), null, MessageType.INFO, continueAction);
|
Controllers.dialog(i18n("fatal.unsupported_platform.macos_arm64"), null, MessageType.INFO, continueAction);
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS && Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS && Architecture.SYSTEM_ARCH == Architecture.ARM64) {
|
||||||
Controllers.dialog(i18n("fatal.unsupported_platform.windows_arm64"), null, MessageType.INFO, continueAction);
|
Controllers.dialog(i18n("fatal.unsupported_platform.windows_arm64"), null, MessageType.INFO, continueAction);
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX &&
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX &&
|
||||||
|
@ -379,7 +379,7 @@ public final class FXUtils {
|
|||||||
String openCommand;
|
String openCommand;
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS)
|
||||||
openCommand = "explorer.exe";
|
openCommand = "explorer.exe";
|
||||||
else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
openCommand = "/usr/bin/open";
|
openCommand = "/usr/bin/open";
|
||||||
else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && new File("/usr/bin/xdg-open").exists())
|
else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && new File("/usr/bin/xdg-open").exists())
|
||||||
openCommand = "/usr/bin/xdg-open";
|
openCommand = "/usr/bin/xdg-open";
|
||||||
@ -416,7 +416,7 @@ public final class FXUtils {
|
|||||||
String[] openCommands;
|
String[] openCommands;
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS)
|
||||||
openCommands = new String[]{"explorer.exe", "/select,", path};
|
openCommands = new String[]{"explorer.exe", "/select,", path};
|
||||||
else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
openCommands = new String[]{"/usr/bin/open", "-R", path};
|
openCommands = new String[]{"/usr/bin/open", "-R", path};
|
||||||
else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && SystemUtils.which("dbus-send") != null)
|
else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && SystemUtils.which("dbus-send") != null)
|
||||||
openCommands = new String[]{
|
openCommands = new String[]{
|
||||||
@ -498,7 +498,7 @@ public final class FXUtils {
|
|||||||
try {
|
try {
|
||||||
java.awt.Desktop.getDesktop().browse(new URI(link));
|
java.awt.Desktop.getDesktop().browse(new URI(link));
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
try {
|
try {
|
||||||
Runtime.getRuntime().exec(new String[]{"/usr/bin/open", link});
|
Runtime.getRuntime().exec(new String[]{"/usr/bin/open", link});
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
@ -759,7 +759,7 @@ public final class FXUtils {
|
|||||||
String icon;
|
String icon;
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||||
icon = "/assets/img/icon.png";
|
icon = "/assets/img/icon.png";
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
icon = "/assets/img/icon-mac.png";
|
icon = "/assets/img/icon-mac.png";
|
||||||
} else {
|
} else {
|
||||||
icon = "/assets/img/icon@4x.png";
|
icon = "/assets/img/icon@4x.png";
|
||||||
|
@ -116,10 +116,10 @@ public final class NativePatcher {
|
|||||||
if (settings.isNotPatchNatives())
|
if (settings.isNotPatchNatives())
|
||||||
return version;
|
return version;
|
||||||
|
|
||||||
if (arch.isX86() && (os == OperatingSystem.WINDOWS || os == OperatingSystem.LINUX || os == OperatingSystem.OSX))
|
if (arch.isX86() && (os == OperatingSystem.WINDOWS || os == OperatingSystem.LINUX || os == OperatingSystem.MACOS))
|
||||||
return version;
|
return version;
|
||||||
|
|
||||||
if (arch == Architecture.ARM64 && (os == OperatingSystem.OSX || os == OperatingSystem.WINDOWS)
|
if (arch == Architecture.ARM64 && (os == OperatingSystem.MACOS || os == OperatingSystem.WINDOWS)
|
||||||
&& gameVersionNumber != null
|
&& gameVersionNumber != null
|
||||||
&& gameVersionNumber.compareTo("1.19") >= 0)
|
&& gameVersionNumber.compareTo("1.19") >= 0)
|
||||||
return version;
|
return version;
|
||||||
|
@ -14,7 +14,7 @@ case "$OSTYPE" in
|
|||||||
linux*)
|
linux*)
|
||||||
_HMCL_OS="linux";;
|
_HMCL_OS="linux";;
|
||||||
darwin*)
|
darwin*)
|
||||||
_HMCL_OS="osx";;
|
_HMCL_OS="macos";;
|
||||||
freebsd*)
|
freebsd*)
|
||||||
_HMCL_OS="freebsd";;
|
_HMCL_OS="freebsd";;
|
||||||
msys*|cygwin*)
|
msys*|cygwin*)
|
||||||
@ -159,7 +159,7 @@ case "$_HMCL_OS-$_HMCL_ARCH" in
|
|||||||
linux-x86|linux-x86_64|linux-arm64|linux-arm32|linux-riscv64|linux-loongarch64)
|
linux-x86|linux-x86_64|linux-arm64|linux-arm32|linux-riscv64|linux-loongarch64)
|
||||||
_HMCL_JAVA_DOWNLOAD_PAGE="https://docs.hmcl.net/downloads/linux/$_HMCL_ARCH.html"
|
_HMCL_JAVA_DOWNLOAD_PAGE="https://docs.hmcl.net/downloads/linux/$_HMCL_ARCH.html"
|
||||||
;;
|
;;
|
||||||
osx-x86_64|osx-arm64)
|
macos-x86_64|macos-arm64)
|
||||||
_HMCL_JAVA_DOWNLOAD_PAGE="https://docs.hmcl.net/downloads/macos/$_HMCL_ARCH.html"
|
_HMCL_JAVA_DOWNLOAD_PAGE="https://docs.hmcl.net/downloads/macos/$_HMCL_ARCH.html"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -402,7 +402,7 @@ fatal.unsupported_platform=Minecraft is not fully supported on your platform yet
|
|||||||
If you cannot launch Minecraft 1.17 and later, you can try switching the "Renderer" to "Software" in "Global/Instance-specific Settings → Advanced Settings" to use CPU rendering for better compatibility.
|
If you cannot launch Minecraft 1.17 and later, you can try switching the "Renderer" to "Software" in "Global/Instance-specific Settings → Advanced Settings" to use CPU rendering for better compatibility.
|
||||||
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher has provided support for the Loongson platform.\n\
|
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher has provided support for the Loongson platform.\n\
|
||||||
If you encounter problems when playing a game, you can visit https://docs.hmcl.net/groups.html for help.
|
If you encounter problems when playing a game, you can visit https://docs.hmcl.net/groups.html for help.
|
||||||
fatal.unsupported_platform.osx_arm64=Hello Minecraft! Launcher has provided support for the Apple silicon platform, using native ARM Java to launch games to get a smoother gaming experience.\n\
|
fatal.unsupported_platform.macos_arm64=Hello Minecraft! Launcher has provided support for the Apple silicon platform, using native ARM Java to launch games to get a smoother gaming experience.\n\
|
||||||
If you encounter problems when playing a game, launching the game with Java based on x86-64 architecture may offer better compatibility.
|
If you encounter problems when playing a game, launching the game with Java based on x86-64 architecture may offer better compatibility.
|
||||||
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher has provided native support for the Windows on Arm platform. If you encounter problems when playing a game, please try launching the game with Java based on x86 architecture.\n\
|
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher has provided native support for the Windows on Arm platform. If you encounter problems when playing a game, please try launching the game with Java based on x86 architecture.\n\
|
||||||
\n\
|
\n\
|
||||||
|
@ -405,7 +405,7 @@ fatal.unsupported_platform=Minecraft aún no es totalmente compatible con tu pla
|
|||||||
Si no puedes iniciar Minecraft 1.17 y versiones posteriores, puedes probar a cambiar el «Renderizador» a «Software» en «Config. Global/Específica de instancia → Configuración avanzada» para utilizar el renderizado de la CPU y mejorar la compatibilidad.
|
Si no puedes iniciar Minecraft 1.17 y versiones posteriores, puedes probar a cambiar el «Renderizador» a «Software» en «Config. Global/Específica de instancia → Configuración avanzada» para utilizar el renderizado de la CPU y mejorar la compatibilidad.
|
||||||
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher ha prestado apoyo a la plataforma Loongson.\n\
|
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher ha prestado apoyo a la plataforma Loongson.\n\
|
||||||
Si tienes problemas al jugar, puedes visitar https://docs.hmcl.net/groups.html para obtener ayuda.
|
Si tienes problemas al jugar, puedes visitar https://docs.hmcl.net/groups.html para obtener ayuda.
|
||||||
fatal.unsupported_platform.osx_arm64=Hello Minecraft! Launcher ha proporcionado soporte para la plataforma de chips de Apple, utilizando Java nativo de ARM para ejecutar juegos y conseguir una experiencia de juego más fluida.\n\
|
fatal.unsupported_platform.macos_arm64=Hello Minecraft! Launcher ha proporcionado soporte para la plataforma de chips de Apple, utilizando Java nativo de ARM para ejecutar juegos y conseguir una experiencia de juego más fluida.\n\
|
||||||
Si tienes problemas al jugar a un juego, ejecutarlo con Java de arquitectura x86-64 puede tener mejor compatibilidad.
|
Si tienes problemas al jugar a un juego, ejecutarlo con Java de arquitectura x86-64 puede tener mejor compatibilidad.
|
||||||
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher ha proporcionado soporte nativo para la plataforma Windows en Arm. Si tiene problemas al jugar a un juego, intente iniciarlo con Java de arquitectura x86.\n\
|
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher ha proporcionado soporte nativo para la plataforma Windows en Arm. Si tiene problemas al jugar a un juego, intente iniciarlo con Java de arquitectura x86.\n\
|
||||||
\n\
|
\n\
|
||||||
|
@ -403,7 +403,7 @@ fatal.unsupported_platform=Minecraft еще не полностью поддер
|
|||||||
Если вы не можете запустить Minecraft 1.17 и более поздние версии, попробуйте переключить «Рендерер» на «Программный» в разделе «Глобальные настройки / Раздельные настройки для сборки → Расширенные настройки», чтобы использовать рендеринг процессора для лучшей совместимости.
|
Если вы не можете запустить Minecraft 1.17 и более поздние версии, попробуйте переключить «Рендерер» на «Программный» в разделе «Глобальные настройки / Раздельные настройки для сборки → Расширенные настройки», чтобы использовать рендеринг процессора для лучшей совместимости.
|
||||||
fatal.unsupported_platform.loongarch=Лаунчер обеспечил поддержку платформы Loongson.\n\
|
fatal.unsupported_platform.loongarch=Лаунчер обеспечил поддержку платформы Loongson.\n\
|
||||||
Если у вас возникнут проблемы во время игры, вы можете обратиться за помощью на сайт https://docs.hmcl.net/groups.html.
|
Если у вас возникнут проблемы во время игры, вы можете обратиться за помощью на сайт https://docs.hmcl.net/groups.html.
|
||||||
fatal.unsupported_platform.osx_arm64=Лаунчер обеспечил поддержку платформы Apple silicon, используя родную ARM Java для запуска игр, чтобы получить более плавный игровой опыт.\n\
|
fatal.unsupported_platform.macos_arm64=Лаунчер обеспечил поддержку платформы Apple silicon, используя родную ARM Java для запуска игр, чтобы получить более плавный игровой опыт.\n\
|
||||||
Если вы столкнулись с проблемами во время игры, запуск игры с Java на базе архитектуры x86-64 может обеспечить лучшую совместимость.
|
Если вы столкнулись с проблемами во время игры, запуск игры с Java на базе архитектуры x86-64 может обеспечить лучшую совместимость.
|
||||||
fatal.unsupported_platform.windows_arm64=Лаунчер обеспечил нативную поддержку платформы Windows на архитектуре Arm. Если у вам возникли проблемы во время игры, попробуйте запустить игру с Java на базе архитектуры x86.\n\
|
fatal.unsupported_platform.windows_arm64=Лаунчер обеспечил нативную поддержку платформы Windows на архитектуре Arm. Если у вам возникли проблемы во время игры, попробуйте запустить игру с Java на базе архитектуры x86.\n\
|
||||||
\n\
|
\n\
|
||||||
|
@ -381,7 +381,7 @@ fatal.samba=如果您正在透過 Samba 共亯的目錄中開啟 Hello Minecraft
|
|||||||
fatal.illegal_char=由於您的使用者目錄路徑中存在無效字元『=』,您將無法使用外部登入帳戶以及離線登入更換外觀功能。
|
fatal.illegal_char=由於您的使用者目錄路徑中存在無效字元『=』,您將無法使用外部登入帳戶以及離線登入更換外觀功能。
|
||||||
fatal.unsupported_platform=Minecraft 尚未你您的平臺提供完善支援,所以可能影響遊戲體驗或無法啟動遊戲。\n若無法啟動 Minecraft 1.17 及更高版本,可以嘗試在「(全域/實例特定) 遊戲設定 → 進階設定 → 除錯選項」中將「繪製器」切換為「軟繪製器」,以獲得更好的相容性。
|
fatal.unsupported_platform=Minecraft 尚未你您的平臺提供完善支援,所以可能影響遊戲體驗或無法啟動遊戲。\n若無法啟動 Minecraft 1.17 及更高版本,可以嘗試在「(全域/實例特定) 遊戲設定 → 進階設定 → 除錯選項」中將「繪製器」切換為「軟繪製器」,以獲得更好的相容性。
|
||||||
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher 已為龍芯提供支援。\n如果遇到問題,你可以點擊右上角幫助按鈕進行求助。
|
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher 已為龍芯提供支援。\n如果遇到問題,你可以點擊右上角幫助按鈕進行求助。
|
||||||
fatal.unsupported_platform.osx_arm64=Hello Minecraft! Launcher 已為 Apple Silicon 平臺提供支援,使用 ARM 原生 Java 啟動遊戲以獲得更流暢的遊戲體驗。\n如果你在遊戲中遭遇問題,使用 x86-64 架構的 Java 啟動遊戲可能有更好的相容性。
|
fatal.unsupported_platform.macos_arm64=Hello Minecraft! Launcher 已為 Apple Silicon 平臺提供支援,使用 ARM 原生 Java 啟動遊戲以獲得更流暢的遊戲體驗。\n如果你在遊戲中遭遇問題,使用 x86-64 架構的 Java 啟動遊戲可能有更好的相容性。
|
||||||
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher 已為 Windows on Arm 平臺提供原生支援。如果你在遊戲中遭遇問題,請嘗試使用 x86 架構的 Java 啟動遊戲。\n\n如果你正在使用<b>高通</b>平臺,你可能需要安裝 <a href="ms-windows-store://pdp/?productid=9NQPSL29BFFF">OpenGL 相容包</a>後才能進行遊戲。點擊連結前往 Microsoft Store 安裝相容包。
|
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher 已為 Windows on Arm 平臺提供原生支援。如果你在遊戲中遭遇問題,請嘗試使用 x86 架構的 Java 啟動遊戲。\n\n如果你正在使用<b>高通</b>平臺,你可能需要安裝 <a href="ms-windows-store://pdp/?productid=9NQPSL29BFFF">OpenGL 相容包</a>後才能進行遊戲。點擊連結前往 Microsoft Store 安裝相容包。
|
||||||
|
|
||||||
feedback=回報
|
feedback=回報
|
||||||
|
@ -390,7 +390,7 @@ fatal.samba=如果你正在通过 Samba 共享的文件夹中运行 Hello Minecr
|
|||||||
fatal.illegal_char=由于你的用户文件夹路径中存在非法字符“=”,你将无法使用外置登录账户以及离线登录更换皮肤功能。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。
|
fatal.illegal_char=由于你的用户文件夹路径中存在非法字符“=”,你将无法使用外置登录账户以及离线登录更换皮肤功能。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。
|
||||||
fatal.unsupported_platform=Minecraft 尚未对你的平台提供完善支持,所以可能影响游戏体验或无法启动游戏。\n若无法启动 Minecraft 1.17 及更高版本,可以尝试在“(全局/版本特定) 游戏设置 → 高级设置 → 调试选项”中将“渲染器”切换为“软渲染器”,以获得更好的兼容性。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
fatal.unsupported_platform=Minecraft 尚未对你的平台提供完善支持,所以可能影响游戏体验或无法启动游戏。\n若无法启动 Minecraft 1.17 及更高版本,可以尝试在“(全局/版本特定) 游戏设置 → 高级设置 → 调试选项”中将“渲染器”切换为“软渲染器”,以获得更好的兼容性。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
||||||
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher 已为龙芯提供支持。\n如果遇到问题,你可以点击右上角帮助按钮进行求助。
|
fatal.unsupported_platform.loongarch=Hello Minecraft! Launcher 已为龙芯提供支持。\n如果遇到问题,你可以点击右上角帮助按钮进行求助。
|
||||||
fatal.unsupported_platform.osx_arm64=Hello Minecraft! Launcher 已为 Apple Silicon 平台提供支持,使用 ARM 原生 Java 启动游戏以获得更流畅的游戏体验。\n如果你在游戏中遇到问题,使用 x86-64 架构的 Java 启动游戏可能有更好的兼容性。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
fatal.unsupported_platform.macos_arm64=Hello Minecraft! Launcher 已为 Apple Silicon 平台提供支持,使用 ARM 原生 Java 启动游戏以获得更流畅的游戏体验。\n如果你在游戏中遇到问题,使用 x86-64 架构的 Java 启动游戏可能有更好的兼容性。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
||||||
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher 已为 Windows on Arm 平台提供原生支持。如果你在游戏中遇到问题,请尝试使用 x86 架构的 Java 启动游戏。\n如果你正在使用 <b>高通</b> 平台,你可能需要安装 <a href="ms-windows-store://pdp/?productid=9NQPSL29BFFF">OpenGL 兼容包</a> 后才能进行游戏。点击链接前往 Microsoft Store 安装兼容包。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
fatal.unsupported_platform.windows_arm64=Hello Minecraft! Launcher 已为 Windows on Arm 平台提供原生支持。如果你在游戏中遇到问题,请尝试使用 x86 架构的 Java 启动游戏。\n如果你正在使用 <b>高通</b> 平台,你可能需要安装 <a href="ms-windows-store://pdp/?productid=9NQPSL29BFFF">OpenGL 兼容包</a> 后才能进行游戏。点击链接前往 Microsoft Store 安装兼容包。\n如遇到问题,你可以点击右上角帮助按钮进行求助。
|
||||||
|
|
||||||
feedback=反馈
|
feedback=反馈
|
||||||
|
@ -4411,7 +4411,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"osx-arm64": {
|
"macos-arm64": {
|
||||||
"org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3:natives": {
|
"org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3:natives": {
|
||||||
"name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1",
|
"name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1",
|
||||||
"downloads": {
|
"downloads": {
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
"sha1": "0bf7380823bb8c420dd41837d2c71087b8953ec1"
|
"sha1": "0bf7380823bb8c420dd41837d2c71087b8953ec1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"osx-x86_64": [
|
"macos-x86_64": [
|
||||||
{
|
{
|
||||||
"module": "javafx.base",
|
"module": "javafx.base",
|
||||||
"groupId": "org.openjfx",
|
"groupId": "org.openjfx",
|
||||||
@ -103,7 +103,7 @@
|
|||||||
"sha1": "b7786b1b63e741c0e234829825fae5fef9d96c31"
|
"sha1": "b7786b1b63e741c0e234829825fae5fef9d96c31"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"osx-arm64": [
|
"macos-arm64": [
|
||||||
{
|
{
|
||||||
"module": "javafx.base",
|
"module": "javafx.base",
|
||||||
"groupId": "org.openjfx",
|
"groupId": "org.openjfx",
|
||||||
|
@ -23,7 +23,6 @@ import org.jackhuang.hmcl.task.GetTask;
|
|||||||
import org.jackhuang.hmcl.task.Task;
|
import org.jackhuang.hmcl.task.Task;
|
||||||
import org.jackhuang.hmcl.util.gson.JsonUtils;
|
import org.jackhuang.hmcl.util.gson.JsonUtils;
|
||||||
import org.jackhuang.hmcl.util.io.NetworkUtils;
|
import org.jackhuang.hmcl.util.io.NetworkUtils;
|
||||||
import org.jackhuang.hmcl.util.platform.Architecture;
|
|
||||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||||
import org.jackhuang.hmcl.util.platform.Platform;
|
import org.jackhuang.hmcl.util.platform.Platform;
|
||||||
import org.jackhuang.hmcl.util.versioning.VersionNumber;
|
import org.jackhuang.hmcl.util.versioning.VersionNumber;
|
||||||
@ -37,14 +36,6 @@ public final class DiscoFetchJavaListTask extends Task<EnumMap<JavaPackageType,
|
|||||||
|
|
||||||
public static final String API_ROOT = System.getProperty("hmcl.discoapi.override", "https://api.foojay.io/disco/v3.0");
|
public static final String API_ROOT = System.getProperty("hmcl.discoapi.override", "https://api.foojay.io/disco/v3.0");
|
||||||
|
|
||||||
private static String getOperatingSystemName(OperatingSystem os) {
|
|
||||||
return os == OperatingSystem.OSX ? "macos" : os.getCheckedName();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getArchitectureName(Architecture arch) {
|
|
||||||
return arch.getCheckedName();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final DiscoJavaDistribution distribution;
|
private final DiscoJavaDistribution distribution;
|
||||||
private final String archiveType;
|
private final String archiveType;
|
||||||
private final Task<String> fetchPackagesTask;
|
private final Task<String> fetchPackagesTask;
|
||||||
@ -55,8 +46,8 @@ public final class DiscoFetchJavaListTask extends Task<EnumMap<JavaPackageType,
|
|||||||
|
|
||||||
HashMap<String, String> params = new HashMap<>();
|
HashMap<String, String> params = new HashMap<>();
|
||||||
params.put("distribution", distribution.getApiParameter());
|
params.put("distribution", distribution.getApiParameter());
|
||||||
params.put("operating_system", getOperatingSystemName(platform.getOperatingSystem()));
|
params.put("operating_system", platform.getOperatingSystem().getCheckedName());
|
||||||
params.put("architecture", getArchitectureName(platform.getArchitecture()));
|
params.put("architecture", platform.getArchitecture().getCheckedName());
|
||||||
params.put("archive_type", archiveType);
|
params.put("archive_type", archiveType);
|
||||||
params.put("directly_downloadable", "true");
|
params.put("directly_downloadable", "true");
|
||||||
if (platform.getOperatingSystem() == OperatingSystem.LINUX)
|
if (platform.getOperatingSystem() == OperatingSystem.LINUX)
|
||||||
|
@ -40,12 +40,12 @@ public enum DiscoJavaDistribution implements JavaDistribution<DiscoJavaRemoteVer
|
|||||||
EnumSet.of(JDK, JRE),
|
EnumSet.of(JDK, JRE),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64, PPC64LE, S390X, SPARCV9)),
|
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64, PPC64LE, S390X, SPARCV9)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))),
|
pair(MACOS, EnumSet.of(X86_64, ARM64))),
|
||||||
LIBERICA("BellSoft Liberica", "liberica", "BellSoft",
|
LIBERICA("BellSoft Liberica", "liberica", "BellSoft",
|
||||||
EnumSet.of(JDK, JRE, JDKFX, JREFX),
|
EnumSet.of(JDK, JRE, JDKFX, JREFX),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64LE)),
|
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64LE)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))) {
|
pair(MACOS, EnumSet.of(X86_64, ARM64))) {
|
||||||
@Override
|
@Override
|
||||||
public boolean testVersion(DiscoJavaRemoteVersion version) {
|
public boolean testVersion(DiscoJavaRemoteVersion version) {
|
||||||
if (!super.testVersion(version))
|
if (!super.testVersion(version))
|
||||||
@ -59,23 +59,23 @@ public enum DiscoJavaDistribution implements JavaDistribution<DiscoJavaRemoteVer
|
|||||||
EnumSet.of(JDK, JRE, JDKFX, JREFX),
|
EnumSet.of(JDK, JRE, JDKFX, JREFX),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
pair(WINDOWS, EnumSet.of(X86_64, X86, ARM64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64LE)),
|
pair(LINUX, EnumSet.of(X86_64, X86, ARM64, ARM32, RISCV64, PPC64LE)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))),
|
pair(MACOS, EnumSet.of(X86_64, ARM64))),
|
||||||
GRAALVM("Oracle GraalVM", "graalvm", "Oracle",
|
GRAALVM("Oracle GraalVM", "graalvm", "Oracle",
|
||||||
EnumSet.of(JDK),
|
EnumSet.of(JDK),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64)),
|
pair(WINDOWS, EnumSet.of(X86_64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, ARM64)),
|
pair(LINUX, EnumSet.of(X86_64, ARM64)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))),
|
pair(MACOS, EnumSet.of(X86_64, ARM64))),
|
||||||
SEMERU("IBM Semeru (OpenJ9)", "semeru", "IBM",
|
SEMERU("IBM Semeru (OpenJ9)", "semeru", "IBM",
|
||||||
EnumSet.of(JDK, JRE),
|
EnumSet.of(JDK, JRE),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64)),
|
pair(WINDOWS, EnumSet.of(X86_64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, ARM64, PPC64LE, S390X)),
|
pair(LINUX, EnumSet.of(X86_64, ARM64, PPC64LE, S390X)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))
|
pair(MACOS, EnumSet.of(X86_64, ARM64))
|
||||||
),
|
),
|
||||||
CORRETTO("Amazon Corretto", "corretto", "Amazon",
|
CORRETTO("Amazon Corretto", "corretto", "Amazon",
|
||||||
EnumSet.of(JDK),
|
EnumSet.of(JDK),
|
||||||
pair(WINDOWS, EnumSet.of(X86_64)),
|
pair(WINDOWS, EnumSet.of(X86_64)),
|
||||||
pair(LINUX, EnumSet.of(X86_64, ARM64)),
|
pair(LINUX, EnumSet.of(X86_64, ARM64)),
|
||||||
pair(OSX, EnumSet.of(X86_64, ARM64))
|
pair(MACOS, EnumSet.of(X86_64, ARM64))
|
||||||
);
|
);
|
||||||
|
|
||||||
public static DiscoJavaDistribution of(String name) {
|
public static DiscoJavaDistribution of(String name) {
|
||||||
|
@ -73,13 +73,13 @@ public final class GameJavaVersion {
|
|||||||
switch (operatingSystem) {
|
switch (operatingSystem) {
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
case LINUX:
|
case LINUX:
|
||||||
case OSX:
|
case MACOS:
|
||||||
return Arrays.asList(JAVA_8, JAVA_16, JAVA_17, JAVA_21);
|
return Arrays.asList(JAVA_8, JAVA_16, JAVA_17, JAVA_21);
|
||||||
}
|
}
|
||||||
} else if (architecture == Architecture.ARM64) {
|
} else if (architecture == Architecture.ARM64) {
|
||||||
switch (operatingSystem) {
|
switch (operatingSystem) {
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
case OSX:
|
case MACOS:
|
||||||
return Arrays.asList(JAVA_17, JAVA_21);
|
return Arrays.asList(JAVA_17, JAVA_21);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ public enum JavaVersionConstraint {
|
|||||||
if (java == null || java.getArchitecture() != Architecture.ARM64)
|
if (java == null || java.getArchitecture() != Architecture.ARM64)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
return gameVersionNumber.compareTo("1.6") < 0;
|
return gameVersionNumber.compareTo("1.6") < 0;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -46,7 +46,7 @@ public class Library implements Comparable<Library>, Validation {
|
|||||||
private final String url;
|
private final String url;
|
||||||
private final LibrariesDownloadInfo downloads;
|
private final LibrariesDownloadInfo downloads;
|
||||||
private final ExtractRules extract;
|
private final ExtractRules extract;
|
||||||
private final Map<OperatingSystem, String> natives;
|
private final Map<String, String> natives;
|
||||||
private final List<CompatibilityRule> rules;
|
private final List<CompatibilityRule> rules;
|
||||||
private final List<String> checksums;
|
private final List<String> checksums;
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ public class Library implements Comparable<Library>, Validation {
|
|||||||
this(artifact, url, downloads, null, null, null, null, null, null);
|
this(artifact, url, downloads, null, null, null, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Library(Artifact artifact, String url, LibrariesDownloadInfo downloads, List<String> checksums, ExtractRules extract, Map<OperatingSystem, String> natives, List<CompatibilityRule> rules, String hint, String filename) {
|
public Library(Artifact artifact, String url, LibrariesDownloadInfo downloads, List<String> checksums, ExtractRules extract, Map<String, String> natives, List<CompatibilityRule> rules, String hint, String filename) {
|
||||||
this.artifact = artifact;
|
this.artifact = artifact;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.downloads = downloads;
|
this.downloads = downloads;
|
||||||
@ -94,8 +94,8 @@ public class Library implements Comparable<Library>, Validation {
|
|||||||
|
|
||||||
public String getClassifier() {
|
public String getClassifier() {
|
||||||
if (artifact.getClassifier() == null)
|
if (artifact.getClassifier() == null)
|
||||||
if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS))
|
if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS.getMojangName()))
|
||||||
return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Architecture.SYSTEM_ARCH.getBits().getBit());
|
return natives.get(OperatingSystem.CURRENT_OS.getMojangName()).replace("${arch}", Architecture.SYSTEM_ARCH.getBits().getBit());
|
||||||
else
|
else
|
||||||
return null;
|
return null;
|
||||||
else
|
else
|
||||||
|
@ -29,7 +29,7 @@ import java.util.regex.Pattern;
|
|||||||
*/
|
*/
|
||||||
public final class OSRestriction {
|
public final class OSRestriction {
|
||||||
|
|
||||||
private final OperatingSystem name;
|
private final String name;
|
||||||
private final String version;
|
private final String version;
|
||||||
private final String arch;
|
private final String arch;
|
||||||
|
|
||||||
@ -37,21 +37,27 @@ public final class OSRestriction {
|
|||||||
this(OperatingSystem.UNKNOWN);
|
this(OperatingSystem.UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OSRestriction(OperatingSystem name) {
|
public OSRestriction(OperatingSystem os) {
|
||||||
this(name, null);
|
this(os, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OSRestriction(OperatingSystem name, String version) {
|
public OSRestriction(OperatingSystem os, String version) {
|
||||||
this(name, version, null);
|
this(os, version, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OSRestriction(OperatingSystem name, String version, String arch) {
|
public OSRestriction(OperatingSystem os, String version, String arch) {
|
||||||
|
this.name = os.getMojangName();
|
||||||
|
this.version = version;
|
||||||
|
this.arch = arch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OSRestriction(String name, String version, String arch) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperatingSystem getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,8 +70,10 @@ public final class OSRestriction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean allow() {
|
public boolean allow() {
|
||||||
if (name != OperatingSystem.UNKNOWN && name != OperatingSystem.CURRENT_OS
|
OperatingSystem os = OperatingSystem.parseOSName(name);
|
||||||
&& !(name == OperatingSystem.LINUX && OperatingSystem.CURRENT_OS.isLinuxOrBSD()))
|
if (os != OperatingSystem.UNKNOWN
|
||||||
|
&& os != OperatingSystem.CURRENT_OS
|
||||||
|
&& !(os == OperatingSystem.LINUX && OperatingSystem.CURRENT_OS.isLinuxOrBSD()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (version != null)
|
if (version != null)
|
||||||
|
@ -20,7 +20,6 @@ package org.jackhuang.hmcl.game.tlauncher;
|
|||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
import org.jackhuang.hmcl.game.*;
|
import org.jackhuang.hmcl.game.*;
|
||||||
import org.jackhuang.hmcl.util.Immutable;
|
import org.jackhuang.hmcl.util.Immutable;
|
||||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -36,11 +35,11 @@ public class TLauncherLibrary {
|
|||||||
@SerializedName("classifies") // stupid typo made by TLauncher
|
@SerializedName("classifies") // stupid typo made by TLauncher
|
||||||
private final Map<String, LibraryDownloadInfo> classifiers;
|
private final Map<String, LibraryDownloadInfo> classifiers;
|
||||||
private final ExtractRules extract;
|
private final ExtractRules extract;
|
||||||
private final Map<OperatingSystem, String> natives;
|
private final Map<String, String> natives;
|
||||||
private final List<CompatibilityRule> rules;
|
private final List<CompatibilityRule> rules;
|
||||||
private final List<String> checksums;
|
private final List<String> checksums;
|
||||||
|
|
||||||
public TLauncherLibrary(Artifact name, String url, LibraryDownloadInfo artifact, Map<String, LibraryDownloadInfo> classifiers, ExtractRules extract, Map<OperatingSystem, String> natives, List<CompatibilityRule> rules, List<String> checksums) {
|
public TLauncherLibrary(Artifact name, String url, LibraryDownloadInfo artifact, Map<String, LibraryDownloadInfo> classifiers, ExtractRules extract, Map<String, String> natives, List<CompatibilityRule> rules, List<String> checksums) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.artifact = artifact;
|
this.artifact = artifact;
|
||||||
|
@ -72,14 +72,14 @@ public class DefaultLauncher extends Launcher {
|
|||||||
case HIGH:
|
case HIGH:
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||||
// res.add("cmd", "/C", "start", "unused title", "/B", "/high");
|
// res.add("cmd", "/C", "start", "unused title", "/B", "/high");
|
||||||
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
res.add("nice", "-n", "-5");
|
res.add("nice", "-n", "-5");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ABOVE_NORMAL:
|
case ABOVE_NORMAL:
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||||
// res.add("cmd", "/C", "start", "unused title", "/B", "/abovenormal");
|
// res.add("cmd", "/C", "start", "unused title", "/B", "/abovenormal");
|
||||||
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
res.add("nice", "-n", "-1");
|
res.add("nice", "-n", "-1");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -89,14 +89,14 @@ public class DefaultLauncher extends Launcher {
|
|||||||
case BELOW_NORMAL:
|
case BELOW_NORMAL:
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||||
// res.add("cmd", "/C", "start", "unused title", "/B", "/belownormal");
|
// res.add("cmd", "/C", "start", "unused title", "/B", "/belownormal");
|
||||||
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
res.add("nice", "-n", "1");
|
res.add("nice", "-n", "1");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LOW:
|
case LOW:
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||||
// res.add("cmd", "/C", "start", "unused title", "/B", "/low");
|
// res.add("cmd", "/C", "start", "unused title", "/B", "/low");
|
||||||
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
res.add("nice", "-n", "5");
|
res.add("nice", "-n", "5");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -159,7 +159,7 @@ public class DefaultLauncher extends Launcher {
|
|||||||
|
|
||||||
res.addDefault("-Dminecraft.client.jar=", repository.getVersionJar(version).toString());
|
res.addDefault("-Dminecraft.client.jar=", repository.getVersionJar(version).toString());
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
res.addDefault("-Xdock:name=", "Minecraft " + version.getId());
|
res.addDefault("-Xdock:name=", "Minecraft " + version.getId());
|
||||||
repository.getAssetObject(version.getId(), version.getAssetIndex().getId(), "icons/minecraft.icns")
|
repository.getAssetObject(version.getId(), version.getAssetIndex().getId(), "icons/minecraft.icns")
|
||||||
.ifPresent(minecraftIcns -> {
|
.ifPresent(minecraftIcns -> {
|
||||||
@ -265,7 +265,7 @@ public class DefaultLauncher extends Launcher {
|
|||||||
// Here is a workaround for this issue: https://github.com/HMCL-dev/HMCL/issues/1141.
|
// Here is a workaround for this issue: https://github.com/HMCL-dev/HMCL/issues/1141.
|
||||||
String nativeFolderPath = nativeFolder.getAbsolutePath();
|
String nativeFolderPath = nativeFolder.getAbsolutePath();
|
||||||
Path tempNativeFolder = null;
|
Path tempNativeFolder = null;
|
||||||
if ((OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
if ((OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
&& !StringUtils.isASCII(nativeFolderPath)
|
&& !StringUtils.isASCII(nativeFolderPath)
|
||||||
&& gameVersion.isPresent() && GameVersionNumber.compare(gameVersion.get(), "1.19") < 0) {
|
&& gameVersion.isPresent() && GameVersionNumber.compare(gameVersion.get(), "1.19") < 0) {
|
||||||
tempNativeFolder = Paths.get("/", "tmp", "hmcl-natives-" + UUID.randomUUID());
|
tempNativeFolder = Paths.get("/", "tmp", "hmcl-natives-" + UUID.randomUUID());
|
||||||
|
@ -201,7 +201,7 @@ public enum Architecture {
|
|||||||
sysArch = parseArchName(processorIdentifier.substring(0, idx));
|
sysArch = parseArchName(processorIdentifier.substring(0, idx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) {
|
||||||
if (CURRENT_ARCH == X86_64) {
|
if (CURRENT_ARCH == X86_64) {
|
||||||
try {
|
try {
|
||||||
Process process = Runtime.getRuntime().exec(new String[]{"/usr/sbin/sysctl", "-n", "sysctl.proc_translated"});
|
Process process = Runtime.getRuntime().exec(new String[]{"/usr/sbin/sysctl", "-n", "sysctl.proc_translated"});
|
||||||
|
@ -107,7 +107,7 @@ public final class ManagedProcess {
|
|||||||
// However, this method is supplied since Java 9.
|
// However, this method is supplied since Java 9.
|
||||||
// So, there is no ways to get the pid.
|
// So, there is no ways to get the pid.
|
||||||
throw new UnsupportedOperationException("Cannot get the pid of a Process on Java 8 on Windows.");
|
throw new UnsupportedOperationException("Cannot get the pid of a Process on Java 8 on Windows.");
|
||||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX || OperatingSystem.CURRENT_OS.isLinuxOrBSD()) {
|
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS || OperatingSystem.CURRENT_OS.isLinuxOrBSD()) {
|
||||||
// On Linux or Mac, we can get field UnixProcess.pid field to get the pid.
|
// On Linux or Mac, we can get field UnixProcess.pid field to get the pid.
|
||||||
// All the Java version is accepted.
|
// All the Java version is accepted.
|
||||||
// See https://github.com/openjdk/jdk/blob/jdk8-b120/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux
|
// See https://github.com/openjdk/jdk/blob/jdk8-b120/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux
|
||||||
@ -116,7 +116,7 @@ public final class ManagedProcess {
|
|||||||
pidField.setAccessible(true);
|
pidField.setAccessible(true);
|
||||||
return pidField.getInt(process);
|
return pidField.getInt(process);
|
||||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
throw new UnsupportedOperationException("Cannot get the pid of a Process on Java 8 on OSX / Linux.", e);
|
throw new UnsupportedOperationException("Cannot get the pid of a Process on Java 8 on macOS/Linux.", e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Unknown Operating System, no fallback available.
|
// Unknown Operating System, no fallback available.
|
||||||
|
@ -49,28 +49,39 @@ public enum OperatingSystem {
|
|||||||
*/
|
*/
|
||||||
LINUX("linux"),
|
LINUX("linux"),
|
||||||
/**
|
/**
|
||||||
* Mac OS X.
|
* macOS.
|
||||||
*/
|
*/
|
||||||
OSX("osx"),
|
MACOS("macos", "osx"),
|
||||||
/**
|
/**
|
||||||
* FreeBSD.
|
* FreeBSD.
|
||||||
*/
|
*/
|
||||||
FREEBSD("freebsd"),
|
FREEBSD("freebsd", "linux"),
|
||||||
/**
|
/**
|
||||||
* Unknown operating system.
|
* Unknown operating system.
|
||||||
*/
|
*/
|
||||||
UNKNOWN("universal");
|
UNKNOWN("universal");
|
||||||
|
|
||||||
private final String checkedName;
|
private final String checkedName;
|
||||||
|
private final String mojangName;
|
||||||
|
|
||||||
OperatingSystem(String checkedName) {
|
OperatingSystem(String checkedName) {
|
||||||
this.checkedName = checkedName;
|
this.checkedName = checkedName;
|
||||||
|
this.mojangName = checkedName;
|
||||||
|
}
|
||||||
|
|
||||||
|
OperatingSystem(String checkedName, String mojangName) {
|
||||||
|
this.checkedName = checkedName;
|
||||||
|
this.mojangName = mojangName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCheckedName() {
|
public String getCheckedName() {
|
||||||
return checkedName;
|
return checkedName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMojangName() {
|
||||||
|
return mojangName;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isLinuxOrBSD() {
|
public boolean isLinuxOrBSD() {
|
||||||
return this == LINUX || this == FREEBSD;
|
return this == LINUX || this == FREEBSD;
|
||||||
}
|
}
|
||||||
@ -276,7 +287,7 @@ public enum OperatingSystem {
|
|||||||
name = name.trim().toLowerCase(Locale.ROOT);
|
name = name.trim().toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
if (name.contains("mac") || name.contains("darwin") || name.contains("osx"))
|
if (name.contains("mac") || name.contains("darwin") || name.contains("osx"))
|
||||||
return OSX;
|
return MACOS;
|
||||||
else if (name.contains("win"))
|
else if (name.contains("win"))
|
||||||
return WINDOWS;
|
return WINDOWS;
|
||||||
else if (name.contains("solaris") || name.contains("linux") || name.contains("unix") || name.contains("sunos"))
|
else if (name.contains("solaris") || name.contains("linux") || name.contains("unix") || name.contains("sunos"))
|
||||||
@ -300,7 +311,7 @@ public enum OperatingSystem {
|
|||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
String appdata = System.getenv("APPDATA");
|
String appdata = System.getenv("APPDATA");
|
||||||
return Paths.get(appdata == null ? home : appdata, "." + folder).toAbsolutePath();
|
return Paths.get(appdata == null ? home : appdata, "." + folder).toAbsolutePath();
|
||||||
case OSX:
|
case MACOS:
|
||||||
return Paths.get(home, "Library", "Application Support", folder).toAbsolutePath();
|
return Paths.get(home, "Library", "Application Support", folder).toAbsolutePath();
|
||||||
default:
|
default:
|
||||||
return Paths.get(home, folder).toAbsolutePath();
|
return Paths.get(home, folder).toAbsolutePath();
|
||||||
|
@ -12,14 +12,14 @@ public final class Platform {
|
|||||||
public static final Platform LINUX_X86_64 = new Platform(OperatingSystem.LINUX, Architecture.X86_64);
|
public static final Platform LINUX_X86_64 = new Platform(OperatingSystem.LINUX, Architecture.X86_64);
|
||||||
public static final Platform LINUX_ARM64 = new Platform(OperatingSystem.LINUX, Architecture.ARM64);
|
public static final Platform LINUX_ARM64 = new Platform(OperatingSystem.LINUX, Architecture.ARM64);
|
||||||
|
|
||||||
public static final Platform OSX_X86_64 = new Platform(OperatingSystem.OSX, Architecture.X86_64);
|
public static final Platform MACOS_X86_64 = new Platform(OperatingSystem.MACOS, Architecture.X86_64);
|
||||||
public static final Platform OSX_ARM64 = new Platform(OperatingSystem.OSX, Architecture.ARM64);
|
public static final Platform MACOS_ARM64 = new Platform(OperatingSystem.MACOS, Architecture.ARM64);
|
||||||
|
|
||||||
public static final Platform CURRENT_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.CURRENT_ARCH);
|
public static final Platform CURRENT_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.CURRENT_ARCH);
|
||||||
public static final Platform SYSTEM_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.SYSTEM_ARCH);
|
public static final Platform SYSTEM_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.SYSTEM_ARCH);
|
||||||
|
|
||||||
public static boolean isCompatibleWithX86Java() {
|
public static boolean isCompatibleWithX86Java() {
|
||||||
return Architecture.SYSTEM_ARCH.isX86() || SYSTEM_PLATFORM == OSX_ARM64 || SYSTEM_PLATFORM == WINDOWS_ARM64;
|
return Architecture.SYSTEM_ARCH.isX86() || SYSTEM_PLATFORM == MACOS_ARM64 || SYSTEM_PLATFORM == WINDOWS_ARM64;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final OperatingSystem os;
|
private final OperatingSystem os;
|
||||||
@ -43,8 +43,8 @@ public final class Platform {
|
|||||||
switch (os) {
|
switch (os) {
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
return WINDOWS_X86_64;
|
return WINDOWS_X86_64;
|
||||||
case OSX:
|
case MACOS:
|
||||||
return OSX_X86_64;
|
return MACOS_X86_64;
|
||||||
case LINUX:
|
case LINUX:
|
||||||
return LINUX_X86_64;
|
return LINUX_X86_64;
|
||||||
}
|
}
|
||||||
@ -52,8 +52,8 @@ public final class Platform {
|
|||||||
switch (os) {
|
switch (os) {
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
return WINDOWS_ARM64;
|
return WINDOWS_ARM64;
|
||||||
case OSX:
|
case MACOS:
|
||||||
return OSX_ARM64;
|
return MACOS_ARM64;
|
||||||
case LINUX:
|
case LINUX:
|
||||||
return LINUX_ARM64;
|
return LINUX_ARM64;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public final class SystemInfo {
|
|||||||
DETECTOR = new WindowsHardwareDetector();
|
DETECTOR = new WindowsHardwareDetector();
|
||||||
else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX)
|
else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX)
|
||||||
DETECTOR = new LinuxHardwareDetector();
|
DETECTOR = new LinuxHardwareDetector();
|
||||||
else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX)
|
else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
||||||
DETECTOR = new MacOSHardwareDetector();
|
DETECTOR = new MacOSHardwareDetector();
|
||||||
else
|
else
|
||||||
DETECTOR = new HardwareDetector();
|
DETECTOR = new HardwareDetector();
|
||||||
|
@ -44,7 +44,7 @@ public final class MacOSHardwareDetector extends HardwareDetector {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable CentralProcessor detectCentralProcessor() {
|
public @Nullable CentralProcessor detectCentralProcessor() {
|
||||||
if (OperatingSystem.CURRENT_OS != OperatingSystem.OSX)
|
if (OperatingSystem.CURRENT_OS != OperatingSystem.MACOS)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -97,7 +97,7 @@ public final class MacOSHardwareDetector extends HardwareDetector {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<GraphicsCard> detectGraphicsCards() {
|
public List<GraphicsCard> detectGraphicsCards() {
|
||||||
if (OperatingSystem.CURRENT_OS != OperatingSystem.OSX)
|
if (OperatingSystem.CURRENT_OS != OperatingSystem.MACOS)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
String json = null;
|
String json = null;
|
||||||
|
@ -23,8 +23,8 @@ val jfxPlatforms = listOf(
|
|||||||
Platform("windows-x86", "win-x86", version = oldJfxVersion),
|
Platform("windows-x86", "win-x86", version = oldJfxVersion),
|
||||||
Platform("windows-x86_64", "win"),
|
Platform("windows-x86_64", "win"),
|
||||||
Platform("windows-arm64", "win", groupId = "org.glavo.hmcl.openjfx", version = "18.0.2+1-arm64"),
|
Platform("windows-arm64", "win", groupId = "org.glavo.hmcl.openjfx", version = "18.0.2+1-arm64"),
|
||||||
Platform("osx-x86_64", "mac", version = oldJfxVersion),
|
Platform("macos-x86_64", "mac", version = oldJfxVersion),
|
||||||
Platform("osx-arm64", "mac-aarch64", version = oldJfxVersion),
|
Platform("macos-arm64", "mac-aarch64", version = oldJfxVersion),
|
||||||
Platform("linux-x86_64", "linux"),
|
Platform("linux-x86_64", "linux"),
|
||||||
Platform("linux-arm32", "linux-arm32-monocle", version = oldJfxVersion),
|
Platform("linux-arm32", "linux-arm32-monocle", version = oldJfxVersion),
|
||||||
Platform("linux-arm64", "linux-aarch64", version = oldJfxVersion),
|
Platform("linux-arm64", "linux-aarch64", version = oldJfxVersion),
|
||||||
@ -46,7 +46,7 @@ if (!jfxInClasspath && JavaVersion.current() >= JavaVersion.VERSION_11) {
|
|||||||
val os = System.getProperty("os.name").lowercase().let { osName ->
|
val os = System.getProperty("os.name").lowercase().let { osName ->
|
||||||
when {
|
when {
|
||||||
osName.contains("win") -> "windows"
|
osName.contains("win") -> "windows"
|
||||||
osName.contains("mac") -> "osx"
|
osName.contains("mac") -> "macos"
|
||||||
osName.contains("linux") || osName.contains("unix") -> "linux"
|
osName.contains("linux") || osName.contains("unix") -> "linux"
|
||||||
osName.contains("freebsd") -> "freebsd"
|
osName.contains("freebsd") -> "freebsd"
|
||||||
else -> null
|
else -> null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user