icon

Sealos,在云桌面中运行分布式应用程序,像使用个人电脑一样使用云

icon

去看看👀

icon

扫码加入微信群,和云原生大佬们一起探讨云原生和不可描述的事情!

wechat qr code
 
今日天气
 
舔狗日记

在 M1 Macbook 中使用原生 Java 运行 Minecraft
  1. 博客/

在 M1 Macbook 中使用原生 Java 运行 Minecraft

·1830 字·4 分钟· · ·
黑科技 minecraft macOS
米开朗基杨
作者
米开朗基杨
云原生搬砖师 & Sealos 开发者布道师 & FastGPT 熟练工
Table of Contents
gptgod
FastGPT
Laf
Contact me

Apple 在去年年底发布了 M1 Max 芯片,这款芯片的性能在 M1 的基础上又上升了一个等级,作为一名伪果粉,我果断在第一时间入手了一台 32G 的 M1 Max。

图片描述: 2022-02-18-22-40-5jngPI.png

图片描述: 2022-02-18-22-41-zwaTz3.png

收到电脑之后,我当然是装上了世界上最屌炸天的游戏 Minecraft。但 Minecraft 目前只支持 x86_64 架构,不支持 ARM,准确地说是只支持 x86_64 架构的 Java,因为 macOS 的 Minecraft 是通过 Java 来运行的。

这肯定不行啊,既然已经用 M1 Max 了,我怎么能忍受通过 Rosetta 转译来玩游戏呢,当然是 ARM 架构的原生 Minecraft 更高端大气上档次啦。

经过我的摸索,现已完美解决问题,步骤如下。

安装 ARM 版 Java
#

要想运行 Minecraft 时无需经过 Rosetta 转译,当然是要使用 ARM64 版本的 Java 了。好在 Zulu 提供了 ARM64 版本的 Java,只需要进入其下载页面,依次选择 「Java 17」-「macOS」-「ARM 64-bit」-「JDK FX」,在右侧选择 .dmg 文件下载并安装。

图片描述: 2022-02-19-11-40-rkuzV0.png

安装完成后,可以通过运行命令 /usr/libexec/java_home -V 来查看系统中安装的所有 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

如果你的系统中有多个 Java 版本,这里都会显示出来,其中 17.0.1 这一行就是之前安装的 Zulu JDK 17。我们可以通过修改 ~/.zshrc 来设置 JAVA_HOME 环境变量,改变系统默认的 Java 版本。

将下面的内容添加到 ~/.zshrc 末尾。

# ~/.zshrc
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

执行以下命令使设置生效。

$ source ~/.zshrc
# 或者
$ . ~/.zshrc

下载 HMCL Launcher
#

HMCL Launcher 是一款非常流行的第三方启动器,支持很多自定义的功能,比如快速安装 Fabric 和 Forge、修改运行参数、设置 Java 版本、管理 Mod 等功能。除此之外还支持登录正版的微软账号。

当然,这些都不是最重要的,重点是咱不需要购买账号就可以玩了,简直是白嫖党的福音。

首先到 HMCL 官方网站或者 GitHub Releases 页面下载启动器,然后建立一个专门的游戏目录(例如~/Games/Minecraft),将启动器放到这个目录下。

$ mkdir -p ~/Games/Minecraft/
$ mv ~/Downloads/HMCL-3.5.2.218.jar ~/Games/Minecraft
$ java -jar HMCL-3.5.2.218.jar # 打开HMCL

打开 HMCL Launcher,进 版本列表 -> 安装新游戏版本,安装 1.17.1 版本 Minecraft,并同时安装 Fabric

图片描述: 2022-02-19-12-41-LfYYRd.png

获取 LWJGL 库文件
#

LWJGL 全称为: LightWight Java Game Library,意为轻量级 Java 游戏工具库。包含 OpenGL 、OpenCL、OpenAL、Vulkan API 对 Java 平台的原生绑定。

由于 Apple 发布的 M1 芯片移除了 LWJGL 库所依赖的个别 API,也未提供任何兼容方式,致使 Forge 和 Fabric 均无法正常工作,因此需要从源码编译最新的 LWJGL 库。虽然已经有人编译好了,但版本有点老了,最后更新日期还停留在 2020 年,而且不支持 HMCL 启动器,详情可查看 m1-multimc-hack 仓库

好在 Tanmay Bakshi 的 Gist 教程留言区有人提供了较新的 3.3.x 版本的 LWJGL 库,经过我的测试,可以完美运行,我们可以直接使用他提供的库文件。不过该网友提供的链接是 MediaFire 网盘,如果你无法访问,可以通过我提供的网盘链接下载。

将下载完成的 m1_lwjgl_330_nightly.zip 解压,将解压后文件夹内的 lwjglfat.jar 放入 Minecraft 运行目录。

# 进入游戏目录
$ cd ~/Games/Minecraft
# 将 Minecraft 运行目录内原有库文件删除(或备份)
$ rm .minecraft/libraries/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1.jar
# 将下载的 LWJGL 库放入 Minecraft 运行目录
$ 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 运行目录中
$ mv m1_lwjgl_330_nightly ~/Games/Minecraft

修改 HMCL 参数
#

打开『游戏全局设置』,检查 Java 路径是否正确,滑动至页面底部,在「调试选项」-「本地库路径」中,选择自定义库路径为 m1_lwjgl_330_nightly 目录内的 lwjglnatives 目录(例如,本文的路径是 ~/Games/Minecraft/m1_lwjgl_330_nightly/lwjglnatives),开启「不检查游戏完整性」,同时也需要开启「不检查 JVM 与游戏的兼容性」

图片描述: 2022-02-19-16-04-NlQikz.png

运行游戏
#

回到启动器首页,点击右下角的『启动游戏』。

图片描述: 2022-02-19-16-05-X0Xil1.jpg

可以看到 Minecraft 已经可以正常运行了,也能正常加载 Fabric API 和第三方 Mod。

图片描述: 2022-02-19-16-12-zZi3GM.webp

我总共开了 40 个模组。

图片描述: 2022-02-19-16-21-GMRH4I.png

经过测试,启动时间在 20s 之内,游戏内也很顺畅,我用到至今还没有出现过崩溃现象。CPU 占用 50%,内存设置为自动分配,实际占用 5.48G。

图片描述: 2022-02-19-16-25-Lr3z2d.png

图片描述: 2022-02-19-16-26-byDrxK.png

结语
#

Minecraft 中文名又叫《我的世界》,它提供了一个和现实世界物理规律高度一致的虚拟世界,你可以在这个世界里为所欲为,利用这个世界里的资源和物理规律创造一切。举个例子,有人在这个世界里创造了计算机,有人在这个世界里以 1:1 的比例还原了现实世界的故宫,还有人在这个世界里创造了一部手机,然后和现实世界的自己视频通话。。。我每每想到这个视频通话的例子,心中就喊出一句卧槽,无法用语言来形容,自己体会。

最近元宇宙的概念非常火热,成为了众多国内外科技巨头的抢手货,他们纷纷在各自领域布局未来的元宇宙计划。Minecraft 其实就非常有可能发展为元宇宙的载体,它有着非常高的用户基础,共识性强,而且背靠微软老爹,前不久疫情期间,伯克利学院还在 Minecraft 中举办了毕业典礼,看看这阵仗,妥妥的元宇宙啊。

本视频一切权利归 bilibili原作者所有。如果觉得好,请点击跳转到 bilibili 给予支持。

参考资料
#

-------他日江湖相逢 再当杯酒言欢-------

相关文章

Containerd shim 原理深入解读
··2735 字·6 分钟·
云原生 Containerd Docker Conatiners
使用 x509-certificate-exporter 监控 Kubernetes 集群组件的证书
·3495 字·7 分钟·
云原生 监控 Prometheus Kubernetes
Kubernetes 教程:在 Containerd 容器中使用 GPU
·1803 字·4 分钟·
云原生 Kubernetes Containerd
使用 font-spider 对 webfont 网页字体进行压缩
·2682 字·6 分钟·
Blog Hugo
深入理解 Kubelet 中的 PLEG is not healthy
·4001 字·8 分钟·
云原生 Kubernetes
使用 buildx 构建多平台 Docker 镜像
·3116 字·7 分钟·
云原生 Docker

公众号二维码