From 48e3f79965caeb192f5eb181ab6b30728392cf05 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 20 May 2025 19:34:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=20OS=20X=20=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E4=B8=BA=20macOS=20(#3878)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jackhuang/hmcl/Launcher.java | 4 +-- .../main/java/org/jackhuang/hmcl/Main.java | 2 +- .../hmcl/java/HMCLJavaRepository.java | 35 ++++++++++++------- .../org/jackhuang/hmcl/java/JavaManager.java | 20 +++++------ .../org/jackhuang/hmcl/ui/Controllers.java | 4 +-- .../java/org/jackhuang/hmcl/ui/FXUtils.java | 8 ++--- .../jackhuang/hmcl/util/NativePatcher.java | 4 +-- HMCL/src/main/resources/assets/HMCLauncher.sh | 4 +-- .../resources/assets/lang/I18N.properties | 2 +- .../resources/assets/lang/I18N_es.properties | 2 +- .../resources/assets/lang/I18N_ru.properties | 2 +- .../resources/assets/lang/I18N_zh.properties | 2 +- .../assets/lang/I18N_zh_CN.properties | 2 +- HMCL/src/main/resources/assets/natives.json | 2 +- .../assets/openjfx-dependencies.json | 4 +-- .../java/disco/DiscoFetchJavaListTask.java | 13 ++----- .../java/disco/DiscoJavaDistribution.java | 12 +++---- .../jackhuang/hmcl/game/GameJavaVersion.java | 4 +-- .../hmcl/game/JavaVersionConstraint.java | 2 +- .../java/org/jackhuang/hmcl/game/Library.java | 8 ++--- .../jackhuang/hmcl/game/OSRestriction.java | 26 +++++++++----- .../hmcl/game/tlauncher/TLauncherLibrary.java | 5 ++- .../hmcl/launch/DefaultLauncher.java | 12 +++---- .../hmcl/util/platform/Architecture.java | 2 +- .../hmcl/util/platform/ManagedProcess.java | 4 +-- .../hmcl/util/platform/OperatingSystem.java | 21 ++++++++--- .../hmcl/util/platform/Platform.java | 14 ++++---- .../hmcl/util/platform/SystemInfo.java | 2 +- .../platform/macos/MacOSHardwareDetector.java | 4 +-- javafx.gradle.kts | 6 ++-- 30 files changed, 126 insertions(+), 106 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index f33fcaf74..3b77a208e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -90,7 +90,7 @@ public final class Launcher extends Application { } // https://lapcatsoftware.com/articles/app-translocation.html - if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX + if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && ConfigHolder.isNewlyCreated() && System.getProperty("user.dir").startsWith("/private/var/folders/")) { 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("/dev/shm/") || configPath.contains("/Trash/"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) { return configPath.startsWith("/var/folders/") || configPath.startsWith("/private/var/folders/") || configPath.startsWith("/tmp/") diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Main.java b/HMCL/src/main/java/org/jackhuang/hmcl/Main.java index 2a05c7fce..0a6611ef9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Main.java @@ -67,7 +67,7 @@ public final class Main { // This environment check will take ~300ms thread(Main::fixLetsEncrypt, "CA Certificate Check", true); - if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) + if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) initIcon(); checkJavaFX(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java b/HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java index 75d8d3f89..473f8330e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java @@ -83,7 +83,7 @@ public final class HMCLJavaRepository implements JavaRepository { try { return JavaManager.getExecutable(javaDir).toRealPath(); } catch (IOException ignored) { - if (platform.getOperatingSystem() == OperatingSystem.OSX) { + if (platform.getOperatingSystem() == OperatingSystem.MACOS) { try { return JavaManager.getMacExecutable(javaDir).toRealPath(); } catch (IOException ignored1) { @@ -98,14 +98,8 @@ public final class HMCLJavaRepository implements JavaRepository { return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent()); } - @Override - public Collection getAllJava(Platform platform) { - Path root = getPlatformRoot(platform); - if (!Files.isDirectory(root)) - return Collections.emptyList(); - - ArrayList list = new ArrayList<>(); - try (DirectoryStream stream = Files.newDirectoryStream(root)) { + private static void getAllJava(List list, Platform platform, Path platformRoot, boolean isManaged) { + try (DirectoryStream stream = Files.newDirectoryStream(platformRoot)) { for (Path file : stream) { try { String name = file.getFileName().toString(); @@ -115,7 +109,7 @@ public final class HMCLJavaRepository implements JavaRepository { try { executable = JavaManager.getExecutable(javaDir).toRealPath(); } catch (IOException e) { - if (platform.getOperatingSystem() == OperatingSystem.OSX) + if (platform.getOperatingSystem() == OperatingSystem.MACOS) executable = JavaManager.getMacExecutable(javaDir).toRealPath(); else throw e; @@ -127,7 +121,7 @@ public final class HMCLJavaRepository implements JavaRepository { 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) { @@ -137,6 +131,23 @@ public final class HMCLJavaRepository implements JavaRepository { } catch (IOException ignored) { } + } + + @Override + public Collection getAllJava(Platform platform) { + Path platformRoot = getPlatformRoot(platform); + if (!Files.isDirectory(platformRoot)) + return Collections.emptyList(); + + ArrayList 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; } @@ -149,7 +160,7 @@ public final class HMCLJavaRepository implements JavaRepository { try { executable = JavaManager.getExecutable(javaDir).toRealPath(); } catch (IOException e) { - if (platform.getOperatingSystem() == OperatingSystem.OSX) + if (platform.getOperatingSystem() == OperatingSystem.MACOS) executable = JavaManager.getMacExecutable(javaDir).toRealPath(); else throw e; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java index 375949d2b..553b4b051 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java @@ -75,7 +75,7 @@ public final class JavaManager { } else if (Architecture.SYSTEM_ARCH == Architecture.X86_64) { return "linux"; } - } else if (platform.getOperatingSystem() == OperatingSystem.OSX) { + } else if (platform.getOperatingSystem() == OperatingSystem.MACOS) { if (Architecture.SYSTEM_ARCH == Architecture.X86_64) { return "mac-os"; } else if (Architecture.SYSTEM_ARCH == Architecture.ARM64) { @@ -113,7 +113,7 @@ public final class JavaManager { if (Architecture.SYSTEM_ARCH == Architecture.X86_64) return architecture == Architecture.X86; break; - case OSX: + case MACOS: if (Architecture.SYSTEM_ARCH == Architecture.ARM64) return architecture == Architecture.X86_64; break; @@ -279,7 +279,7 @@ public final class JavaManager { LibraryAnalyzer analyzer = version != null ? LibraryAnalyzer.analyze(version, gameVersion != null ? gameVersion.toString() : null) : null; 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); GameJavaVersion suggestedJavaVersion = @@ -349,9 +349,9 @@ public final class JavaManager { searchAllJavaInRepository(javaRuntimes, Platform.WINDOWS_X86); } break; - case OSX: + case MACOS: if (Architecture.SYSTEM_ARCH == Architecture.ARM64) - searchAllJavaInRepository(javaRuntimes, Platform.OSX_X86_64); + searchAllJavaInRepository(javaRuntimes, Platform.MACOS_X86_64); break; } @@ -375,7 +375,7 @@ public final class JavaManager { searchAllJavaInDirectory(javaRuntimes, Paths.get("/usr/lib64/jvm")); // General locations searchAllJavaInDirectory(javaRuntimes, Paths.get(System.getProperty("user.home"), "/.sdkman/candidates/java")); // SDKMAN! break; - case OSX: + case MACOS: searchJavaInMacJavaVirtualMachines(javaRuntimes, Paths.get("/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")); @@ -405,7 +405,7 @@ public final class JavaManager { .ifPresent(it -> searchAllOfficialJava(javaRuntimes, it, false)); } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.SYSTEM_ARCH == Architecture.X86_64) { 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, 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"); if (Files.exists(macPath)) { tryAddJavaHome(javaRuntimes, macPath); @@ -587,8 +587,8 @@ public final class JavaManager { } searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.WINDOWS_X86), verify); } - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX && Architecture.CURRENT_ARCH == Architecture.ARM64) { - searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.OSX_X86_64), verify); + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && Architecture.CURRENT_ARCH == Architecture.ARM64) { + searchAllOfficialJava(javaRuntimes, directory, getMojangJavaPlatform(Platform.MACOS_X86_64), verify); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index 39850dee9..308d7ab6b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -293,8 +293,8 @@ public final class Controllers { if (!Architecture.SYSTEM_ARCH.isX86() && globalConfig().getPlatformPromptVersion() < 1) { Runnable continueAction = () -> globalConfig().setPlatformPromptVersion(1); - if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX && Architecture.SYSTEM_ARCH == Architecture.ARM64) { - Controllers.dialog(i18n("fatal.unsupported_platform.osx_arm64"), null, MessageType.INFO, continueAction); + if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && Architecture.SYSTEM_ARCH == Architecture.ARM64) { + Controllers.dialog(i18n("fatal.unsupported_platform.macos_arm64"), null, MessageType.INFO, continueAction); } else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS && Architecture.SYSTEM_ARCH == Architecture.ARM64) { Controllers.dialog(i18n("fatal.unsupported_platform.windows_arm64"), null, MessageType.INFO, continueAction); } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index 1190c4774..b57959142 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -379,7 +379,7 @@ public final class FXUtils { String openCommand; if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) openCommand = "explorer.exe"; - else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) + else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) openCommand = "/usr/bin/open"; else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && new File("/usr/bin/xdg-open").exists()) openCommand = "/usr/bin/xdg-open"; @@ -416,7 +416,7 @@ public final class FXUtils { String[] openCommands; if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) 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}; else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && SystemUtils.which("dbus-send") != null) openCommands = new String[]{ @@ -498,7 +498,7 @@ public final class FXUtils { try { java.awt.Desktop.getDesktop().browse(new URI(link)); } catch (Throwable e) { - if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) + if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) try { Runtime.getRuntime().exec(new String[]{"/usr/bin/open", link}); } catch (IOException ex) { @@ -759,7 +759,7 @@ public final class FXUtils { String icon; if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { 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"; } else { icon = "/assets/img/icon@4x.png"; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java index 211b7e274..4d33d52fd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java @@ -116,10 +116,10 @@ public final class NativePatcher { if (settings.isNotPatchNatives()) 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; - if (arch == Architecture.ARM64 && (os == OperatingSystem.OSX || os == OperatingSystem.WINDOWS) + if (arch == Architecture.ARM64 && (os == OperatingSystem.MACOS || os == OperatingSystem.WINDOWS) && gameVersionNumber != null && gameVersionNumber.compareTo("1.19") >= 0) return version; diff --git a/HMCL/src/main/resources/assets/HMCLauncher.sh b/HMCL/src/main/resources/assets/HMCLauncher.sh index 5d490de80..a40215818 100644 --- a/HMCL/src/main/resources/assets/HMCLauncher.sh +++ b/HMCL/src/main/resources/assets/HMCLauncher.sh @@ -14,7 +14,7 @@ case "$OSTYPE" in linux*) _HMCL_OS="linux";; darwin*) - _HMCL_OS="osx";; + _HMCL_OS="macos";; freebsd*) _HMCL_OS="freebsd";; 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) _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" ;; esac diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 99346cbd9..4f6781ed8 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -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. 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. -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. 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\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 44c70c11a..d3e2afa3c 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -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. 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. -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. 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\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 40bc8dc8f..bae64662f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -403,7 +403,7 @@ fatal.unsupported_platform=Minecraft еще не полностью поддер Если вы не можете запустить Minecraft 1.17 и более поздние версии, попробуйте переключить «Рендерер» на «Программный» в разделе «Глобальные настройки / Раздельные настройки для сборки → Расширенные настройки», чтобы использовать рендеринг процессора для лучшей совместимости. fatal.unsupported_platform.loongarch=Лаунчер обеспечил поддержку платформы Loongson.\n\ Если у вас возникнут проблемы во время игры, вы можете обратиться за помощью на сайт 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 может обеспечить лучшую совместимость. fatal.unsupported_platform.windows_arm64=Лаунчер обеспечил нативную поддержку платформы Windows на архитектуре Arm. Если у вам возникли проблемы во время игры, попробуйте запустить игру с Java на базе архитектуры x86.\n\ \n\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 2cf1c8b8b..5d707b562 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -381,7 +381,7 @@ fatal.samba=如果您正在透過 Samba 共亯的目錄中開啟 Hello Minecraft fatal.illegal_char=由於您的使用者目錄路徑中存在無效字元『=』,您將無法使用外部登入帳戶以及離線登入更換外觀功能。 fatal.unsupported_platform=Minecraft 尚未你您的平臺提供完善支援,所以可能影響遊戲體驗或無法啟動遊戲。\n若無法啟動 Minecraft 1.17 及更高版本,可以嘗試在「(全域/實例特定) 遊戲設定 → 進階設定 → 除錯選項」中將「繪製器」切換為「軟繪製器」,以獲得更好的相容性。 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如果你正在使用高通平臺,你可能需要安裝 OpenGL 相容包後才能進行遊戲。點擊連結前往 Microsoft Store 安裝相容包。 feedback=回報 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index a12d7229a..bad0eae9a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -390,7 +390,7 @@ fatal.samba=如果你正在通过 Samba 共享的文件夹中运行 Hello Minecr fatal.illegal_char=由于你的用户文件夹路径中存在非法字符“=”,你将无法使用外置登录账户以及离线登录更换皮肤功能。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。 fatal.unsupported_platform=Minecraft 尚未对你的平台提供完善支持,所以可能影响游戏体验或无法启动游戏。\n若无法启动 Minecraft 1.17 及更高版本,可以尝试在“(全局/版本特定) 游戏设置 → 高级设置 → 调试选项”中将“渲染器”切换为“软渲染器”,以获得更好的兼容性。\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如果你正在使用 高通 平台,你可能需要安装 OpenGL 兼容包 后才能进行游戏。点击链接前往 Microsoft Store 安装兼容包。\n如遇到问题,你可以点击右上角帮助按钮进行求助。 feedback=反馈 diff --git a/HMCL/src/main/resources/assets/natives.json b/HMCL/src/main/resources/assets/natives.json index 002316a76..39a12bf93 100644 --- a/HMCL/src/main/resources/assets/natives.json +++ b/HMCL/src/main/resources/assets/natives.json @@ -4411,7 +4411,7 @@ } } }, - "osx-arm64": { + "macos-arm64": { "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3:natives": { "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", "downloads": { diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index f0f732944..063b4ada6 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -77,7 +77,7 @@ "sha1": "0bf7380823bb8c420dd41837d2c71087b8953ec1" } ], - "osx-x86_64": [ + "macos-x86_64": [ { "module": "javafx.base", "groupId": "org.openjfx", @@ -103,7 +103,7 @@ "sha1": "b7786b1b63e741c0e234829825fae5fef9d96c31" } ], - "osx-arm64": [ + "macos-arm64": [ { "module": "javafx.base", "groupId": "org.openjfx", diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java index df178fe57..78449f01f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java @@ -23,7 +23,6 @@ import org.jackhuang.hmcl.task.GetTask; import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.util.gson.JsonUtils; 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.Platform; import org.jackhuang.hmcl.util.versioning.VersionNumber; @@ -37,14 +36,6 @@ public final class DiscoFetchJavaListTask extends Task fetchPackagesTask; @@ -55,8 +46,8 @@ public final class DiscoFetchJavaListTask extends Task params = new HashMap<>(); params.put("distribution", distribution.getApiParameter()); - params.put("operating_system", getOperatingSystemName(platform.getOperatingSystem())); - params.put("architecture", getArchitectureName(platform.getArchitecture())); + params.put("operating_system", platform.getOperatingSystem().getCheckedName()); + params.put("architecture", platform.getArchitecture().getCheckedName()); params.put("archive_type", archiveType); params.put("directly_downloadable", "true"); if (platform.getOperatingSystem() == OperatingSystem.LINUX) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java index 5a9c696be..1f778a9c3 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java @@ -40,12 +40,12 @@ public enum DiscoJavaDistribution implements JavaDistribution, Validation { private final String url; private final LibrariesDownloadInfo downloads; private final ExtractRules extract; - private final Map natives; + private final Map natives; private final List rules; private final List checksums; @@ -64,7 +64,7 @@ public class Library implements Comparable, Validation { this(artifact, url, downloads, null, null, null, null, null, null); } - public Library(Artifact artifact, String url, LibrariesDownloadInfo downloads, List checksums, ExtractRules extract, Map natives, List rules, String hint, String filename) { + public Library(Artifact artifact, String url, LibrariesDownloadInfo downloads, List checksums, ExtractRules extract, Map natives, List rules, String hint, String filename) { this.artifact = artifact; this.url = url; this.downloads = downloads; @@ -94,8 +94,8 @@ public class Library implements Comparable, Validation { public String getClassifier() { if (artifact.getClassifier() == null) - if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS)) - return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Architecture.SYSTEM_ARCH.getBits().getBit()); + if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS.getMojangName())) + return natives.get(OperatingSystem.CURRENT_OS.getMojangName()).replace("${arch}", Architecture.SYSTEM_ARCH.getBits().getBit()); else return null; else diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java index f2a5ae399..ea614b721 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java @@ -29,7 +29,7 @@ import java.util.regex.Pattern; */ public final class OSRestriction { - private final OperatingSystem name; + private final String name; private final String version; private final String arch; @@ -37,21 +37,27 @@ public final class OSRestriction { this(OperatingSystem.UNKNOWN); } - public OSRestriction(OperatingSystem name) { - this(name, null); + public OSRestriction(OperatingSystem os) { + this(os, null); } - public OSRestriction(OperatingSystem name, String version) { - this(name, version, null); + public OSRestriction(OperatingSystem os, String version) { + 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.version = version; this.arch = arch; } - public OperatingSystem getName() { + public String getName() { return name; } @@ -64,8 +70,10 @@ public final class OSRestriction { } public boolean allow() { - if (name != OperatingSystem.UNKNOWN && name != OperatingSystem.CURRENT_OS - && !(name == OperatingSystem.LINUX && OperatingSystem.CURRENT_OS.isLinuxOrBSD())) + OperatingSystem os = OperatingSystem.parseOSName(name); + if (os != OperatingSystem.UNKNOWN + && os != OperatingSystem.CURRENT_OS + && !(os == OperatingSystem.LINUX && OperatingSystem.CURRENT_OS.isLinuxOrBSD())) return false; if (version != null) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/tlauncher/TLauncherLibrary.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/tlauncher/TLauncherLibrary.java index 665f7ea2b..8a6bcf429 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/tlauncher/TLauncherLibrary.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/tlauncher/TLauncherLibrary.java @@ -20,7 +20,6 @@ package org.jackhuang.hmcl.game.tlauncher; import com.google.gson.annotations.SerializedName; import org.jackhuang.hmcl.game.*; import org.jackhuang.hmcl.util.Immutable; -import org.jackhuang.hmcl.util.platform.OperatingSystem; import java.util.List; import java.util.Map; @@ -36,11 +35,11 @@ public class TLauncherLibrary { @SerializedName("classifies") // stupid typo made by TLauncher private final Map classifiers; private final ExtractRules extract; - private final Map natives; + private final Map natives; private final List rules; private final List checksums; - public TLauncherLibrary(Artifact name, String url, LibraryDownloadInfo artifact, Map classifiers, ExtractRules extract, Map natives, List rules, List checksums) { + public TLauncherLibrary(Artifact name, String url, LibraryDownloadInfo artifact, Map classifiers, ExtractRules extract, Map natives, List rules, List checksums) { this.name = name; this.url = url; this.artifact = artifact; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 7de1afe02..a54a8409e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -72,14 +72,14 @@ public class DefaultLauncher extends Launcher { case HIGH: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // 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"); } break; case ABOVE_NORMAL: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // 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"); } break; @@ -89,14 +89,14 @@ public class DefaultLauncher extends Launcher { case BELOW_NORMAL: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // 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"); } break; case LOW: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // 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"); } break; @@ -159,7 +159,7 @@ public class DefaultLauncher extends Launcher { 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()); repository.getAssetObject(version.getId(), version.getAssetIndex().getId(), "icons/minecraft.icns") .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. String nativeFolderPath = nativeFolder.getAbsolutePath(); 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) && gameVersion.isPresent() && GameVersionNumber.compare(gameVersion.get(), "1.19") < 0) { tempNativeFolder = Paths.get("/", "tmp", "hmcl-natives-" + UUID.randomUUID()); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Architecture.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Architecture.java index a60553575..018cb1f31 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Architecture.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Architecture.java @@ -201,7 +201,7 @@ public enum Architecture { 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) { try { Process process = Runtime.getRuntime().exec(new String[]{"/usr/sbin/sysctl", "-n", "sysctl.proc_translated"}); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java index 07ca5a516..e30a9c4bd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java @@ -107,7 +107,7 @@ public final class ManagedProcess { // However, this method is supplied since Java 9. // So, there is no ways to get the pid. 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. // All the Java version is accepted. // 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); return pidField.getInt(process); } 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 { // Unknown Operating System, no fallback available. diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java index 49096c2fa..918aef96e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java @@ -49,28 +49,39 @@ public enum OperatingSystem { */ LINUX("linux"), /** - * Mac OS X. + * macOS. */ - OSX("osx"), + MACOS("macos", "osx"), /** * FreeBSD. */ - FREEBSD("freebsd"), + FREEBSD("freebsd", "linux"), /** * Unknown operating system. */ UNKNOWN("universal"); private final String checkedName; + private final String mojangName; OperatingSystem(String checkedName) { this.checkedName = checkedName; + this.mojangName = checkedName; + } + + OperatingSystem(String checkedName, String mojangName) { + this.checkedName = checkedName; + this.mojangName = mojangName; } public String getCheckedName() { return checkedName; } + public String getMojangName() { + return mojangName; + } + public boolean isLinuxOrBSD() { return this == LINUX || this == FREEBSD; } @@ -276,7 +287,7 @@ public enum OperatingSystem { name = name.trim().toLowerCase(Locale.ROOT); if (name.contains("mac") || name.contains("darwin") || name.contains("osx")) - return OSX; + return MACOS; else if (name.contains("win")) return WINDOWS; else if (name.contains("solaris") || name.contains("linux") || name.contains("unix") || name.contains("sunos")) @@ -300,7 +311,7 @@ public enum OperatingSystem { case WINDOWS: String appdata = System.getenv("APPDATA"); return Paths.get(appdata == null ? home : appdata, "." + folder).toAbsolutePath(); - case OSX: + case MACOS: return Paths.get(home, "Library", "Application Support", folder).toAbsolutePath(); default: return Paths.get(home, folder).toAbsolutePath(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java index 7ad533cee..f79278c19 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java @@ -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_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 OSX_ARM64 = new Platform(OperatingSystem.OSX, Architecture.ARM64); + public static final Platform MACOS_X86_64 = new Platform(OperatingSystem.MACOS, Architecture.X86_64); + 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 SYSTEM_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.SYSTEM_ARCH); 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; @@ -43,8 +43,8 @@ public final class Platform { switch (os) { case WINDOWS: return WINDOWS_X86_64; - case OSX: - return OSX_X86_64; + case MACOS: + return MACOS_X86_64; case LINUX: return LINUX_X86_64; } @@ -52,8 +52,8 @@ public final class Platform { switch (os) { case WINDOWS: return WINDOWS_ARM64; - case OSX: - return OSX_ARM64; + case MACOS: + return MACOS_ARM64; case LINUX: return LINUX_ARM64; } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemInfo.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemInfo.java index db074f63f..127db407b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemInfo.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemInfo.java @@ -41,7 +41,7 @@ public final class SystemInfo { DETECTOR = new WindowsHardwareDetector(); else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) DETECTOR = new LinuxHardwareDetector(); - else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) + else if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS) DETECTOR = new MacOSHardwareDetector(); else DETECTOR = new HardwareDetector(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/macos/MacOSHardwareDetector.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/macos/MacOSHardwareDetector.java index 14b7cfc70..8fd8744dd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/macos/MacOSHardwareDetector.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/macos/MacOSHardwareDetector.java @@ -44,7 +44,7 @@ public final class MacOSHardwareDetector extends HardwareDetector { @Override public @Nullable CentralProcessor detectCentralProcessor() { - if (OperatingSystem.CURRENT_OS != OperatingSystem.OSX) + if (OperatingSystem.CURRENT_OS != OperatingSystem.MACOS) return null; try { @@ -97,7 +97,7 @@ public final class MacOSHardwareDetector extends HardwareDetector { @Override public List detectGraphicsCards() { - if (OperatingSystem.CURRENT_OS != OperatingSystem.OSX) + if (OperatingSystem.CURRENT_OS != OperatingSystem.MACOS) return null; String json = null; diff --git a/javafx.gradle.kts b/javafx.gradle.kts index 1cae7cc10..83f5bd4a1 100644 --- a/javafx.gradle.kts +++ b/javafx.gradle.kts @@ -23,8 +23,8 @@ val jfxPlatforms = listOf( Platform("windows-x86", "win-x86", version = oldJfxVersion), Platform("windows-x86_64", "win"), Platform("windows-arm64", "win", groupId = "org.glavo.hmcl.openjfx", version = "18.0.2+1-arm64"), - Platform("osx-x86_64", "mac", version = oldJfxVersion), - Platform("osx-arm64", "mac-aarch64", version = oldJfxVersion), + Platform("macos-x86_64", "mac", version = oldJfxVersion), + Platform("macos-arm64", "mac-aarch64", version = oldJfxVersion), Platform("linux-x86_64", "linux"), Platform("linux-arm32", "linux-arm32-monocle", 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 -> when { osName.contains("win") -> "windows" - osName.contains("mac") -> "osx" + osName.contains("mac") -> "macos" osName.contains("linux") || osName.contains("unix") -> "linux" osName.contains("freebsd") -> "freebsd" else -> null