跳到主要内容
OhMyMC
文章书架工具种子导航
OhMyMC

用最清晰的方式,学会 Minecraft。

Copyright © 2024-2026 suixinio. All rights reserved.|京ICP备2024096958号-1

本网站与 MOJANG 或 MICROSOFT 无任何关联

首页工具自定义合成

自定义合成

用数据包给自己加一条合成配方。

免费在线数据更新至 26.2

正在加载工具…

数据包配方结构与目录规则

配方 JSON 放在哪

数据包的目录结构是固定的,放错一层游戏会静默忽略, 既不加载也不报错 —— 这是自定义配方最难排查的一类问题。

我的数据包/
├── pack.mcmeta
└── data/
    └── <命名空间>/
        └── recipe/            ← 1.21 起是单数,此前是 recipes/
            └── my_sword.json
规则细节
命名空间与文件名的字符集只允许 a-z 0-9 . _ -,路径另外允许 /
大写字母不允许。写了大写会让整个资源位置非法
中文 / 空格不允许
目录名1.21 起 recipes/ 改成 recipe/,advancements/ 改成 advancement/
放到哪存档的 datapacks/ 目录,或服务器世界目录下的同名文件夹
怎么生效进游戏执行 /reload,或重进世界

有序与无序

类型type结构
有序合成minecraft:crafting_shapedpattern(1–3 行字符串)+ key(字符 → 原材料)
无序合成minecraft:crafting_shapelessingredients 数组,最多 9 项
{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    " A ",
    " A ",
    " B "
  ],
  "key": {
    "A": "minecraft:diamond",
    "B": "minecraft:stick"
  },
  "result": { "id": "minecraft:diamond_sword", "count": 1 }
}

原材料的三种写法

写法含义从哪个版本开始
"minecraft:diamond"单个物品(简化写法)1.21.2(24w33a)起
{"item":"minecraft:diamond"}单个物品(完整写法)所有版本
"#minecraft:planks"物品标签,同类任选1.21.2 起可用简化写法
["minecraft:diamond","minecraft:emerald"]多选一1.21.2 起

在 1.21 / 1.21.1 上必须用完整的 {item:…} 写法 —— 裸字符串会让配方加载失败,而且不会有任何提示。

pack.mcmeta 的版本号

pack_format适用版本
151.20 – 1.20.1
181.20.2
261.20.3 – 1.20.4
411.20.5 – 1.20.6
481.21 – 1.21.1
571.21.2 – 1.21.3
611.21.4
711.21.5

1.21.9 起改用 min_format / max_format 数组表示版本区间。填错 pack_format 通常仍能加载,但游戏会提示「为其他版本制作」。

常见问题

配方加进去了却合成不出来。按这个顺序排查:目录名是不是 recipe(单数)→ 命名空间和文件名有没有大写或中文 → 原材料写法与目标版本是否匹配 →/datapack list 里这个包是否已启用。
覆盖原版配方。把文件放在 data/minecraft/recipe/ 下并用与原版相同的文件名, 就能替换掉原版配方。想删掉某个原版配方,放一个内容为 {"type":"minecraft:crafting_shapeless","ingredients":[…不可能的组合…]} 的同名文件即可。
产物可以带组件。result 里除了 id 和 count, 1.20.5+ 还能写 components,直接产出带附魔、带名字的成品。

相关工具

旗帜设计师叠加图案设计旗帜,生成合成表与 /give 指令。盔甲架姿势编辑器调整盔甲架各关节姿势,生成 /summon 指令。盾牌设计师给盾牌配旗帜图案,预览并生成指令。烟花设计师设计爆炸效果与飞行轨迹,生成合成表与指令。药水生成器选择效果与等级,生成药水 /give 指令与酿造路径。酿造配方大全从水瓶出发的完整酿造树:基粉、发酵蛛眼、火药。

常见问题

›我的世界怎么自定义合成配方?

做一个数据包:把配方 JSON 放到「存档/datapacks/你的包名/data/<命名空间>/recipe/xxx.json」,同级目录放一个 pack.mcmeta 声明版本,进游戏执行 /reload 即可。命名空间和文件名必须是全小写字母、数字或下划线,用中文或大写会静默加载失败。

›数据包放进去为什么没生效?

按顺序排查三点:一是路径拼错(1.21 起是单数的 recipe,不是 recipes);二是命名空间或文件名含大写、空格、中文;三是 pack.mcmeta 的 pack_format 与游戏版本对不上。执行 /datapack list 能看到包是否被识别,F3+日志会写出具体报错。

›自定义配方能用「任意木板」这种材料吗?

可以,把材料写成物品标签,前面加井号,例如 "#minecraft:planks" 表示任意木板、"#minecraft:logs" 表示任意原木。有序配方写在 key 里,无序配方直接写进 ingredients 数组即可。