文档托管解决方案

2.配方

附加包教程:2.配方

前言

上期,我们成功创建了一个没有任何效果的附加包。这一期,我们将学习自定义配方相关内容。
草

准备

在行为包根目录下创建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": ... 后填写一个标签,那么所有拥有这个标签的方块和物品都可以参与合成。可以在这里(https://learn.microsoft.com/en-us/minecraft/creator/reference/content/recipereference/examples/recipetaglist)找到所有原版标签。

配方模板,请解压.zip

上一篇
下一篇
目录导航

更多文档