Guides / Commands & Data

自定义合成配方:定型、不定型,以及使用标签而非列出所有木材

一个无法合成的定型配方通常是键错误或图案填充不当。本文介绍了 JSON 格式、将八个配方合并为一个的标签技巧,以及如何测试。

配方是数据包中最容易编写的文件之一,也最容易出现细微错误,因为一个损坏的配方会静默失败——合成格中什么也不会发生。

定型配方 (Shaped)

{
  "type": "minecraft:crafting_shaped",
  "pattern": [ "SSS", "S S", "SSS" ],
  "key": { "S": "minecraft:stone" },
  "result": { "id": "minecraft:furnace", "count": 1 }
}

导致大多数失败的三个规则:

  • pattern 中的每个字符都必须存在于 key,除了空格,空格表示空。
  • 图案是相对的,而不是绝对的。 一个 2×2 的配方应该写成两行两列,而不是用空格填充成 3×3。填充会导致它只能在合成格的特定角落合成。
  • 所有行的长度必须相同。 ["SS", "S"] 是无效的。

不定型配方 (Shapeless)

{
  "type": "minecraft:crafting_shapeless",
  "ingredients": ["minecraft:stone", "minecraft:coal"],
  "result": { "id": "minecraft:torch", "count": 4 }
}

顺序无关紧要。重复的物品必须分别列出——两块煤炭意味着两个条目。

标签将一个系列合并为一个配方

无需为八种木板类型编写八个配方:

"key": { "P": "#minecraft:planks" }

# 标记了一个物品标签 (item tag)。#minecraft:planks#minecraft:logs#minecraft:wool#minecraft:stone_crafting_materials 以及数十个其他标签已经存在。定义自己的标签只需要一个文件:

data/<namespace>/tags/item/my_metals.json
{ "values": ["minecraft:iron_ingot", "minecraft:gold_ingot"] }

请注意 tags/item/——单数 item,复数 tags。这种不一致是真实存在的。

带有组件的结果

"result": {
  "id": "minecraft:diamond_sword",
  "count": 1,
  "components": { "minecraft:custom_name": "\"Excalibur\"", "minecraft:enchantments": { "sharpness": 5 } }
}

这是自定义物品无需模组即可合成的方式。

其他配方类型

crafting_shapedcrafting_shapeless 是众多类型中的两种。还包括:smeltingblastingsmokingcampfire_cookingstonecuttingsmithing_transformsmithing_trim。烹饪类型需要 cookingtimeexperience;切石 (stonecutting) 需要一个单独的材料和数量。

测试

/reload 然后尝试合成格。如果什么也没发生:

  1. 重新加载时检查聊天——格式错误的 JSON 会在那里报告。
  2. /recipe give @s <namespace>:<recipe>——如果配方 ID 错误,这会报错,表明文件根本没有被读取。
  3. 配方解锁与配方存在是分开的。即使配方从未出现在合成书 (recipe book) 中,它也能在合成格中工作。

使用 Datapack JSON Builders 中检查的键和标签构建配方、判断条件 (predicate) 和工具包 (kit) JSON。

数据包 JSON 生成器 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。