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

收到电脑之后,我当然是装上了世界上最屌炸天的游戏 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,只需要进入其下载页面[1],依次选择 「Java 17」-「macOS」-「ARM 64-bit」-「JDK FX」,在右侧选择 .dmg 文件下载并安装。

安装完成后,可以通过运行命令 /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 官方网站[2]或者 GitHub Releases 页面[3]下载启动器,然后建立一个专门的游戏目录(例如~/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

获取 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 仓库[4]

好在 Tanmay Bakshi 的 Gist 教程留言区[5]有人提供了较新的 3.3.x 版本的 LWJGL 库,经过我的测试,可以完美运行,我们可以直接使用他提供的库文件。不过该网友提供的链接是 MediaFire 网盘,如果你无法访问,可以通过我提供的阿里网盘链接下载,关注公众号『云原生实验室』

后台发送暗号:mf,即可获取库文件。

将下载完成的 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 与游戏的兼容性」

运行游戏

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

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

我总共开了 40 个模组。

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

结语

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

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

参考资料

  • 在 M1 Macbook 上不使用 Rosetta 优雅地游玩 Minecraft+Forge[6]

  • 在 M1 Mac 设备中解决 Minecraft Error 255[7]

引用链接

[1]

下载页面: https://www.azul.com/downloads/zulu-community/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk-fx

[2]

HMCL 官方网站: https://hmcl.huangyuhui.net/download

[3]

GitHub Releases 页面: https://github.com/huanghongxun/HMCL/releases

[4]

m1-multimc-hack 仓库: https://github.com/yusefnapora/m1-multimc-hack

[5]

Gist 教程留言区: https://gist.github.com/tanmayb123/d55b16c493326945385e815453de411a#gistcomment-3960178

[6]

在 M1 Macbook 上不使用 Rosetta 优雅地游玩 Minecraft+Forge: https://www.wannaexpresso.com/2021/02/20/m1-macbook-minecraft/

[7]

在 M1 Mac 设备中解决 Minecraft Error 255: https://pwa.sspai.com/post/68830

在 M1 芯片 Mac 中使用原生 Java 优雅地玩 Minecraft相关推荐

  1. 如何怎样在M1芯片Mac上安装PS?M1芯片安装Photoshop详细教学方法2021最新方法

    苹果公司在2020年发布了搭载AMR架构的M1芯片SOC集成处理器,因为架构的变更,相对于英特尔的处理器对很多旧版软件兼容性不是太好! 随着M1搭载M1芯片的MAC更新了最新系统,最新适配的M1的PS ...

  2. M1芯片Mac无法安装ES 6.x解决方案

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  3. rosetta软件_发布一个月后 苹果M1芯片Mac的常用软件体验怎么样了?

    国外一家网站实时统计应用支持M1芯片的情况 新浪数码 晓光 苏航 昨天,有"苹果优秀开发者"之称的微软公司,推送了其Microsoft 365新版本,这次更新的最主要变化,就是支持 ...

  4. M1芯片安装Photoshop 2021原生激活安装教程(附云盘下载)已支持M1芯片big sur系统 ARM M1处理器安装PS2021解决方案教程

    M1芯片MAC用户 收到2021年4月第二波更新 适配M1芯片MAC版的PS 2021原生JP终于来了,转眼购买M1芯片版的macbook pro已经3个多月了,之前因为这款芯片的特殊性,一直没能用上 ...

  5. arm架构安装rxtx_Parallels推新版本 M1芯片Mac能安装Win 10

    搭载苹果自研M1芯片的Mac终于在上个月发布,性能表现也着实让人惊喜,但是由于基于ARM架构,系统的兼容性一直饱受质疑.然而Mac平台知名虚拟化软件Parallels最近宣布了一个令人振奋的好消息,新 ...

  6. 【techQA】如何在Mac OS 11 Big Sur or M1芯片Mac下开启蓝牙Apt-X

    [techQ&A]如何在Mac OS 11 Big Sur or M1芯片Mac下开启蓝牙Apt-X Question Answer Question Mac下连接蓝牙耳机,音质不行啊 Ans ...

  7. 【最新】M1芯片Mac安装PS2021/2020卡在启动页解决教程下载方法

    苹果在近期更新了11.3系统,终于解决PS的权限问题,很多用户可能都看到了M1芯片Mac安装PS2020和PS2021的安装更新,并且都安装了,但是很多M1芯片用户安装后都相继的出现了打开PS 一直卡 ...

  8. M1芯片Mac 安装git

    M1芯片Mac 安装git 本文git安装是使用了mac下的包管理工具homebrew,如果你还没有安装,那真是太不应该了,作为一个开发人员,首先你要安装homebrew,因为它实在是太方便了.hom ...

  9. M1芯片Mac Homebrew 安装

    M1芯片Mac Homebrew 安装 ARM版Homebrew需要安装在/opt/homebrew路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作. 直接执行: /bin/ ...

最新文章

  1. React Native 的顶部导航栏和底部导航栏目
  2. Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit code 1问题总结及解决方案...
  3. linux启动xorg进程,Linux 黑话解释:Xorg,X11,Wayland,什么是显示服务器
  4. 数据库抽象类PDOStatement对象使用
  5. cesium事件简单全面描述
  6. 计算日期时间间隔,可计算情侣计算在一起的。精确到,天,时,分,秒(输入的日期距离现在有:819天19670小时1180221分钟70813262秒)
  7. donotage标记、MTU及MTU不匹配问题、OSPF邻居状态记录
  8. DelayedProduce分析
  9. ffmpeg代码实现自定义encoder
  10. 高清图片免费下载网站
  11. 【工具篇】---UniWebView插件的使用Unity内部打开Web网页<二>
  12. CTP程序化交易入门系列之五:现手、增仓、开平、对手盘计算
  13. PostGIS 爆管分析之找出上游阀门
  14. 关于win8.1系统的网络用一段时间就会受限的原因及解决方法
  15. 【微信小程序】发布流程及发布审核时如何提供测试账号?
  16. 全开源即时通讯(IM)系统 高仿微信
  17. 个人管理 - 第四代时间管理
  18. 银行数字化运维转型应对之道
  19. 2011年6月9日中国互联网公司市值排名
  20. get请求在ie浏览器中缓存问题

热门文章

  1. lintcode: 爬楼梯
  2. 一个分号将代码效率提升100倍
  3. 选购四级网络工程师优质辅导书的几点建议
  4. golang 比较字符串 版本号大小
  5. docker dockerfile 映射端口范围 批量映射端口
  6. easyui 去掉按钮 虚线框
  7. linux 文件批量转utf8
  8. 在Ubuntu下怎么截图
  9. java设计模式---备忘录模式
  10. java中Error与Exception有什么区别