Skip to content

你为什么要做这个?

在 2016 年我敲下《Harbinger》的第一个字的时候,我当时的想法是让更多人了解 Forge——当时写 Mod 仅有的选项——最新的变化。 换句话说,就是「我不能再放任错误信息到处流传了,我得做点什么。」

但当到了真正开坑的时候,我发现要写的东西实在是太多了,而我的时间又不太够。《Harbinger》的目标版本也不得不追着 Minecraft 版本跑, 从最初的 1.10 一路升到了 1.12.2。这期间我甚至考虑过同时维护三个版本的内容,但最终放弃了。

《Harbinger》最终于 2019 年 3 月 8 日正式发布。其一经发布便广受好评,但也有不少批评之声。这其中之一便是「对新人极不友好」。 有人甚至觉得整个《Harbinger》读起来更像是我本人的 Mod 开发随笔,而非面向更广大开发者的教程。

有必要指出,我在《Harbinger》的开头就明确了《Harbinger》不是给那些没有足够 Java 编程语言基础的人准备的。尽管如此,这些批评之声也并非没有道理。不过,如何回应这些批评之声就是另外一回事了:我没有时间把整个《Harbinger》推翻重写,而 Minecraft 他自己还在无情地刷着版本号。好在此后社区中如雨后春笋般涌现的新教程填补了教程缺失的空白,我的任务看上去可以告一段落了。

…… 事实并非如此。随着时间的推移,我观察到了一个全新的问题。在各种论坛和网上聊天室中寻求帮助的新 Modder 们的问题仍然层出不穷。这些问题种类繁多,但都有一个共性:琐碎到放不进 Mod 开发教程里。这些问题通常都与某种使用场景密切相关,硬塞进 Mod 开发教程中只会让教程变成 API 的罗列,但这些问题往往又能在不少热门 Mod 中找到示范。

这些问题实际上是「新人缺少实战训练」的缩影。考虑到 Minecraft Mod 开发教程长期供不应求,且往往只覆盖到诸如方块、物品等基础内容,大量 Mod 开发相关的技术、经验、技巧要么靠口口相传,要么只能靠新人硬啃反编译后的 Minecraft 底层代码自行领悟。其中,前者要求新人能找到靠谱的开发者聚集地,乃至要求开发者能使用英语与其他开发者交流;后者则要求新人能在读源码的过程中自行开窍,两个解法都无法满足当下的发展需要。

「能不能通过记载一系列典型案例,通过这些案例来讲述这些在圈内广为人知的经验技巧?」我想起了数年前在安排《Harbinger》的总目录时,特意预留的第 39 和第 40 章。按照原计划,这两张内容都是预留给读者的练习题,题目则以过去热门 Mod 中的知名功能为蓝本。第 39 章偏重原创题目,并会提供参考答案,而第 40 章则偏重在新版游戏中复原旧版 Mod 中的特性,且不提供答案。第 39 章最终没能开工,而第 40 章也只潦草写了几道题目。

我还想起了在我硬盘上沉睡数年的几个老 Mod 的源码。这些 Mod 要么是我受某人委托而编写,要么是我一时兴起的随手之作。加上近年来多加载器模板的普及,我意识到这些老 Mod 其实还有用处——他们都是真实的 Mod 开发案例,可以为后来者指引方向。

社区中此前基本没有类似的尝试,但冥冥之中我有一种感觉:我没有多少时间可以留给这个让我五味杂陈的社区了。所以我翻出了 VitePress 的文档,草草起了一个架子,然后用我自行编写的 Paramita 模板把数个 Mod 迁移到了 1.19、1.20 和 1.21 等版本上。大概就这样了。

3TUSK

2024 年 6 月 25 日