From 6c07924d9b3a689d680389fa690accbaeb05e863 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 3 Sep 2022 16:55:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20osx-arm64=20=E5=8E=9F?= =?UTF-8?q?=E7=94=9F=E6=94=AF=E6=8C=81=20(#1689)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add 1.6~1.18.2 support for osx-arm64 * fix crash on 1.12 * Update I18N --- .../resources/assets/lang/I18N.properties | 2 +- .../resources/assets/lang/I18N_zh.properties | 2 +- .../assets/lang/I18N_zh_CN.properties | 2 +- HMCL/src/main/resources/assets/natives.json | 461 ++++++++++++++++-- .../hmcl/download/java/JavaRepository.java | 2 + .../hmcl/game/JavaVersionConstraint.java | 13 +- PLATFORM.md | 22 +- 7 files changed, 451 insertions(+), 53 deletions(-) diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index ff5f63528..a842ea981 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -364,7 +364,7 @@ fatal.unsupported_platform=Minecraft is not yet fully supported for your platfor \n\ If you can't start Minecraft 1.17 and above, you can try turning on the "Use OpenGL software renderer" option\n\ in instance settings to use CPU rendering for better compatibility. -fatal.unsupported_platform.osx_arm64=Minecraft has provided official support for Apple Silicon since 1.19.\NIf you encounter problems when playing versions lower than 1.19, please try to start the game with Java based on x86-64 architecture +fatal.unsupported_platform.osx_arm64=HMCL has provided support for Apple Silicon platform, using native ARM java to launch games to get a smoother game experience.\nIf you encounter problems in the game, starting the game with Java based on x86-64 architecture may have better compatibility. fatal.unsupported_platform.windows_arm64=HMCL has provided native support for the Windows on ARM platform. If you encounter problems when playing game, please try to start the game with Java based on x86 architecture.\n\nIf you are using the Qualcomm platform, you may need to install the OpenGL Compatibility Pack before playing games.\nClick the link to go to the Microsoft Store and install the compatibility pack. feedback=Feedback diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index fd6cc4b53..127ae3c6b 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -331,7 +331,7 @@ fatal.apply_update_failure=我們很抱歉 Hello Minecraft! Launcher 無法自 fatal.samba=如果您正在通過 Samba 共亯的資料夾中運行 HMCL,HMCL 可能無法正常工作,請嘗試更新您的 Java 或在本地資料夾內運行 HMCL。 fatal.illegal_char=您的用戶資料夾路徑中存在非法字元‘=’。HMCL 能够運行,但一些功能無法正常使用。 \n您將無法使用外置登入帳戶以及離線登入更換皮膚功能,並且在進行多人遊戲時可能存在更大的安全隱患。 fatal.unsupported_platform=Minecraft 尚未你您的平臺提供完善支持,所以可能影響遊戲體驗或無法啟動遊戲。\n若無法啟動 Minecraft 1.17 及以上版本,可以嘗試在版本設定中打開“使用 OpenGL 軟渲染器”選項,使用 CPU 渲染以獲得更好的相容性。 -fatal.unsupported_platform.osx_arm64=Minecraft 官方從 1.19 開始為 Apple Silicon 提供原生的支持。\n如果你在遊玩低於 1.19 的版本時遇到問題,請嘗試使用 x86-64 架構的 Java 啟動遊戲。 +fatal.unsupported_platform.osx_arm64=HMCL 已為 Apple Silicon 平臺提供支援,使用 ARM 原生 Java 啟動遊戲以獲得更流暢的遊戲體驗。\n如果你在遊戲中遭遇問題,使用 x86-64 架構的 Java 啟動遊戲可能有更好的相容性。 fatal.unsupported_platform.windows_arm64=HMCL 已為 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 20620fc23..e6f08ed55 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -331,7 +331,7 @@ fatal.apply_update_failure=我们很抱歉 Hello Minecraft! Launcher 无法自 fatal.samba=如果您正在通过 Samba 共享的文件夹中运行 HMCL,HMCL 可能无法正常工作,请尝试更新您的 Java 或在本地文件夹内运行 HMCL。 fatal.illegal_char=您的用户文件夹路径中存在非法字符‘=’。HMCL 能够运行,但可能某些功能无法正常使用!\n你将无法使用外置登录账户以及离线登录更换皮肤功能,并且在进行多人游戏时可能存在更大的安全隐患! fatal.unsupported_platform=Minecraft 尚未为您的平台提供完善支持,所以可能影响游戏体验或无法启动游戏。\n若无法启动 Minecraft 1.17 及以上版本,可以尝试在版本设置中打开“使用 OpenGL 软渲染器”选项,使用 CPU 渲染以获得更好的兼容性。 -fatal.unsupported_platform.osx_arm64=Minecraft 官方从 1.19 开始为 Apple Silicon 提供原生的支持。\n如果你在游玩低于 1.19 的版本时遇到问题,请尝试使用 x86-64 架构的 Java 启动游戏。 +fatal.unsupported_platform.osx_arm64=HMCL 已为 Apple Silicon 平台提供支持,使用 ARM 原生 Java 启动游戏以获得更流畅的游戏体验。\n如果你在游戏中遭遇问题,使用 x86-64 架构的 Java 启动游戏可能有更好的兼容性。 fatal.unsupported_platform.windows_arm64=HMCL 已为 Windows on Arm 平台提供原生支持。如果你在游戏中遭遇问题,请尝试使用 x86 架构的 Java 启动游戏。\n\n如果你正在使用高通平台,你可能需要安装 OpenGL 兼容包后才能进行游戏。点击链接前往 Microsoft Store 安装兼容包。 feedback=反馈 diff --git a/HMCL/src/main/resources/assets/natives.json b/HMCL/src/main/resources/assets/natives.json index d59b3a275..f8007369e 100644 --- a/HMCL/src/main/resources/assets/natives.json +++ b/HMCL/src/main/resources/assets/natives.json @@ -911,14 +911,14 @@ }, "linux-mips64el": { "org.lwjgl.lwjgl:lwjgl-platform:2.9.0:natives": { - "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-linux-mips64el/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "sha1": "8bf58259b53ccbb579127e18521200bf27dfa532", - "size": 6322541 + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2-linux-mips64el/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "sha1": "8e96ae0b3ca2b566d4aa1ef737f1a11fde34636c", + "size": 947858 } } }, @@ -932,14 +932,14 @@ } }, "org.lwjgl.lwjgl:lwjgl-platform:2.9.1:natives": { - "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-linux-mips64el/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "sha1": "8bf58259b53ccbb579127e18521200bf27dfa532", - "size": 6322541 + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2-linux-mips64el/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "sha1": "8e96ae0b3ca2b566d4aa1ef737f1a11fde34636c", + "size": 947858 } } }, @@ -953,14 +953,14 @@ } }, "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209:natives": { - "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-linux-mips64el/lwjgl2-natives-2.9.3-rc1-linux-mips64el.jar", - "sha1": "8bf58259b53ccbb579127e18521200bf27dfa532", - "size": 6322541 + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc2-linux-mips64el/lwjgl2-natives-2.9.3-rc2-linux-mips64el.jar", + "sha1": "8e96ae0b3ca2b566d4aa1ef737f1a11fde34636c", + "size": 947858 } } }, @@ -985,14 +985,14 @@ } }, "org.lwjgl:lwjgl:3.1.6:natives": { - "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc1", + "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1-linux-mips64el/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "sha1": "893f13133715507699a4781099567496e7600847", - "size": 7838829 + "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2-linux-mips64el/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "sha1": "babec61846d8feb7a60cce1c9909281b1a3e0640", + "size": 2464146 } } }, @@ -1089,14 +1089,14 @@ } }, "org.lwjgl:lwjgl:3.2.2:natives": { - "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc1", + "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1-linux-mips64el/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "sha1": "893f13133715507699a4781099567496e7600847", - "size": 7838829 + "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2-linux-mips64el/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "sha1": "babec61846d8feb7a60cce1c9909281b1a3e0640", + "size": 2464146 } } }, @@ -1182,14 +1182,14 @@ }, "org.lwjgl:lwjgl-tinyfd:3.2.2:natives": null, "org.lwjgl:lwjgl:3.3.1:natives-linux": { - "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc1", + "name": "org.glavo.hmcl:lwjgl3-natives:3.3.1-rc2", "downloads": { "classifiers": { "linux-mips64el": { - "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc1-linux-mips64el/lwjgl3-natives-3.3.1-rc1-linux-mips64el.jar", - "sha1": "893f13133715507699a4781099567496e7600847", - "size": 7838829 + "path": "org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl3-natives/3.3.1-rc2-linux-mips64el/lwjgl3-natives-3.3.1-rc2-linux-mips64el.jar", + "sha1": "babec61846d8feb7a60cce1c9909281b1a3e0640", + "size": 2464146 } } }, @@ -1994,5 +1994,404 @@ "com.mojang:text2speech:1.12.4:natives": null, "com.mojang:text2speech:1.13.9:natives-windows": null }, - "osx-arm64": {} + "osx-arm64": { + "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3:natives": { + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "downloads": { + "classifiers": { + "osx-arm64": { + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-osx-arm64/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "sha1": "042ef2024a9a4054952c496c9ebcdb83345dabe0", + "size": 500107 + } + } + }, + "extract": { + "exclude": [ + "META-INF/" + ] + }, + "natives": { + "osx": "osx-arm64" + } + }, + "org.lwjgl.lwjgl:lwjgl-platform:2.9.1:natives": { + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "downloads": { + "classifiers": { + "osx-arm64": { + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-osx-arm64/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "sha1": "042ef2024a9a4054952c496c9ebcdb83345dabe0", + "size": 500107 + } + } + }, + "extract": { + "exclude": [ + "META-INF/" + ] + }, + "natives": { + "osx": "osx-arm64" + } + }, + "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822:natives": { + "name": "org.glavo.hmcl:lwjgl2-natives:2.9.3-rc1", + "downloads": { + "classifiers": { + "osx-arm64": { + "path": "org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/lwjgl2-natives/2.9.3-rc1-osx-arm64/lwjgl2-natives-2.9.3-rc1-osx-arm64.jar", + "sha1": "042ef2024a9a4054952c496c9ebcdb83345dabe0", + "size": 500107 + } + } + }, + "extract": { + "exclude": [ + "META-INF/" + ] + }, + "natives": { + "osx": "osx-arm64" + } + }, + "org.lwjgl:lwjgl:3.1.6": { + "name": "org.lwjgl:lwjgl:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1.jar", + "sha1": "ae58664f88e18a9bb2c77b063833ca7aaec484cb", + "size": 724243 + } + } + }, + "org.lwjgl:lwjgl:3.1.6:natives": { + "name": "org.lwjgl:lwjgl:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1-natives-macos-arm64.jar", + "sha1": "71d0d5e469c9c95351eb949064497e3391616ac9", + "size": 42693 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.1.6": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1.jar", + "sha1": "a817bcf213db49f710603677457567c37d53e103", + "size": 36601 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar", + "sha1": "e577b87d8ad2ade361aaea2fcf226c660b15dee8", + "size": 103475 + } + } + }, + "org.lwjgl:lwjgl-openal:3.1.6": { + "name": "org.lwjgl:lwjgl-openal:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1.jar", + "sha1": "2623a6b8ae1dfcd880738656a9f0243d2e6840bd", + "size": 88237 + } + } + }, + "org.lwjgl:lwjgl-openal:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-openal:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1-natives-macos-arm64.jar", + "sha1": "23d55e7490b57495320f6c9e1936d78fd72c4ef8", + "size": 346125 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.1.6": { + "name": "org.lwjgl:lwjgl-opengl:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1.jar", + "sha1": "831a5533a21a5f4f81bbc51bb13e9899319b5411", + "size": 921563 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-opengl:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1-natives-macos-arm64.jar", + "sha1": "eafe34b871d966292e8db0f1f3d6b8b110d4e91d", + "size": 41665 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.1.6": { + "name": "org.glavo.hmcl.mmachina:lwjgl-glfw:3.3.1-mmachina.1", + "downloads": { + "artifact": { + "path": "org/glavo/hmcl/mmachina/lwjgl-glfw/3.3.1-mmachina.1/lwjgl-glfw-3.3.1-mmachina.1.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/mmachina/lwjgl-glfw/3.3.1-mmachina.1/lwjgl-glfw-3.3.1-mmachina.1.jar", + "sha1": "e9a101bca4fa30d26b21b526ff28e7c2d8927f1b", + "size": 130128 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-glfw:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1-natives-macos-arm64.jar", + "sha1": "cac0d3f712a3da7641fa174735a5f315de7ffe0a", + "size": 129077 + } + } + }, + "org.lwjgl:lwjgl-stb:3.1.6": { + "name": "org.lwjgl:lwjgl-stb:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1.jar", + "sha1": "b119297cf8ed01f247abe8685857f8e7fcf5980f", + "size": 112380 + } + } + }, + "org.lwjgl:lwjgl-stb:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-stb:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1-natives-macos-arm64.jar", + "sha1": "fcf073ed911752abdca5f0b00a53cfdf17ff8e8b", + "size": 178408 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.1.6": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1.jar", + "sha1": "0ff1914111ef2e3e0110ef2dabc8d8cdaad82347", + "size": 6767 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1-natives-macos-arm64.jar", + "sha1": "972ecc17bad3571e81162153077b4d47b7b9eaa9", + "size": 41380 + } + } + }, + "org.lwjgl:lwjgl:3.2.1": { + "name": "org.lwjgl:lwjgl:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1.jar", + "sha1": "ae58664f88e18a9bb2c77b063833ca7aaec484cb", + "size": 724243 + } + } + }, + "org.lwjgl:lwjgl:3.2.1:natives": { + "name": "org.lwjgl:lwjgl:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1-natives-macos-arm64.jar", + "sha1": "71d0d5e469c9c95351eb949064497e3391616ac9", + "size": 42693 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.2.1": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1.jar", + "sha1": "a817bcf213db49f710603677457567c37d53e103", + "size": 36601 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar", + "sha1": "e577b87d8ad2ade361aaea2fcf226c660b15dee8", + "size": 103475 + } + } + }, + "org.lwjgl:lwjgl-openal:3.2.1": { + "name": "org.lwjgl:lwjgl-openal:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1.jar", + "sha1": "2623a6b8ae1dfcd880738656a9f0243d2e6840bd", + "size": 88237 + } + } + }, + "org.lwjgl:lwjgl-openal:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-openal:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1-natives-macos-arm64.jar", + "sha1": "23d55e7490b57495320f6c9e1936d78fd72c4ef8", + "size": 346125 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.2.1": { + "name": "org.lwjgl:lwjgl-opengl:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1.jar", + "sha1": "831a5533a21a5f4f81bbc51bb13e9899319b5411", + "size": 921563 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-opengl:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1-natives-macos-arm64.jar", + "sha1": "eafe34b871d966292e8db0f1f3d6b8b110d4e91d", + "size": 41665 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.2.1": { + "name": "org.glavo.hmcl.mmachina:lwjgl-glfw:3.3.1-mmachina.1", + "downloads": { + "artifact": { + "path": "org/glavo/hmcl/mmachina/lwjgl-glfw/3.3.1-mmachina.1/lwjgl-glfw-3.3.1-mmachina.1.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/mmachina/lwjgl-glfw/3.3.1-mmachina.1/lwjgl-glfw-3.3.1-mmachina.1.jar", + "sha1": "e9a101bca4fa30d26b21b526ff28e7c2d8927f1b", + "size": 130128 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-glfw:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1-natives-macos-arm64.jar", + "sha1": "cac0d3f712a3da7641fa174735a5f315de7ffe0a", + "size": 129077 + } + } + }, + "org.lwjgl:lwjgl-stb:3.2.1": { + "name": "org.lwjgl:lwjgl-stb:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1.jar", + "sha1": "b119297cf8ed01f247abe8685857f8e7fcf5980f", + "size": 112380 + } + } + }, + "org.lwjgl:lwjgl-stb:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-stb:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1-natives-macos-arm64.jar", + "sha1": "fcf073ed911752abdca5f0b00a53cfdf17ff8e8b", + "size": 178408 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.2.1": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.1", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1.jar", + "sha1": "0ff1914111ef2e3e0110ef2dabc8d8cdaad82347", + "size": 6767 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.2.1:natives": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1-natives-macos-arm64.jar", + "url": "https://repo1.maven.org/maven2/org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1-natives-macos-arm64.jar", + "sha1": "972ecc17bad3571e81162153077b4d47b7b9eaa9", + "size": 41380 + } + } + }, + "ca.weblite:java-objc-bridge:1.0.0": { + "name": "org.glavo.hmcl.mmachina:java-objc-bridge:1.1.0-mmachina.1", + "downloads": { + "artifact": { + "path": "org/glavo/hmcl/mmachina/java-objc-bridge/1.1.0-mmachina.1/java-objc-bridge-1.1.0-mmachina.1.jar", + "url": "https://repo1.maven.org/maven2/org/glavo/hmcl/mmachina/java-objc-bridge/1.1.0-mmachina.1/java-objc-bridge-1.1.0-mmachina.1.jar", + "sha1": "369a83621e3c65496348491e533cb97fe5f2f37d", + "size": 91947 + } + } + }, + "ca.weblite:java-objc-bridge:1.0.0:natives": null, + "com.mojang:text2speech:1.10.3": { + "name": "com.mojang:text2speech:1.11.3", + "downloads": { + "artifact": { + "path": "com/mojang/text2speech/1.11.3/text2speech-1.11.3.jar", + "url": "https://libraries.minecraft.net/com/mojang/text2speech/1.11.3/text2speech-1.11.3.jar", + "sha1": "f378f889797edd7df8d32272c06ca80a1b6b0f58", + "size": 13164 + } + } + }, + "net.java.jinput:jinput-platform:2.0.5:natives": null, + "com.mojang:text2speech:1.10.3:natives": null, + "com.mojang:text2speech:1.11.3:natives": null, + "com.mojang:text2speech:1.12.4:natives": null + } } \ No newline at end of file diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java index e96a35688..694ee4bb8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java @@ -66,6 +66,8 @@ public final class JavaRepository { } public static Stream findJavaHomeInMinecraftRuntimeDir(Path runtimeDir) { + if (!Files.isDirectory(runtimeDir)) + return Stream.empty(); // Examples: // $HOME/Library/Application Support/minecraft/runtime/java-runtime-beta/mac-os/java-runtime-beta/jre.bundle/Contents/Home // $HOME/.minecraft/runtime/java-runtime-beta/linux/java-runtime-beta diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/JavaVersionConstraint.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/JavaVersionConstraint.java index 73405d499..521037478 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/JavaVersionConstraint.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/JavaVersionConstraint.java @@ -123,12 +123,9 @@ public enum JavaVersionConstraint { if (javaVersion == null || javaVersion.getArchitecture() != Architecture.ARM64) return false; - if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) + if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) return gameVersionNumber.compareTo(VersionNumber.asVersion("1.6")) < 0; - if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) - return gameVersionNumber.compareTo(VersionNumber.asVersion("1.19")) < 0; - return false; } @@ -245,15 +242,15 @@ public enum JavaVersionConstraint { public static JavaVersion findSuitableJavaVersion(VersionNumber gameVersion, Version version) throws InterruptedException { VersionRanges range = findSuitableJavaVersionRange(gameVersion, version); - boolean skipCheckArchitecture = Architecture.CURRENT_ARCH.isX86() - || (OperatingSystem.CURRENT_OS == OperatingSystem.OSX && gameVersion.compareTo(VersionNumber.asVersion("1.19")) >= 0) - || OperatingSystem.CURRENT_OS == OperatingSystem.LINUX; + boolean forceX86 = Architecture.SYSTEM_ARCH == Architecture.ARM64 + && (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) + && gameVersion.compareTo(VersionNumber.asVersion("1.6")) < 0; JavaVersion mandatory = null; JavaVersion suggested = null; for (JavaVersion javaVersion : JavaVersion.getJavas()) { // select the latest x86 java that this version accepts. - if (!skipCheckArchitecture && !javaVersion.getArchitecture().isX86()) + if (forceX86 && !javaVersion.getArchitecture().isX86()) continue; VersionNumber javaVersionNumber = javaVersion.getVersionNumber(); diff --git a/PLATFORM.md b/PLATFORM.md index b4598fa83..a07e44d9d 100644 --- a/PLATFORM.md +++ b/PLATFORM.md @@ -1,16 +1,16 @@ # Platform Support Status -| | Windows | Linux | Mac OS | FreeBSD | -|----------------------------|:------------------------------------|:-----------------------------------------|:--------------------------------|:--------| -| x86-64 | ✅️ | ✅️ | ✅️ | ❔ | -| x86 | ✅️ | ✅️ | / | / | -| ARM64 | 👌 (1.8+)
✅ (use x86 emulation) | 👌 | ✅ (1.19+)
✅ (use Rosetta 2) | ❔ | -| ARM32 | /️ | 👌 | / | / | -| MIPS64el | / | 👌 | / | / | -| LoongArch64 | / | 👌 (for Old World)
❔ (for New World) | / | / | -| PowerPC-64 (Little-Endian) | / | ❔ | / | / | -| S390x | / | ❔ | / | / | -| RISC-V | / | ❔ | / | / | +| | Windows | Linux | Mac OS | FreeBSD | +|----------------------------|:------------------------------------|:-----------------------------------------|:----------------------------------------------------|:--------| +| x86-64 | ✅️ | ✅️ | ✅️ | ❔ | +| x86 | ✅️ | ✅️ | / | / | +| ARM64 | 👌 (1.8+)
✅ (use x86 emulation) | 👌 | 👌 (1.6~1.18.2)
✅ (1.19+)
✅ (use Rosetta 2) | ❔ | +| ARM32 | /️ | 👌 | / | / | +| MIPS64el | / | 👌 | / | / | +| LoongArch64 | / | 👌 (for Old World)
❔ (for New World) | / | / | +| PowerPC-64 (Little-Endian) | / | ❔ | / | / | +| S390x | / | ❔ | / | / | +| RISC-V | / | ❔ | / | / | Legend: