1. Wiki
  2. /物品
  3. /工作台和熔炉配方

工作台和熔炉配方

为 Minecraft 基岩版添加有序、无序和熔炉配方:图案、键、物品标签、配方书解锁、工作站和优先级。

一个谁都拿不到的物品可没什么意思。在这篇指南中,你将为前几篇指南中的红宝石物品添加三个配方:红宝石剑的有序配方、红宝石苹果的无序配方,以及把粗红宝石烧炼成红宝石的熔炉配方。你还会了解配方书如何解锁配方,以及 tags 和 priority 的作用。

快捷方式:GodCraft

GodCraft 有工作台、熔炉、锻造台和酿造配方对象,并配有真实的合成网格。你只需点选物品放进格子里,不用手打图案。

  1. 打开工坊,在你的附加包中添加一个工作台或熔炉配方。
  2. 用你自己的物品或原版物品填满网格。
  3. 选择产物以及产出数量。
  4. 点击导出。配方文件会自动为你写好。

本页其余部分展示这些文件是什么样子的。

手动制作

配方放在行为包中一个叫 recipes 的文件夹里。每个配方是一个 JSON 文件,文件名对游戏来说无关紧要。我们使用命名空间 myname。请在所有地方把它换成你自己的。

每个配方都有相同的基本结构:

  • 一个类型:minecraft:recipe_shaped、minecraft:recipe_shapeless 或 minecraft:recipe_furnace
  • 一个 description.identifier:配方(而不是物品)的唯一 ID
  • tags:哪些工作站可以使用它
  • unlock:它何时出现在配方书中
  • 原料和产物

有序配方

有序配方在意每个物品放在网格中的位置,比如剑必须摆成一条竖线。

BP/recipes/ruby_sword.json
{
  "format_version": "1.20.10",
  "minecraft:recipe_shaped": {
    "description": {
      "identifier": "myname:ruby_sword"
    },
    "tags": ["crafting_table"],
    "pattern": [
      "R",
      "R",
      "S"
    ],
    "key": {
      "R": {
        "item": "myname:ruby"
      },
      "S": {
        "item": "minecraft:stick"
      }
    },
    "unlock": [
      {
        "item": "myname:ruby"
      }
    ],
    "result": {
      "item": "myname:ruby_sword"
    }
  }
}

图案的工作方式:

  1. pattern 画出网格。每个字符串是一行,每个字符是一个格子。最多 3 行,每行最多 3 个字符。
  2. 空格表示“这个格子留空”。比如镐,你会写成 "RRR"、" S "、" S "。
  3. key 说明每个字符代表什么。字母由你来选,挑好记的就行。
  4. result 是你得到的东西。加上 "count": 4 就能一次得到多个。

图案不必填满整个 3x3。上面的剑宽 1 格、高 3 格,所以玩家可以在网格的任意一列中合成它。图案的镜像版本默认也能用。

无序配方

无序配方只在意网格里放了什么,不在意放在哪儿。很适合把东西混合在一起。

BP/recipes/ruby_apple.json
{
  "format_version": "1.20.10",
  "minecraft:recipe_shapeless": {
    "description": {
      "identifier": "myname:ruby_apple"
    },
    "tags": ["crafting_table"],
    "ingredients": [
      {
        "item": "minecraft:apple"
      },
      {
        "item": "myname:ruby",
        "count": 2
      }
    ],
    "unlock": [
      {
        "item": "minecraft:apple"
      }
    ],
    "result": {
      "item": "myname:ruby_apple"
    }
  }
}

ingredients 中的每一项是一种物品。当你需要多个相同物品时,加上 "count":这里玩家只要在网格中任意位置放一个苹果和两颗红宝石就行。一个无序配方总共最多可以使用 9 个物品。

熔炉配方

熔炉配方用高温把一种物品变成另一种。它是所有配方里最简单的:

BP/recipes/smelt_raw_ruby.json
{
  "format_version": "1.20.10",
  "minecraft:recipe_furnace": {
    "description": {
      "identifier": "myname:smelt_raw_ruby"
    },
    "tags": ["furnace", "blast_furnace"],
    "input": "myname:raw_ruby",
    "output": "myname:ruby",
    "unlock": [
      {
        "item": "myname:raw_ruby"
      }
    ]
  }
}

input 放进上方的格子,output 是烧出来的东西。按照你的第一个自定义物品中制作红宝石的方法做一个 myname:raw_ruby,或者先用一个原版物品来测试。

tags 字段:用哪个工作站?

tags 列出所有接受该配方的工作站。一个配方可以同时属于多个工作站。

标签工作站
crafting_table工作台(如果图案放得下,也可以用物品栏里的 2x2 网格)
stonecutter切石机
furnace熔炉
blast_furnace高炉(原版用它烧炼矿石和金属)
smoker烟熏炉(原版用它烹饪食物)
campfire、soul_campfire营火(食物)

所以,烹饪食物的配方应该列出 "furnace", "smoker", "campfire", "soul_campfire",就像原版的生牛肉一样。

用物品标签作为原料

键或原料可以不指定某个具体物品,而是用 tag 接受一整组物品:

在 key 内部
"P": {
  "tag": "minecraft:planks"
}

现在任何种类的木板都能放进这个格子。原版就是用这种方法让你可以用橡木、白桦木或其他任何木头来合成工作台的。其他好用的原版标签还有 minecraft:logs 和 minecraft:wooden_slabs。

unlock 字段:配方书

unlock 决定配方何时出现在玩家的配方书中。没有它的话,玩家只能去猜你的配方。

  • 物品列表:玩家捡起其中任意一个物品后,配方就会解锁。这里也可以用 "tag",比如 { "tag": "minecraft:planks" }。
  • 情境:在特殊情况下解锁,写成一个对象而不是列表:
始终显示在配方书中
"unlock": {
  "context": "AlwaysUnlocked"
}

原版使用的其他情境还有 PlayerInWater 和 PlayerHasManyItems。对大多数自定义配方来说,在获得主要原料时解锁是最友好的选择。

小贴士

用玩家最先拿到的原料来解锁。对于剑来说就是红宝石,这样玩家一找到第一颗红宝石,配方就会弹出来。

优先级:两个配方冲突时

如果两个配方的原料和形状完全相同,游戏就必须从中选一个。"priority" 字段(一个整数,放在 tags 旁边)用来给配方排序。原版会对重叠的配方使用 -1、0、1 和 2 这样的小数字,比如接受任意木台阶的木桶配方,和只接受单一种类台阶的木桶配方。

不过,按优先级排序只是最后的手段。最好的办法是避免冲突:查看原版物品,选一个没有其他配方使用的图案,然后测试你的配方是否得到了预期的产物。

测试

  1. 把包加载到一个世界中(参见导出并安装)。
  2. 用 /give 给自己原料,比如 /give @s myname:ruby 5。
  3. 打开配方书。拿到解锁物品后,你的配方应该就会出现。
  4. 把每个配方都合成一遍,再烧炼一颗粗红宝石。

出问题时

你看到的现象最可能的原因
配方没有任何反应物品 ID 拼写错误,或者 pattern 中的某个字符在 key 中没有定义
配方书里没有它缺少 unlock 字段,或者玩家从未拿到过解锁物品
两个配方打架原料和形状相同:修改图案或设置 priority
熔炉不接受这个物品tags 列表中没有包含这种熔炉
两个配方使用了同一个 ID每个 description.identifier 都必须是唯一的

更多解决方法请看故障排除。需要点能合成的东西?去做食物、武器和工具或盔甲吧。

物品: 指南

We use cookies to improve your experience and analyse site traffic. Learn more