UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2023-8-27 17:07 编辑
前言
|
上期,我们成功创建了一个没有任何效果的附加包。这一期,我们将学习自定义配方相关内容。
| | 准备
|
在行为包根目录下创建recipes文件夹,打开。
(注:以后提到“打开xxx文件夹”时,如果你没有这个文件夹,那就创建xxx文件夹。)
| | 第一个配方
|
现在就可以开始了,新建一个文件,打开。注意,以后如果不特别说明,新建的文件后缀就都是.json。(关于这个文件的命名以后如果不说,那就都是你的内容的名字。例如你想要沙子合成石头,那就sand_to_stone,差不多就这样。不过这个没什么限制,但只能用英文,而且别太长就行。总之,怎么开心怎么来。)
配方有8种:有序配方、无序配方、烧炼配方、酿造配方、酿造混合配方、材料分解配方、锻造升级配方和锻造纹饰配方。其中,第一和第二种配方是工作台配方;第三种是熔炉(或高炉、烟熏炉、营火、灵魂营火)配方;第四和第五种是酿造台配方;第六种比较特殊,属于教育版独有的内容,创建世界时开启教育版选项即可使用;第七和第八种配方在锻造台上进行,负责盔甲纹饰和升级下界合金装备。
接下来,我会分别讲解这些配方的格式。
有序配方就是有图案、有顺序的配方,例如木板横着放是压力板,竖着放是木棍,这都是有序配方,原料的摆放顺序不能改。代码如下。
- {
- "format_version": "1.20.10", //代码的格式版本,不同版本可使用的功能不同,见下文unlock部分
- "minecraft:recipe_shaped": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "tags": [
- "crafting_table" //定义合成的标签,以后自定义方块时会用到
- ],
- "group": "stained_glass", //定义合成属于的组,目前尚不清楚有什么用途
- "priority": 1, //定义合成的优先级
- "pattern": [
- " A ",
- "ABA",
- " A "
- ], //这里就是模拟工作台的地方,相当于3*3网格。放进去的物品要用代号,只能是一个符号或者字母。空格表示不放东西。可以改变形状,例如2*2,2*3等等。
- //注意格式,可以用MT管理器的“格式化代码”功能检查格式,如果没报错就是正确格式,报错就根据错误提示修改。
- "key": {
- "A": {
- "item": "minecraft:leather", //物品ID
- "data": 0 //这里是物品数据值。
- }, //这里就是说,上面的代号表示什么。这个例子中说的是“A代表皮革”。
- "B": {
- "item": "minecraft:ender_pearl" //也是物品ID,这里是末影珍珠
- }
- },
- "unlock": [ //基岩版1.20.10新增了unlock字段,用于定义配方解锁功能。玩家获得下面列出的物品会解锁配方。此字段仅可在代码格式版本1.20.10及以上时存在,1.20.10以下时不需要此字段。
- {
- "item": "minecraft:slime"
- }
- ],
- "result": {
- "item": "supplementary:primary_stronghold", //这里是输出的物品。
- "count": 1, //这里是输出的数量,写正整数。
- "data": 0 //这里是物品数据值,关于“数据值”,查wiki。
- } //当然,也可以在result后接一个数组,把这个对象放进数组里就可以实现多个输出物品了。
- }
- }
复制代码
下面是多个输出的例子。
|
无序配方与有序配方相反,就是无顺序的配方,例如钻石块分解成钻石,无论放哪个格子,分解出的都是9个钻石,原料的摆放顺序可以改。代码如下。
- {
- "format_version": "1.20.10",
- "minecraft:recipe_shapeless": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "tags": [
- "crafting_table" //合成的标签,以后自定义方块时会用到
- ],
- "ingredients": [
- {
- "item": "minecraft:stone" //物品ID,这里是原料,可以有很多个原料,每个原料的物品ID允许一样,例如合成混凝土粉末时的配方。
- }
- ],
- "unlock": { //有序配方和无序配方都可以拥有unlock字段。除了使用列表表示物品以外,还可以使我对象指定上下文触发。
- "context": "PlayerInWater" //玩家在水里时解锁配方。还可以填写“None”,即永远不会触发配方。还可以填写“AlwaysUnlocked”,即配方本来就不用解锁。
- },
- "result": {
- "item": "minecraft:sand", //这里是输出的物品。
- "count": 1, //这里是输出的数量,写正整数。
- "data": 0 //这里是物品数据值,关于“数据值”,查wiki。
- } //注意,这里目前不支持有很多个输出。
- }
- }
复制代码
这个配方在游戏里是这样的。
|
还可以添加切石机配方,其格式与无序配方相同。
- {
- "format_version": "1.12",
- "minecraft:recipe_shapeless": {
- "description": {
- "identifier": "minecraft:stonecutter_brick_slab" //命名空间ID
- },
- "tags": [ "stonecutter" ], //切石机
- "ingredients": [
- {
- "item": "minecraft:brick_block", //输入的物品,只能有一个
- "data": 0 //数据值
- }
- ],
- "result": {
- "item": "minecraft:double_stone_slab", //输出的物品,只能有一种
- "data": 4, //数据值
- "count": 2 //数量
- }
- }
- }
复制代码
|
烧炼配方很简单,只需要定义输入的原料和输出的成品,如粗铁烧铁锭。代码如下。
- {
- "format_version": "1.12",
- "minecraft:recipe_furnace": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "tags": [
- "furnace", //熔炉
- "blast_furnace" //高炉
- ], //这里决定什么炉可以烧,"smoker"是烟熏炉,"campfire"是篝火,"soul_campfire"是灵魂篝火。
- "input": "supplementary:calcite_ore", //输入物品
- "output": "minecraft:calcite" //输出物品
- }
- }
复制代码
还可以定义一个腐肉烧皮革的配方:
|
酿造台配方比熔炉配方复杂一些,需要定义输入的原料、催化剂(指酿造台上面放的东西)和输出的成品,如药水加红石酿造加长时间的药水。酿造配方的输入、催化剂和输出忽略指定的数量值。如果酿造配方的输入可以堆叠,那么整个堆叠将被消耗。目前有一个问题,输出的物品不会与完全相同的物品堆叠在一起,不管是否指定了数据值。
酿造混合配方不将输入物品的数据值传递给输出物品。除了指定水瓶、药水、喷溅药水和滞留药水的,指定输入物品的数据值会使配方无效。
酿造容器配方将输入物品的数据值传递给输出物品,指定输入和输出的数据值会被忽略。仅允许输入水瓶、药水、喷溅药水和滞留药水。 |
以下是酿造混合配方的代码。
- {
- "format_version": "1.12",
- "minecraft:recipe_brewing_mix": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "tags": [
- "brewing_stand" //酿造台可以酿造,目前没开放接口,只能写这个
- ],
- "input": "minecraft:potion_type:water", //输入的物品ID,这里是水瓶
- "reagent": "supplementary:ender_blaze_powder", //催化剂,例如红石
- "output": "supplementary:haste_potion" //输出的物品ID,一般是药水(当然其他的也可以)
- }
- }
复制代码
|
材料分解配方主要用于教育版里的材料分解器,代码如下。
- {
- "format_version": "1.14",
- "minecraft:recipe_material_reduction": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "input": "minecraft:diamond", //要分解的物品
- "output": [
- {
- "count": 64, //数量
- "item": "minecraft:element_6" //一项输出,写物品ID
- },
- {
- "count": 36, //数量
- "item": "minecraft:element_6" //又一项输出,写物品ID
- }
- ], //这里是输出的物品,总共输出的物品貌似不能超过9项
- "tags": "material_reducer" //材料分解器
- }
- }
复制代码
|
锻造升级配方用于升级下界合金装备。
- {
- "format_version": "1.12",
- "minecraft:recipe_smithing_transform": {
- "description": {
- "identifier": "这里直接写配方英文名,要和文件名匹配"
- },
- "tags": [
- "smithing_table" //锻造台
- ],
- "base": "minecraft:diamond_axe", //要锻造的装备,这里是钻石斧,只能是标记为可升级物品的装备
- "template": "minecraft:netherite_upgrade_smithing_template", //锻造模板,只能是下界合金升级模板
- "addition": "minecraft:netherite_ingot", //锻造材料,只能是下界合金锭
- "result": "minecraft:netherite_axe" //输出的成品,这里是下界合金斧
- }
- }
复制代码 |
锻造纹饰配方用于盔甲纹饰系统。这个配方无需填写输出物品,输出物品被自动指定为有纹饰的盔甲。
- {
- "format_version": "1.20.10",
- "minecraft:recipe_smithing_trim": {
- "description": {
- "identifier": "minecraft:smithing_armor_trim" //命名空间ID
- },
- "tags": [
- "smithing_table" //锻造台
- ],
- "template": {
- "tag": "minecraft:trim_templates" //锻造模板,使用了tag指定所有锻造模板,这里只能是标记为锻造模板的物品
- },
- "base": {
- "tag": "minecraft:trimmable_armors" //可锻造的盔甲,这里只能是标记为可锻造盔甲的物品
- },
- "addition": {
- "tag": "minecraft:trim_materials" //可锻造的矿石锭、水晶等(如金锭、紫水晶碎片等),这里只能是标记为可纹饰的材料的物品
- }
- }
- }
复制代码 |
自从1.19.50以来,就可以使用tag标签作为配方的输入。只需要把原料中的 "item": ... 替换为 "tag": ... 后填写一个标签,那么所有拥有这个标签的方块和物品都可以参与合成。可以在这里找到所有原版标签。
示例文件下载:
配方模板,请解压.zip(1.83 KB, 下载次数: 51)
| | 总结
|
好了,现在,你应该会如何添加一个配方了。下期,我们就要学习如何添加函数了。
|
|
评分查看全部评分
|