在 M1 芯片 Mac 中使用原生 Java 優(yōu)雅地玩 Minecraft

Apple 在去年年底發(fā)布了 M1 Max 芯片,這款芯片的性能在 M1 的基礎(chǔ)上又上升了一個(gè)等級(jí),作為一名偽果粉,我果斷在第一時(shí)間入手了一臺(tái) 32G 的 M1 Max。


收到電腦之后,我當(dāng)然是裝上了世界上最屌炸天的游戲 Minecraft。但 Minecraft 目前只支持 x86_64 架構(gòu),不支持 ARM,準(zhǔn)確地說(shuō)是只支持 x86_64 架構(gòu)的 Java,因?yàn)?macOS 的 Minecraft 是通過(guò) Java 來(lái)運(yùn)行的。
這肯定不行啊,既然已經(jīng)用 M1 Max 了,我怎么能忍受通過(guò) Rosetta 轉(zhuǎn)譯來(lái)玩游戲呢,當(dāng)然是 ARM 架構(gòu)的原生 Minecraft 更高端大氣上檔次啦。
經(jīng)過(guò)我的摸索,現(xiàn)已完美解決問(wèn)題,步驟如下。
安裝 ARM 版 Java
要想運(yùn)行 Minecraft 時(shí)無(wú)需經(jīng)過(guò) Rosetta 轉(zhuǎn)譯,當(dāng)然是要使用 ARM64 版本的 Java 了。好在 Zulu 提供了 ARM64 版本的 Java,只需要進(jìn)入其下載頁(yè)面[1],依次選擇 「Java 17」-「macOS」-「ARM 64-bit」-「JDK FX」,在右側(cè)選擇 .dmg 文件下載并安裝。

安裝完成后,可以通過(guò)運(yùn)行命令 /usr/libexec/java_home -V 來(lái)查看系統(tǒng)中安裝的所有 Java 的版本。
$?/usr/libexec/java_home?-V
Matching?Java?Virtual?Machines?(3):
????17.0.1?(arm64)?"Azul?Systems,?Inc."?-?"Zulu?17.30.15"?/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
????...
/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
如果你的系統(tǒng)中有多個(gè) Java 版本,這里都會(huì)顯示出來(lái),其中 17.0.1 這一行就是之前安裝的 Zulu JDK 17。我們可以通過(guò)修改 ~/.zshrc 來(lái)設(shè)置 JAVA_HOME 環(huán)境變量,改變系統(tǒng)默認(rèn)的 Java 版本。
將下面的內(nèi)容添加到 ~/.zshrc 末尾。
#?~/.zshrc
export?JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
執(zhí)行以下命令使設(shè)置生效。
$?source?~/.zshrc
#?或者
$?.?~/.zshrc
下載 HMCL Launcher
HMCL Launcher 是一款非常流行的第三方啟動(dòng)器,支持很多自定義的功能,比如快速安裝 Fabric 和 Forge、修改運(yùn)行參數(shù)、設(shè)置 Java 版本、管理 Mod 等功能。除此之外還支持登錄正版的微軟賬號(hào)。
當(dāng)然,這些都不是最重要的,重點(diǎn)是咱不需要購(gòu)買賬號(hào)就可以玩了,簡(jiǎn)直是白嫖黨的福音。
首先到 HMCL 官方網(wǎng)站[2]或者 GitHub Releases 頁(yè)面[3]下載啟動(dòng)器,然后建立一個(gè)專門的游戲目錄(例如~/Games/Minecraft),將啟動(dòng)器放到這個(gè)目錄下。
$?mkdir?-p?~/Games/Minecraft/
$?mv?~/Downloads/HMCL-3.5.2.218.jar?~/Games/Minecraft
$?java?-jar?HMCL-3.5.2.218.jar?#?打開(kāi)HMCL
打開(kāi) HMCL Launcher,進(jìn) 版本列表 -> 安裝新游戲版本,安裝 1.17.1 版本 Minecraft,并同時(shí)安裝 Fabric。

獲取 LWJGL 庫(kù)文件
LWJGL 全稱為:LightWight Java Game Library,意為輕量級(jí) Java 游戲工具庫(kù)。包含 OpenGL 、OpenCL、OpenAL、Vulkan API 對(duì) Java 平臺(tái)的原生綁定。
由于 Apple 發(fā)布的 M1 芯片移除了 LWJGL 庫(kù)所依賴的個(gè)別 API,也未提供任何兼容方式,致使 Forge 和 Fabric 均無(wú)法正常工作,因此需要從源碼編譯最新的 LWJGL 庫(kù)。雖然已經(jīng)有人編譯好了,但版本有點(diǎn)老了,最后更新日期還停留在 2020 年,而且不支持 HMCL 啟動(dòng)器,詳情可查看 m1-multimc-hack 倉(cāng)庫(kù)[4]。
好在 Tanmay Bakshi 的 Gist 教程留言區(qū)[5]有人提供了較新的 3.3.x 版本的 LWJGL 庫(kù),經(jīng)過(guò)我的測(cè)試,可以完美運(yùn)行,我們可以直接使用他提供的庫(kù)文件。不過(guò)該網(wǎng)友提供的鏈接是 MediaFire 網(wǎng)盤,如果你無(wú)法訪問(wèn),可以通過(guò)我提供的阿里網(wǎng)盤鏈接下載,關(guān)注公眾號(hào)『云原生實(shí)驗(yàn)室』
后臺(tái)發(fā)送暗號(hào):mf,即可獲取庫(kù)文件。
將下載完成的 m1_lwjgl_330_nightly.zip 解壓,將解壓后文件夾內(nèi)的 lwjglfat.jar 放入 Minecraft 運(yùn)行目錄。
#?進(jìn)入游戲目錄
$?cd?~/Games/Minecraft
#?將?Minecraft?運(yùn)行目錄內(nèi)原有庫(kù)文件刪除(或備份)
$?rm?.minecraft/libraries/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1.jar
#?將下載的?LWJGL?庫(kù)放入?Minecraft?運(yùn)行目錄
$?mv?m1_lwjgl_330_nightly/lwjglfat.jar?.minecraft/libraries/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1.jar
#?將?m1_lwjgl_330_nightly?文件夾移到?Minecraft?運(yùn)行目錄中
$?mv?m1_lwjgl_330_nightly?~/Games/Minecraft
修改 HMCL 參數(shù)
打開(kāi)『游戲全局設(shè)置』,檢查 Java 路徑是否正確,滑動(dòng)至頁(yè)面底部,在「調(diào)試選項(xiàng)」-「本地庫(kù)路徑」中,選擇自定義庫(kù)路徑為 m1_lwjgl_330_nightly 目錄內(nèi)的 lwjglnatives 目錄(例如,本文的路徑是 ~/Games/Minecraft/m1_lwjgl_330_nightly/lwjglnatives),開(kāi)啟「不檢查游戲完整性」,同時(shí)也需要開(kāi)啟「不檢查 JVM 與游戲的兼容性」。

運(yùn)行游戲
回到啟動(dòng)器首頁(yè),點(diǎn)擊右下角的『?jiǎn)?dòng)游戲』。

可以看到 Minecraft 已經(jīng)可以正常運(yùn)行了,也能正常加載 Fabric API 和第三方 Mod。


我總共開(kāi)了 40 個(gè)模組。

經(jīng)過(guò)測(cè)試,啟動(dòng)時(shí)間在 20s 之內(nèi),游戲內(nèi)也很順暢,我用到至今還沒(méi)有出現(xiàn)過(guò)崩潰現(xiàn)象。CPU 占用 50%,內(nèi)存設(shè)置為自動(dòng)分配,實(shí)際占用 5.48G。


結(jié)語(yǔ)
Minecraft 中文名又叫《我的世界》,它提供了一個(gè)和現(xiàn)實(shí)世界物理規(guī)律高度一致的虛擬世界,你可以在這個(gè)世界里為所欲為,利用這個(gè)世界里的資源和物理規(guī)律創(chuàng)造一切。舉個(gè)例子,有人在這個(gè)世界里創(chuàng)造了計(jì)算機(jī),有人在這個(gè)世界里以 1:1 的比例還原了現(xiàn)實(shí)世界的故宮,還有人在這個(gè)世界里創(chuàng)造了一部手機(jī),然后和現(xiàn)實(shí)世界的自己視頻通話。。。我每每想到這個(gè)視頻通話的例子,心中就喊出一句臥槽,無(wú)法用語(yǔ)言來(lái)形容,自己體會(huì)。
最近元宇宙的概念非常火熱,成為了眾多國(guó)內(nèi)外科技巨頭的搶手貨,他們紛紛在各自領(lǐng)域布局未來(lái)的元宇宙計(jì)劃。Minecraft 其實(shí)就非常有可能發(fā)展為元宇宙的載體,它有著非常高的用戶基礎(chǔ),共識(shí)性強(qiáng),而且背靠微軟老爹,2020 年疫情期間,伯克利學(xué)院還在 Minecraft 中舉辦了畢業(yè)典禮,看看這陣仗,妥妥的元宇宙雛型啊。
參考資料
在 M1 Macbook 上不使用 Rosetta 優(yōu)雅地游玩 Minecraft+Forge[6] 在 M1 Mac 設(shè)備中解決 Minecraft Error 255[7]
引用鏈接
下載頁(yè)面: https://www.azul.com/downloads/zulu-community/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk-fx
[2]HMCL 官方網(wǎng)站: https://hmcl.huangyuhui.net/download
[3]GitHub Releases 頁(yè)面: https://github.com/huanghongxun/HMCL/releases
[4]m1-multimc-hack 倉(cāng)庫(kù): https://github.com/yusefnapora/m1-multimc-hack
[5]Gist 教程留言區(qū): https://gist.github.com/tanmayb123/d55b16c493326945385e815453de411a#gistcomment-3960178
[6]在 M1 Macbook 上不使用 Rosetta 優(yōu)雅地游玩 Minecraft+Forge: https://www.wannaexpresso.com/2021/02/20/m1-macbook-minecraft/
[7]在 M1 Mac 設(shè)備中解決 Minecraft Error 255: https://pwa.sspai.com/post/68830
活動(dòng)預(yù)告


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀

云原生是一種信仰???
關(guān)注公眾號(hào)
后臺(tái)回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


點(diǎn)擊?"閱讀原文"?獲取更好的閱讀體驗(yàn)!
發(fā)現(xiàn)朋友圈變“安靜”了嗎?



