我的世界模组

Minecraft模组（Minecraft mods）是指一系列由玩家制作的《Minecraft》游戏模组，借由修改游戏中的内容来得到不同的游戏体验。目前我的世界中有无数的Minecraft模组存在Cadenhead 2014, p. 367，玩家可以任意下载游玩，在基岩版中有一部分可选择付费购买。透过第三方软件能够让多个Minecraft模组同时游玩，不仅提高了游戏的可玩性，并且建立一个与官方《Minecraft》完全不同的游戏体验Van Schaik and Vledder 2015, p. 107。由于Minecraft模组社群是游戏中最活跃的社群之一，Minecraft模组被认为是《Minecraft》游戏得以成功的几大原因之一。

Minecraft模组主要盛行于Java版，基岩版（包括手机、主机）则有附加包，两者皆为原版增添额外游戏内容，并互不相容。

## 技术可行性

由于Minecraft是以Java程式语言撰写，使得程式在封装阶段时，不会直接编译成难以解析的机器语言，而是先编译成相对容易解析的Java字节码再到个用户端执行。从Minecraft发行至今，许多独立的程式设计者利用了这个特性在游戏中加了许多内容，也就是大家所称的游戏模组。

早期的Minecraft模组是直接修改存在于Minecraft.jar的Java类文件，在将修改后的档案覆盖到Minecraft.jar上，并移除确认其档案完整性的META-INF资料夹。

由于前项游戏修改方式的本性，模组互相冲突随着模组社群的增长而越来越常见。于是出现了模组载入器，它们提供修改游戏的API、注册及事件系统。如今，主流的模组载入器包含Forge、Fabric、Quilt和NeoForge。

Java版本的Minecraft模组分为两种：单人模组和服务器模组。

- 单人模组：玩家需要在游戏文件中插入或替换新文件，或安装模组载入器（例如Forge、Liteloader或Fabric等）来安装模组。
- 服务器模组：安装在服务器上，玩家只要登入服务器就能体验模组的内容，通常称为插件，建构上比单人模组容易许多。在任何情况下，要安装多个模组且能运行、不发生模组冲突、不拖慢电脑性能是需要一点技巧的，尤其是在一些较旧或是性能较弱的电脑。
- 自定义模组：这种模组主要安装在服务器上，是经商讨后服主请人定制的模组。

在Java版的Minecraft制作模组完全是可行的，因为模组程式编者可以轻易的借由反编译利用以Java写出来的Minecraft的源代码Koene 2015, Hour 1, pg. 1。

在大多数平台的基岩版中则稍有不同，因为其用C++语言编写，而不是Java。在以前，如果玩家使用的是Android系统，可用名为BlockLauncher的手机应用程序来安装模组，而iOS则必须安装一个名为mcpedeb.deb的档案。此外，如果玩家想要在iOS顺利的安装并执行模组的话可能还需要越狱。在Android和iOS的两种系统中，模组是用JavaScript编写的。而现在则可以通过资源包和行为包来方便的实现修改和添加游戏内容。

## 历史

虽然Minecraft的第一个PC版于2009年五月中旬发布，但当时还没有任何游戏模组，直到2010年中发布alpha时才开始出现游戏修改。早期只有利用伺服端来改变游戏内容或环境的伺服端模组。随着的alpha版本的发布，第一个客户端模组开始出现，但都是增加相对简单的事情，比如其他的纹理或修改游戏中的指南针。

到2010年底，新释出的模组增加的特性比以往来的更多，此时，我的世界现在正准备进入其测试开发阶段，Beta版，当时许多模组已十分流行，例如Industrial Craft2、Railcraft和BuildCraft首次向公众发布。相较于早期的模组，这些模组已经完全改变了整个游戏的玩法，而不是只有简单地调整一些细微的枝节。

2011年11月，Forge发布。Forge并没有加入新的功能也没有调整游戏中的内容，而是允许在同一个Minecraft客户端中安装并运行多个模组，又称为FML（Forge Mod Loader）。在Forge发布之前，当时流行的IndustrialCraft和BuildCraft并不能同时执行，因为他们的安装方式是取代Minecraft客户端Jar档中的Class档，由于都需要覆盖相同的Minecraft基础Java档案，因此无法同时安装，而Forge则利用了动态载入的方式，无须直接取代Jar档中的档案，使的多个模组要同时安装时无须触及其基本的程式码。

<image>

Minecraft的正式版本于2011年11月18日发布，Minecraft模组的社群也不断成长。2012年2月，Mojang聘请了Bukkit插件的开发人员开发官方的Modding API，目标是允许模组开发人员能够更简单地调整或修改Minecraft游戏内容。2015年，Mojang在社交媒体上宣布这个Modding API仍在开发中，然而，其已在三年前就宣布了要开发Modding API一事。

Minecraft模组社群对微软于2014年底收购Mojang表示担忧，Minecraft模组社群的许多人认为微软可能会终止目前Mojang默许许多Minecraft模组及相关第二创作的行为，尽管存在担忧，但微软尚未宣布对Mojang政策进行任何修改。

2015年4月，微软宣布要给提供一个Microsoft Visual Studio开发套件，为模组开发者提供了一种更简单的创作方法。同年7月，微软发布了一个新的Windows 10版本的Minecraft，并且与以往版本有很大差异，其由C++编辑完成。此消息再度引发Minecraft模组社群担忧，由于此消息可能是Java版本被逐步淘汰的一个征兆，由于C++并不像Java那样可以“Reverse Engineerable”，Java可以透过动态载入其他类别或执行档，而C++则无那么大的弹性，因此此举将严重阻碍Minecraft模组的发展。然而，Mojang开发人员Tommaso Checchi向Reddit上的粉丝保证，由于模组“太重要了”（too important），因此不会停止开发基于Java的版本。

2016年，Minecraft的1.9版更新发布，随着这次更新，Mojang承诺此次更新会大大的简化mod的创建和更新。但由于这更新破坏了先前已发布模组所使用的架构，迫使许多模组创作者要花费大量时间来更新模组作品。也因此许多模组停止开发而停在旧版本1.8甚至是1.7.10。

2017年4月，Mojang宣布将建立一个称为Minecraft市场（Minecraft Marketplace）的平台，在这个平台上，玩家将可以贩卖基岩版的用户自定义内容。虽然这个电子商店着重在冒险地图、皮肤和纹理包等非程式修改的内容，但PC World则认为此举将使基岩版更接近经典的最初之Java版本中“玩家所熟悉的可塑造的世界”。

2019年9月，Minecraft 官网修改日志宣布，自快照版本19w36a开始，会在每个发行与快照版本发布官方的混淆映射表。用意为取代第三方混淆映射表如MCP。然而，由于版权宣告的用字不明确，Forge作者仍说明会继续使用MCP的混淆表。

### 争议

我的世界模组多年来一直存在争议。其中一个争议与一个名为格雷科技的模组有关，格雷科技模组主要透过将Minecraft某些物件的制作复杂化来提升游戏难度。2013年，格雷科技模组作者注意到一些格雷科技模组中的合成方式被加入Tinkers' Construct模组中，而格雷科技模组作者为了报复因此在模组中加入“安装Tinkers' Construct后会当机”的程式码。后来两个模组的作者和解。

另一个争议与名为Bukkit的软件相关，Bukkit是一个可以在Minecraft服务器安装插件的软件，也可以视为是Minecraft的一个伺服端模组Cadenhead 2014, p. 2。由于这个项目已经多次转手开发，因此先在的开发者与过去开发过Bukkit的开发者开始争论谁是此作品的版权持有者。最终在2014年，一个名为Warren“EvilSeph”Loo的开发者尝试在游戏中的程式码加入版权，然而此一事造成了Bukkit有很长一段时间处于失修的状态。后来Mojang介入以挽救该专案。最后的版权持有者变为由Mojang持有，也因此，另一个由社群开发名为“CraftBukkit”的独立服务器，由于部分程式码基于Bukkit，因此有侵犯著作权之虞，而遭到终止，它被另一个独立服务器spigot所替代。

另一个争议发生在2017年3月，当时斯洛伐克的网络公司ESET举出了使用Minecraft mod的幌子而通过Google Play商店审查的87个特洛伊木马病毒的例子。这些木马病毒的目的大部分是积极展示广告或让玩家下载其他应用程序。这些假的Minecraft mod在2017年的前三个月已有超过一百万的下载量。

## 内容

<image>

在Minecraft游戏修改的相关创作中，又可以细分为模组、模组包、子模组及插件，其功能不尽相同，例如模组为较大的游戏修改、而插件通常指伺服端模组，客户端不需安装即可登入服务器并游玩；子模组则为某个模组的模组（模组的游戏修改或二次创作），用于改变某个模组的游戏体验，而模组包则是一系列模组的集合。

正式的Minecraft模组数量不易估计，因为其数量十分庞大，且有的只支援新版、有的只支援旧版，难以统计出一个确切的数据，但根据一些模组发布的网站可以得到大略值，例如CurseForge网站上就有超过84,000个已发布的Minecraft模组，其中也包含了多种不同的模组种类，例如改变世界生成、角色扮演类、科幻类、奇幻魔法等不同类型。

举例来说，有些模组添加了新的世界或维度，比如《Galacticraft》Van Schaik and Vledder 2015, p. 113

以及《暮色森林》模组（Twilight Forest）。部分的模组主要着重于在游戏中加入更多科技与技术的相关元素，透过添加各式各样的机器，可以帮助玩家自动生成某些游戏内材料，例如《更多实用设备》（Extra Utilities）、《BuildCraft》

和《工业时代》（IndustrialCraft）

等。此外，也有些模组有加入现代化的武器，例如《Flan's Mod》和《Tinkers Construct》等。亦有部分模组试图改变Minecraft中的自然元素，例如《Natura》、《林业模组》（Forestry）、《Biomes O' Plenty》和《Mo' Creatures》等。

然而，并非所有模组都会在游戏中加入新的元素。部分模组透过加入GUI来辅助游戏，例如小地图模组《minimap》、《Optifine》模组和JEI物品管理器（Just Enough Items）。

另外有另一种游戏修改称为模组包，是指一个包含已设定并调整好的一系列模组安装档、套件或启动器，透过多个模组之间整合以获得不同于仅安装单一模组的游戏体验Van Schaik and Vledder 2015, p. 119。模组包通常会整合一系列相同主题的模组。较知名的模组包启动器或社群包括FTB、CurseForge等。

### 我的世界附加包

Minecraft 附加包，是在基岩版透过增加新方块、生物等，或者修改游戏机制，进而增加游戏丰富性的一种功能。它是受到 Mojang 官方支援的游戏修改方式。类似于存在Java版上的模组。

使用者能在 Minecraft 市场上面取得附加内容，有些附加包是免费的，而大部分会需要Minecoin（Minecraft金币），需要在游戏内购买。

唯有登记成立公司并与 Mojang 签署协议，才能将附加包上传至 Minecraft 官方市场。

## 官方认可

起初Mojang表达的立场是不支持游戏修改，但2012年，Mojang则声称正在开发我的世界模组的知识库，并且在他们网站的帮助列表中列出了教导玩家如何安装模组并游玩模组的一系列教学影片。

Minecraft的创建者马库斯·泊松在2012年承认他最初对mods持怀疑态度，因为他担心玩家制作的自定义修改内容会威胁到他对游戏的愿景。后来选择接受是因为马库斯·泊松意识到我的世界模组是赋予我的世界游戏归属的一个重要原因（mods are “a huge reason of what Minecraft is”），部分模组作者最终甚至被Mojang聘用。

## 漏洞与病毒

### Fractureiser

<image>

Fractureiser 流行于2023年6月，是一种主要攻击Minecraft模组与插件社群，能够散布到其他jar档案的电脑病毒。散布开始于恶意使用者上传病毒到模组平台CurseForge和插件平台Craftbukkit，使用者下载后于minecraft启动载入时，感染其电脑里其他jar档案，就此逐渐散布。

其感染能力包括：

- 感染电脑上的其余jar档案。
- 偷取电脑里的微软账号，Minecraft，Discord与浏览器里的 Cookie 与 密钥。
- 替换剪贴簿上的虚拟货币地址

模组上传平台CurseForge为此病毒提供了扫描工具

### BleedingPipe

BleedingPipe 是一种允许远端任意程式码执行的程式漏洞。该漏洞源自模组作者们在游戏网络交换部分，使用了未经验证的 java 函数 ObjectInputStream，使外部攻击者能够借由传送恶意封包于伺服端上执行漏洞，并进而感染正在游玩玩家。

## 影响

### Minecraft本身

不少知名模组的内容最终并入了《Minecraft》本体。比如模组开发者Drzhark在《Mo' Creatures》模组中加入了马匹，后来Mojang请Drzhark协助将其加入了Minecraft本体。红石系统中的活塞原本也是模组中的内容，但是让许多Minecraft玩家印象深刻，因此后来也加入了游戏。

### 教育

<image>

Minecraft模组可以用于让孩子们入门编程，例如ComputerCraftEdu专案采用了2011的ComputerCraft模组进行教学。采用Minecraft模组做为教材的程式设计班还有加州大学，他们利用教导学生编写Minecraft模组来让8-18岁的孩子学习编程方法。

此外，还有一个教育专案，上述ComputerCraftEdu的母专案——MinecraftEdu，为了传授更广泛的科目包括语文，历史和艺术而广泛的在各大学校推广Minecraft以及其各种模组，以便有效的达成教育目的。

在《The Parent's Guidebook to Minecraft》中，作者柯里·德斯门表示，在家自学与Minecraft是一个有趣的组合，因为建立一个简单的模组可以很容易地产生一些用于演示科学原理的示意图Dusman 2013, p. 214。

## 延伸阅读

- Rogers Cadenhead, Absolute Beginner's Guide to Minecraft Mods Programming, (Indianapolis: Que Publishing, 2014).
- Cori Dusman, The Parent's Guidebook to Minecraft, (San Francisco: Peachpit Press, 2013).
- Jimmy Koene, Sams Teach Yourself Mod Development for Minecraft in 24 Hours, (Indianapolis: Sams Publishing, 2015).
- Lars van Schaik and Ronald Vledder (eds.), De ultieme gids voor Minecraft, (Doetinchem: Reshift Digital, 2015).