一直觉得我的世界新版材质挺怪的,怪就挂在整体太过平滑了,看起来有点油腻。那种感觉就像是原本粗粝质朴的手工陶器被刷上了一层工业亮光漆,每一块石头、每一片木板都泛着不自然的光泽,连草地的绿色都变得像塑料草坪一样均匀且缺乏层次。我试图说服自己去接受这种“现代化”的审美,可每次挖下第一块泥土、放置第一根原木时,那种别扭感还是会迎面撞上来。于是我在网上翻来覆去地找那些能把材质复原到老版本画风的资源包,结果不是作者早已停更、版本停留在好几年前,就是画风东拼西凑——这个资源包的深板岩像模组,可另一个材质的又是石头的样子,怎么看怎么违和。在折腾了几分钟都无果之后,我终于下定了决心:不折腾材质包了,干脆直接去玩 1.8.9 吧。那个版本承载着我最初接触《我的世界》时几乎所有记忆,我想认认真真地回去看一眼,好好回忆一下那段已经被尘封的童年。

以前我是在那台 Win7 华硕上网本上玩的这个游戏。那台小本子的性能差到什么程度呢?加两三个工业、科技类的模组就已经卡到爆炸,连转个镜头都要等上好几秒,更别提打怪的时候突然卡住、回过神来已经被骷髅射成刺猬。就算是玩原版,跑图的时候区块加载也能明显看出是一块一块蹦出来的,末地传送门附近更是帧数直接掉到个位数。可即便如此,我当年还是在那台破电脑上搭过城堡、挖过整座山、养过一整村的村民。如今我手里这台 MacBook Air M4 性能翻了几十倍甚至上百倍,开机几乎无声,续航能撑一整天,连风扇都没有。按理说,跑个 1.8.9 简直就像用火箭运一颗花生。我满怀期待地加了两个模组——拔刀剑,还有 JEI。本来还想加暮色森林的,结果一查才发现暮色森林根本没有 1.8.9 的版本,只能作罢。不过也无所谓,有拔刀剑就够了,那是我当年最痴迷的模组,没有之一。

进游戏的时候,启动器弹出提示说缺少 OpenJDK 8,我愣了一下,随即才反应过来:老版本的 Minecraft 需要的是 Java 8,而现在我的 Mac 上装的早就是更新版本的 Java 了。以前的 Java 和现在的 Java 虽然名字一样,实际上已经分道扬镳,连安装目录都不在一块。但这又有什么难的呢?不就是下载个老版本的 OpenJDK 嘛。于是我熟练地打开命令行,敲下 brew search openjdk,打算看看 Homebrew 里有没有 OpenJDK 8。搜索结果显示还真有,我顿时松了一口气,觉得问题已经解决了一大半。毕竟 Homebrew 向来靠谱,一条 brew install 命令下去,什么依赖都能自动配好。可惜我高兴得太早了。

它显示出来的状态有点奇怪——具体什么提示我记不太清了,但大概意思是说这个包已经过时或者不可用。我盯着那几行英文看了好一会儿,猜测这应该就是停更的意思吧。我英语一直不好,看技术文档全靠连蒙带猜,遇到这种异常状态更是心里没底。停更归停更,可停更不代表不能下载啊,很多老软件虽然不再更新了,镜像地址还在,照样能装。我抱着侥幸心理试着执行安装命令,结果终端毫不客气地报错了,红字刷刷刷地铺了半屏。好吧,确实不能下载。我挠了挠头,实在想不通为什么一个版本号固定的软件包会因为停更就不能装了。朋友 DeepSeek 后来给我解释了一下,说是因为 OpenJDK 8 官方没有编译过 macOS 的 ARM 版本,也就是说,我手上这台 M4 芯片的 Mac 虽然性能炸裂,但它和普通的 OpenJDK 8 在指令集层面根本不认识对方。不是 Homebrew 不想让我装,而是压根就没有能跑在我电脑上的普通 OpenJDK 8。

但 DeepSeek 紧接着又告诉了我一个好消息:OpenJDK 其实有个发行版叫 Zulu,这个发行版专门为各种平台做了适配,包括 macOS 的 ARM 版本。Zulu 这个名字我之前从来没见过,名气上确实远不如 OpenJDK 本尊。市面上绝大多数教程提到 Java 环境配置的时候,翻来覆去就是 Oracle JDK 和 OpenJDK 两个名字,很少会有人专门提一嘴 Zulu。不过 AI 明确表示,Zulu 其实被广泛用在各种我不太了解的项目里——好像是安卓开发、企业级中间件、云原生环境之类的场景,听起来还挺高大上的。既然那些大项目都在用,那说明它稳定性和兼容性应该没什么问题。AI 最后下了结论:用就是了,别纠结。我对 Java 生态圈其实一窍不通,既然有个靠谱的方案摆在眼前,那就老老实实照着做呗。

那既然它的名字都已经不一样了,从 OpenJDK 变成了 Zulu,那运行命令会不会也变成 zulu --jar 呢?我抱着试一试的心态去问了一下 AI,结果 AI 告诉我并不是这样——Zulu 只是一个发行版,它的核心仍然是 OpenJDK,所以对外提供的命令名称还是 javajavac 这些老面孔,不会变成 zulu 什么的。我恍然大悟,原来“发行版”这个概念在软件世界里就是这么回事:内核一样,打包方式和附带工具不同而已。我以前用 Linux 那些发行版名字就变来变去,换汤不换药。于是我在 Homebrew 里找到了 zulu@8 这个包,郑重其事地敲下了安装命令。这次没有报错,终端安安静静地跑了十几秒,然后提示安装完成。我刷新了一下启动器里 Java 路径的自动检测功能,启动器愣了一小会儿,随后真的在 Zulu 的安装目录下找到了一个可用的 Java 环境。那一刻我心里的一块石头总算落了地,折腾了快一分钟的环境配置,终于尘埃落定。

进入了游戏后,那种熟悉的界面和声音扑面而来,仿佛一瞬间把我拽回了 2018 年的那个夏天。我记得那年客厅的空调总开得很足,窗户关得严严实实。虽然那时候短视频平台已经崛起了,但我依旧保留着在电脑上看爱奇艺的习惯。倒不是因为爱奇艺本身有多好用,纯粹是因为上面有一群人——木鱼、老黑、大嘴和小铃铛,他们的《我的世界》实况解说是我每天雷打不动追更的内容。还有浮空,那个总是慢悠悠讲如何搭建筑的 UP 主,他的建筑教学视频我每一期都反复看过好几遍,还有各种有趣的基岩版插件。每到暑假的下午 5 点,我就吹着空调,一边啃西瓜一边用家里的大屏幕电视看他们,看完之后不去造东西,纯粹就是单纯想看,甚至有些还忘了怎么做了。现在重新坐在这台丝般顺滑的电脑前,听着背景音乐在耳边响起来的时候,空调的凉意和屏幕的光好像从未离开过。

已经好久好久没有玩拔刀剑这个模组了,重新上手确实有点不习惯。以前那些闭着眼睛都能按出来的连招,现在连怎么拔刀都要想半天。更让我措手不及的是,当我在物品栏里按下 Shift 想要快速取出一组物品的时候,游戏画面突然猛地一转,摄像机不受控制地扭向了一个怪物所在的方向,把我吓得魂魄差点飞出去。事后我冷静下来一查才知道,这是拔刀剑模组的自动索敌功能——按下 Shift 键时模组会自动锁定最近的敌人并转过去。可问题在于,我的物品栏操作习惯从玩 Minecraft 的第一天起就是按 Shift 来拿东西的,这个矛盾几乎无可调和。每次打开背包想合成点东西,视野就突然天旋地转,怪物倒是没找到,先把自己晃晕了。可能这就是老模组的通病吧,设计的年代大家都没考虑过键位冲突这种事,也没人想到要去修。不过说到底,这反而有种时代的真实感,说明我在玩的是货真价实的、未经现代打磨过的老版本。

切完几只怪物之后,我打开背包,从那一堆杂乱的东西里慢慢取出了几个最普通的物件——工作台、床、熔炉。这三样东西恐怕是所有 Minecraft 玩家最初制造的道具了,朴素到不能再朴素。我把它们从快捷栏里挨个拿出来,认认真真地摆在了地上。工作台侧面那些深深浅浅的木板纹理,床脚那种笨拙而温暖的红色布料,熔炉顶上那一圈仿佛被烟熏过的黑色纹路——每一处材质都和我记忆中的样子严丝合缝地对上了。我就这么蹲在游戏里盯着这三样东西,盯了好几秒,眼眶突然有点发酸,喉头哽了一下。那一刻我总算是明白了,为什么小时候能在《我的世界》里一玩就是一个下午、一个暑假,甚至一整个童年。那种沉浸感一大半要归功于这种粗粝质朴的材质风格——它不追求光滑逼真,反而给想象力留下了最大的空间。剩下的一半,就是心里那份无边无际的、如今已经有点找不回来的、小孩子才有的想象力了。