Skip to main content

Mod、Forge、the history

好久没写,忘了前面的风格怎么写了,这更像是历史书,画风突变警告。

这篇文章主要参考(翻译)自 https://hub.packtpub.com/brief-history-minecraft-modding/
作者是 Aaron Mills,同时也是 Railcraft 作者。

注:由于早期缺乏多人模式和API/Loader,客户端模组和服务端模组是不一样的,今天的插件可以看做仅服务端模组。
你可以将文中的客户端模组当成今天的“模组”,把服务端模组当成今天的“插件”。

 

多年来,Minecraft 经历了几个发展阶段。有趣的是,这些阶段也对应着 Minecraft Modding 的各个“时代”。
Minecraft 的版本有几个重要的阶段:Classic、Indev、Infdev、Alpha、Beta、Full release

Classic 于 2009 年 5 月发布,开发持续到当年 9 月。Classic 版本引入了生存模式和多人游戏。在 Minecraft 的这段历史中,模组制作还处于起步阶段。一方面,服务器模组在这个阶段蓬勃发展,有几个不同的服务器模组可用。(这些模组是 Bukkit 的前身,我们将在后面介绍。)通常,这些模组的目的是为服务器管理员提供更多工具来维护他们的服务器。然而,客户端模组,即添加新内容的模组,直到 Alpha 阶段才真正开始出现。

Alpha 于 2010 年 6 月下旬发布。在 Alpha 之前,出现了 Indev 和 Infdev,但在那个时期似乎没有任何 mod,可能是因为 Indev 和 Infdev 中缺少多人游戏。Alpha 版本带回了多人游戏支持,于是客户端 mod 开始出现。最初它只是对现有内容的简单修改:添加对更高分辨率纹理的支持、新的箭矢、错误修复、指南针修改等。这些模组既简单又小巧。

不过,随着 Minecraft Coder Pack 的创建,这种情况开始发生变化,该包后来更名为 Mod Coder Pack,通常称为 MCP。(MCP 的主要作者之一,Michael “Searge” Stoyke,现在在 Mojang 工作。)MCP 的第一个版本 Alpha 1.1.2_01 是在 2010 年的某个时候发布的。
尽管很容易反编译,但 Minecraft 代码也被混淆了。混淆是指将代码中所有有意义的名称和单词替换为非人类可读的废话。计算机仍然可以很好地理解它,但人类很难。MCP 把这些随机字符又换回了人类可读的名称,使 mod 比以往任何时候都容易得多。比如如果我要写一个按钮,我可能会将相关代码命名为 button,混淆就是将方便你理解的 button 换成随机的字符,比如 aaa。

同时,出现了完全独立开发的服务器模组 hMod,它为服务器管理员提供了一些简单但绝对必要的工具。然而,hMod 遇到了麻烦,因为主要开发者失踪了。这种情况最终导致了 Bukkit 的诞生,这是一个从头开始设计的服务器模块,旨在支持“plugin”“插件”并完成 hMod 无法完成的一切。Bukkit 是由一群最终也被 Mojang 雇佣的人创建的:Nathan 'Dinnerbone' Adams、Erik 'Grum' Broes、Warren 'EvilSeph' Loo 和 Nathan 'Tahg' Gilbert。Bukkit 可能成为有史以来最受欢迎的 Minecraft mod。事实上,许多人认为它的存在是在线 Minecraft 服务器流行的主要原因。但是,在一段时间内,它仍然与客户端模组不兼容。

客户端在这时候也迎来了大发展:Risugami's ModLoader。ModLoader 模组加载器是革命性的。在 ModLoader 存在之前,如果你想使用两个 mod,如果它们修改了,则必须自己手动逐行合并代码。如果不改动 Minecraft 的源代码,就无法完成许多常见任务,例如添加新方块和新物品。ModLoader 改变了这一点,它创建了一个框架,简单的 mod 可以挂接到 ModLoader 代码中,来执行以前需要修改 Minecraft 源代码的普通任务。不过,它还是把 mod 工作带入了一个新的时代。

Minecraft Beta,许多人称之为模组的“黄金时代”,于 2010 年圣诞节前发布,并将持续到 2011 年。 Beta 见证了许多熟悉的模组的兴起,这些模组今天仍然被认可。IndustrialCraft、Buildcraft、Redpower 和 Better than Wolves 都在此期间出现。这些是为 Minecraft 添加了许多新方块和新功能的主要模组。这些模组的出现甚至重新定义了“Minecraft mod”。它们以全新的形式存在,甚至完全改变游戏玩法。但这些模组也存在缺陷,那时 Mod 的制作和使用仍然很痛苦。比如你不能同时安装 IndustrialCraft 和 Buildcraft,因为它们修改了太多相同的 Minecraft 源代码。ModLoader 只涵盖了最常见的基础编辑,几乎不涉及代码,对于这些大型 mod 来说还不够。在那时要安装模组,你需要将模组文件覆盖进 minecraft.jar,这个“略有难度”的操作难住了很多玩家。

看到他们的 mod 不能一起使用,几个主要 mod 的作者启动了一个新项目。他们称之为 Minecraft Forge。由 Redpower 的作者 Eloraam 和 Buildcraft 的作者 SpaceToad 发起,当时的很多模组都使用 Forge。Forge 是一个 ModLoader 之上的项目,本身并不包含 ModLoader,它大大扩展了基本钩子的数量,并允许很多 mod 一起工作。于是模组的“黄金时代”到来了,从 Beta 版一直延续到 Release。

Minecraft 1.0 于 2011 年 11 月发布,预示着Minecraft的 "正式 "发布。大约在同一时间,客户端改装正在发生转变。许多最著名的开发人员正在转向其他事情,包括整个 Forge 团队。在大多数情况下,就算作者离开了,社区也会接手让这些模组活下来,但有些时候则不会。例如,Redpower 在 2012 年末停止了所有开发。Eloraam、SpaceToad 和 Flowerchild 将 Forge 的统治权交给了当时相对不为人知的名字 LexManos。“黄金时代”已经结束,但取而代之的是新模组的爆炸式增长,模组变得比以往任何时候都更受欢迎。新的 Forge 团队主要由 LexManos 和 cpw 组成,他们将为模组带来许多新的创新。最终他们甚至开发了 Risugami’s ModLoader 的替代品,将其命名为 Forge Mod Loader 简称 FML,后来 FML 合并到了 Forge 中。玩家们再也不需要修改 minecraft.jar 来安装模组了。

然而,服务器模组的情况并没有那么乐观。Bukkit 是长期占据主导地位的服务器 mod,在 2014 年它遭受了致命的打击。 原始创建者和维护者之间发生了许可冲突,纠纷主要围绕着主要维护者辞职后谁“拥有”该项目。最终,贡献最多的维护者之一利用一个技术问题使 Bukkit 使用他的代码的权利失效,从而有效地扼杀了整个项目。