在这一节中,我们先不涉及编码,而是先了解资源包和数据包。资源包可以改变客户端的数据,例如材质、音乐、语言文本翻译等,但不会改变游戏逻辑。数据包则是用来改变服务器数据的,比如掉落物列表、合成表、函数标签等,会修改游戏逻辑。这些都是原版支持的修改游戏资源的方式,同时也会在我们的mod中使用到这些技术,因此我们需要对其有所了解。
关于具体的写法,我们可以参考wiki上的相关内容,其中详细介绍了每个章节的内容,有些章节还有额外的文章以避免篇幅过长。可以深入阅读其他文章,这里面的内容非常丰富。
一个关键的部分是文件格式,比如我已经提取出来的原版格式中的block states。例如,我们找到门,里面描述了门的朝向、是否打开、铰链位置等,以及模型的指定。这些都是JSON文件的格式,让我们了解文件的结构并不难,很容易学习。
JSON文件并不复杂,只是一种文件编写格式,不是什么高深的东西,只是让我们了解如何编写这种格式的文件。
接下来我们再谈一下数据包。我们也提取了一个原版数据包例子,比如说我们想看掉落列表,例如烈焰人,我们可以看到其格式。在数据类型中有许多章节,描述文件的格式以及PC格式是怎样的,还有相关小文章。
其中一个重要部分是进度,如果你想为游戏编写进度,可以查看相应章节,了解文件格式以及各种细节都有详细说明。但你不需要照着这些写,最好的方法是直接复制粘贴,找到原版文件,复制过去,然后修改成类似的内容。
举个例子,如果你的方块需要精准采集才能掉落特殊物品,你可以找到原版中需要精准采集的方块,比如像动物石头,我们知道只有精准采集才会掉落石头,否则是原石。在这里我们可以看到需要"sc touch"精准采集才会掉落石头,这些都是有关联的。
直接对着这些内容看,就可以理解,非常简单。直接复制黏贴修改即可。这样我们对资源包和数据包有了一些了解。
当然,有些人可能不清楚如何提取原版数据。首先,我们可以找到1.20版本的原始数据包。首先,需要自行下载游戏,并使用压缩软件打开游戏文件夹,其中 data 文件夹就是原版数据包,直接拷贝出来即可。
另外,在 assets 文件夹中包含了一半的资源包,因为并非所有内容都在这里,有些资源需要通过查找 assets indexes 文件夹下的 JSON 文件来获取信息。打开该 JSON 文件(以1.20.1为例),格式化后可以看到 hash 值,代表着哪个文件。我们可以根据这个 hash 值创建一个类似的文件夹,例如 icons,并在内部创建一个对应的文件,这个文件名就是该 hash 值,可以在 objects 找到相应的文件。
如果觉得这个提取过程太繁琐,也可以编写程序自动化完成这个过程。相信如果之前有基础知识的话,能够轻松搞定这个自动化提取文件的方法。我也写了一个简陋的程序,使用 NWJS 编写,可以用于提取文件,导出到指定目录。
这期先讲到这里,主要理解这些内容是什么,因为之后的 mod 制作会用到它们。即使你不懂得编写,也没关系,只需要了解一下,按照 wiki 上的指引稍作修改即可。