前言

作为一款总销量过亿份、PC版销量突破三千万份的沙盒游戏,Minecraft已经成为国内青少年群体中广泛流行的游戏之一。Minecraft的最初版本由瑞典公司Mojang AB开发并在PC上运行,其使用Java进行编写,是目前世界上畅销的电子游戏之一。

作为一款拥有极大自由度的沙盒游戏,从Minecraft测试版发布就开始了针对Minecraft游戏本身的修改。这类改动通常被称为模组(Mod,由Modification的前三个字母得名)。当时的模组和现在的模组的安装方式不同,是通过替换Minecraft游戏本体的方式完成的,这样不仅不方便,还容易引起不同Mod之间的冲突。而现在的Mod安装方式十分方便,我们只需要把若干个带jar后缀的文件放进mods目录下,然后启动游戏就可以了。

这归功于一类被称为ModLoader的特殊Mod。ModLoader本身也经历了若干代演化,目前十分流行的ModLoader由一个被称为MinecraftForge的组织提供。与此对应的ModLoader的名称为ForgeModLoader,简称FML。当然,目前还有一些知名度比较高的ModLoader,如LiteLoader等。本书只针对FML来讲。

包括FML在内的这些ModLoader的主要作用只有一个——把模组从mods目录中取出,然后按照一套约定俗成的方式加载,并执行其中的部分代码。即使这样,Mod之间的冲突仍然经常发生。因此,MinecraftForge同时也提供了一套接口(Application Programming Interface,API),以供Mod作者调用,大大减少了Mod之间的相互冲突,这套接口被称为ForgeAPI。在通常情况下,玩家不会刻意去区分FML和ForgeAPI,因为在大多数情况下,这两者都是同时被提及的。

通过本书的学习,读者能掌握编写Minecraft模组的基本方法,从而为进一步的模组开发打下基础。同时,这本书也可以帮助开发者对Java面向对象的编程语言有更深层次的了解。

这本书是做什么的

顾名思义,这本书是帮助Minecraft玩家入门模组开发的。本书不针对Minecraft的其他版本,如Bedrock Edition等。此外,对于不同的Minecraft版本,编写模组的方式也各不相同,为了不落后于游戏本身的发展,本书内容基于目前Mod社区十分流行的Minecraft版本——1.12.2之上。

我不会Java,这本书适合我吗

你完全可以阅读这本书。Minecraft游戏是由Java编写的,因此,这本书讲解的编程知识将只会考虑Java。考虑到这一点,这本书会在讲解过程中,穿插一些编程的基础知识,可以使对Java还不熟悉的开发者快速了解Java的基础框架。当然,编写模组有时会用到一些更高级的Java知识,在通常情况下,对Java不熟悉的开发者很难遇到这些知识。作者将会在本书第10章提醒读者阅读相关的资料。

我可以使用我熟悉的C/C++/C#/Python/JavaScript等语言吗

非常遗憾,不可以。使用Java编写模组是接触并修改Minecraft的内部逻辑很好的方式。其他语言或许可以编写模组,但在实际应用中会非常困难。当然,Java作为一门语法相对简单的编程语言,我相信有一定编程基础的读者会很快学会它的。另外,有一些编程语言和Java有着千丝万缕的联系,实际上也可以用于Minecraft的模组编写,不过在这本书里不讨论这类语言。

这本书可以让我成为一名熟练使用Java的开发者吗

非常遗憾,也不可以。这本书虽然会介绍一些关于Java的知识,但这些知识只是为完成本书涉及的编写模组任务的,还没有完全覆盖编写Java代码所需要的所有知识。如果读者想要写出更好的模组,则需要阅读专门讲解Java的参考书。事实上,作者也不建议开发者在对Java还不熟悉的时候就试图规划编写一个成体系的模组。

在硬件方面,有什么需要准备的吗

实际上,作为一款游戏,编写Minecraft模组的确对你使用的计算机硬件有一定的要求。一个基本的要求是内存空间至少为4GB,在这里建议读者使用64位的操作系统,并拥有至少6GB的物理内存。另外一个要求是你需要一个比较好的网络环境。大量与开发模组有关的资源都需要从网络上下载,这不可避免地会涉及一些资源,考虑到网络大环境,读者可能需要在编写模组之前,自行准备一些必要的网络工具。

【读者服务】

扫码回复:(35851)

● 获取本书配套的源代码

● 获取博文视点学院20元付费内容抵扣券

● 获取精选书单推荐