配方 1.21 Fabric
本篇教程的视频:
本篇教程源代码
GitHub地址:TutorialMod-Recipe-1.21
介绍
在Minecraft中,配方可以将初级原材料制作成各种物品和方块,亦或是工具、武器装备等等。它属于数据文件,游戏源文件的路径为data/minecraft/recipe
(注意1.21版本不带s)
在游戏中,有这多种不同类型的配方,实际上是对应不同的方块实体的配方,比如工作台对应有有序合成和无序合成配方,熔炉、高炉、营火又有各自对应的配方,这个在本篇教程的后面会详细讲解
配方的相关参数也可以在Wiki上查看
编写配方
和战利品列表一样,这里也没有代码,我们只需要写json
文件就可以了,游戏原版的文件路径也在上方列出来了,可以自行查阅
有序合成
有序合成是指有顺序
的合成配方,也就是说你合成某个物品的时候,需要按照一定的顺序来摆放你的材料才能合成成功。
比如工具中的斧头
、镐子
、锄头
等等,它们必须按照顺序放木棍和其他材料才能合成。
这里我们可以举个例子,路径是data/tutorialmod/recipe/ice_ether_block.json
1 | { |
这是最普遍的有序合成配方,也就是9个材料合成一个方块,常见的像钻石块、煤炭块等等
type
对应的是配方的类型,这里的crafting_shaped
指代有序合成类型
category
是配方所属的类别,misc
指杂项,另外还有building
(建筑材料类)、redstone
(红石类)、equipment
(工具装备类)这几类,不要写错了,不然会报错无法识别。食物类的配方属于misc
group
是配方所属的组,可写可不写,默认为空
key
和pattern
放一起讲,它也是有序合成和无序合成区别最大的地方。pattern
是配方的排列方式,这个就是物品的工作台上的摆放方式,#
代表一种物品(可以是任意单字符),空格
代表空槽位(当然这里没有)。key
是pattern
中的字符对应的物品,item
是物品(包括方块)的id
(命名空间 + 注册名)
result
是合成后的物品,count
是合成的数量,id
是合成后的物品的id
(命名空间 + 注册名)
无序合成
无序合成是指没有顺序
的合成配方,也就是说你合成某个物品的时候,随便堆放你的材料就可以合成成功。
比如木板合成木棍,放在九宫格的任意一个位置都可以合成成功
这里我们也举个例子,路径是data/tutorialmod/recipe/ice_ether.json
1 | { |
也是常见的无序合成配方,1个方块合成9个材料
type
对应的是配方的类型,这里的crafting_shapeless
指代无序合成类型
剩下唯一不同的就是ingredients
,这里是合成所需的材料,item
是物品(包括方块)的id
(命名空间 + 注册名)
你直接将材料堆到这里就可以了,无需考虑顺序
可以再举一个例子,比如data/tutorialmod/recipe/ice_ether_ore.json
1 | { |
有多个物品的时候就这样写即可,我们也可以拿原版的东西来写配方
另外,配方也支持使用tag
,比如合成木棍的配方,这个我们后续讲tag
的时候会详细讲解
熔炉配方
熔炉配方是指将物品放入熔炉中熔炼,得到另一种物品,比如将铁矿石放入熔炉中熔炼,得到铁锭
这里我们举个例子,路径是data/tutorialmod/recipe/ie_from_smelting_rie.json
1 | { |
type
对应的是配方的类型,这里的smelting
指代熔炉配方
category
是配方所属的类别,这里可以写food
(食物类)
cookingtime
是熔炼时间,单位是tick
,1秒=20tick,这里是200tick=10秒
experience
是熔炼经验,这个是熔炼后玩家可以获得的经验值
group
是配方所属的组,可写可不写,默认为空
ingredient
是熔炼所需的材料,item
是物品(包括方块)的id
(命名空间 + 注册名)
result
是熔炼后的物品,id
是熔炼后的物品的id
(命名空间 + 注册名),其实也是可以写数量的
高炉配方
相比较于熔炉,高炉无非是熔炼速度更高,不过燃料也更耗
举个例子,路径是data/tutorialmod/recipe/ie_from_blasting_rie.json
1 | { |
我们可以直观的发现这个熔炼的时间从200
变成了100
举一反三
其实其他配方也还有,这里就留给大家自行探索了,我们自己来举个例子
比如说,甜菜作为我国的一大糖料作物(学地理的应该知道吧),咋不能合成糖?
所以说,咱们自己写一个sugar_from_beetroot.json
1 | { |
咱们这里就简单写一下,因为原版游戏中,一个甜菜是合成一个红色染料的,为了避免冲突,我们就写了3兑3
这个pattern
是可以自己折腾的,只要不超过九宫格的范围就好