第Ⅱ部分 小试牛刀

本书第Ⅱ部分介绍了一些常用的Java开发常识及一些在Mod开发中非常常见的需求。这一部分的目标是相对明确的——对于已经熟练掌握Java的读者来说,通过以下四个章节的学习,读者应该能掌握一些Mod开发的基础操作和常见套路,编写一些可玩性较高的Mod了,而对于Java尚不熟练的读者来说,照猫画虎,仿照书中的源代码实现一些类似的Mod,也应该不成问题。

因此,作者在第3章首先从Java的基础知识讲起,并较为详细讲解了Forge的事件系统的大概框架和使用方式。这部分的目的是希望读者在代码上对Mod的开发流程和大致框架有一个相对清晰的认识。

接着,作者在第4章从基础的Mod行为,也是玩家感兴趣的Mod行为开始介绍。在Mod中新添加物品和方块,往往是玩家在开发Mod时最希望做到的事情,因此本书最先介绍的游戏元素也是这两个。

然后,作者在第5章展开介绍了创造模式物品栏、工具、盔甲、合成配方等玩家同样相当感兴趣的几个游戏元素,通过新添加这些游戏元素,读者应该对Minecraft的部分游戏机制有了一个大概的认知,并应能对类似的游戏元素举一反三,使用相似的方式解决问题。

接下来,作者在第6章引入了一些能够带来相对不同的游戏体验的游戏机制,包括但不限于烧炼配方、燃料、附魔、村民交易、药水效果等。这些游戏机制能够为Mod带来更高的可玩性,因此实现起来也相应更复杂一些,但思考并完成类似的实现,恰恰是Mod开发者主要在做的事情。

在Mod开发中,面临的主要问题,就是试图向原版Minecraft添加特性,但是却不能直接修改原版Minecraft代码。对于这类问题,通常有以下几种思路:

对于某些特定的游戏元素,如方块、物品、附魔、药水及其效果、村民及其交易等,Forge已经形成了一套自己的系统,如果我们想要添加新的游戏元素,我们可以直接创建特定类型的新实例,并监听特定类型的注册事件,使用Forge的注册系统注册它们。

对于某些没有被Forge特殊处理的游戏元素,如烧炼配方、药水配方等,Forge虽然没有特殊处理,但是通过检索,我们能够注意到Minecraft原版有一些特定的方法可以供我们添加游戏元素,Forge有时也会改良,甚至自己添加一些这样的方法,因此我们可以通过在生命周期触发(在通常情况下,和数据有关的游戏元素应使用FMLPreInitializationEvent,和游戏机制有关的游戏元素应使用FMLInitializationEvent)时调用这些方法完成目标。这些方法有时并不总是那么明显,因此本书会对部分经常用到的方法加以介绍。

对于游戏机制,如果游戏机制涉及新添加的游戏元素,往往相对应的类型会有一些特定的方法描述特定情况的游戏机制,我们有时可以继承并覆盖特定的方法,从而修改游戏机制。本书只会在必要的时候介绍一小部分特定的方法,剩下大部分的方法,往往需要读者自己翻阅代码进行分析。

对于一些和原版联系紧密的游戏机制,我们往往没有办法覆盖原版类的一些方法,那么在通常情况下,Forge会在特定方法调用时触发一些特定的游戏事件,可以通过监听这类事件的方式修改这类游戏机制。选取和使用事件往往是整个Mod开发过程中很困难的部分,但也恰恰是Mod开发过程中很有趣的部分,甚至说整个Mod建构在事件监听和处理上都不为过。本书只会在必要的时候介绍一小部分特定的事件,剩下大部分的事件,也需要读者自行翻阅代码分析。

在后续章节中,将从某些特定的游戏系统出发,针对性介绍开发Mod时的一些常用方法及经验思路等。