制作Minecraft数据包
我玩Minecraft的时候比较喜欢玩模组,因为模组带来的玩法是超越原版的,于是我就有自己制作模组的想法。
Minecraft模组有两种阵营:forge和fabric。
我之前用java写过fabric模组,虽然fabric正在发展,很多人也比较看好fabric模组,因为fabric有个优点,模组更新速度快,刚出现的新版本就有与之相对应的模组。
forge是一个老牌的模组拓展了,相比于正在发展的fabric,已经相当成熟了,甚至还有了自己专属的“事件(event)”写法,可以说玩法更多。
简单来讲,fabric更新快,forge玩法多。我之前用java写过fabric模组,但好长时间没有去动,懒得去写了。
今天介绍一种新的拓展玩法,Minecraft原生数据包,当然这种拓展玩法限制比较大,但数据包允许玩家添加及修改函数、战利品表、世界结构、进度、合成、标签、维度和谓词。
熟悉一下数据包
.minecraft
路径下是有一个saves
文件夹,这个是存档文件夹,用来存储游戏的存档。随便打开一个存档文件夹,会有一个datapacks
文件夹,这个是用来存放数据包的,就和加模组一样,数据包放在这个位置就可以了。数据包应该是个
.zip
的压缩文件,当然解压出来也是没问题,所以在制作的时候可以不用压缩,直接在这个路径下写,这样相对比较方便。
制作数据包
首先在datapacks
文件夹下创建一个文件夹,名字随便就是不要中文,文件夹名即是数据包名。
数据包结构:
1 | |--(数据包名字) |
创建MCMETA文件
打开新建的数据包文件夹,新建一个文本文件,重命名成pack.mcmeta
。
这个文件是Minecraft识别该数据包,使用的语法格式是json。
可以先写下以下内容:
1 | { |
pack_format
是版本号,如果Minecraft是1.17快照,pack_format应该为7。如果数据包用于1.16.2~1.16.4版本,pack_format应该设为6。如果数据包用于1.15~1.16.1,pack_format应该为5,如果数据包用于1.13~1.14,则 pack_format应该为4。description
是数据包描述,随便写写就可以。可在数据包的描述和名称中使用“§”符号(Minecraft格式化代码)。
命名空间
我们遇到的很多的计算机语言都会有命名空间,这主要是防止命名相同,Minecraft也同样如此,如果你从jei看物品时会有这样命名空间:物品
的简述。
所以我们可以在data
下,新建一个文件夹,当成一个命名空间,然后接下来的操作全部在这个文件夹下完成。
一个数据包下可以多个命名空间,所以可以创建一个及以上的文件夹,用来当作命名空间。
制作配方
配方主要涉及到玩家的合成和锻炼物体。
首先在命名空间文件夹下创建一个新的文件夹,名字为recipes
,在这个文件夹(或它的子文件夹)之下新建配方文件 配方名.json
有序配方
1 | { |
type
所对应的minecraft:crafting_shaped
说明此配方为有序配方。pattern
是一个列表,最好写成3*3的形状,每个位置放一个字符,这个字母是用来替代的物品。key
是一个对象,规定了pattern
中的字符所代表的物品。可以用item
后接物品ID,也可以用tag
后接数据包标签,点击此链接可以查看物品ID。result
是一个对象,其中item
规定了最终合成的是何种物品。count
是一次合成成品的数量。
示例:
煤炭块合成钻石。
1 | { |
(未完待续,长期更新)
参考文章: