指南
如何制作自定义合成配方
更新于 2026年10月18日
自定义配方是改变生存服务器最简单的方法:合成鞍、把羊毛拆回原料、把腐肉烧成皮革。你可以用数据包添加,它在原版和单人游戏中都能用;也可以用插件添加,它能做更多事,比如要求用某个特定的自定义物品作为材料。
把这些换成你自己的配方。
用 Codexe 生成这个分步说明
1.选择数据包还是插件
如果配方只用普通物品,并且要在任何服务器或世界中使用,就用数据包。如果材料必须是精确的物品(带名称或标签),或者配方需要权限或其他条件,就用插件。
2.写下每个配方
类型(有序、无序、熔炉、烟熏炉、高炉、营火、切石机、锻造台)、网格图案、材料,以及产物和数量。
3.用正确的格式编写
数据包的话,每个配方一个 JSON 文件,放在
data/<namespace>/recipe/中(1.21 之前是recipes/)。插件的话,用带NamespacedKey的ShapedRecipe或ShapelessRecipe,并通过Bukkit.addRecipe添加。4.决定是否显示在配方书中
配方一加载就能合成。要让它们显示在配方书中,需要用进度解锁(数据包)或用
player.discoverRecipe(key)解锁(插件)。5.安装
数据包:放进
<world>/datapacks/,然后执行/reload。插件:把 .jar 放进plugins/,然后重启。6.合成每一个配方
把材料放进工作台(或熔炉),检查产物,也要试试那些不应该生效的错误摆法。
数据包还是插件
| 功能 | 数据包 | 插件 |
|---|---|---|
| 运行于 | 原版、单人游戏、任何服务器 | Spigot、Paper 及其分支 |
| 材料 | 物品或物品标签 | 物品、标签,或带名称、描述、数据的精确物品 |
| 产物 | 任何物品,从 1.20.5 起可带组件 | 任何物品,包括你插件中的自定义物品 |
| 条件 | 合成时没有条件 | 通过事件实现权限、世界、冷却等条件 |
JSON 格式在不同版本之间有变化
1.21.4 数据包中的有序配方是这样的:{"type": "minecraft:crafting_shaped", "pattern": ["GGG", "GHG", "GGG"], "key": {"G": "minecraft:gold_ingot", "H": "minecraft:heart_of_the_sea"}, "result": {"id": "minecraft:totem_of_undying", "count": 1}}。
旧版本的写法不同:1.21.2 之前,每个键都是一个对象,例如 {"item": "minecraft:gold_ingot"};1.20.5 之前,产物用的是 "item" 而不是 "id"。从其他版本的教程里复制配方,是配方无法加载最常见的原因。写明你的版本,Codexe 就会使用该版本要求的格式和文件夹名称。
描述示例
“一个 Minecraft 1.21.4 数据包,命名空间为 extras。有序:上排 3 个皮革,中排线、铁、线 = 鞍。无序:1 个白色羊毛 = 4 根线。熔炉:腐肉 = 皮革,0.1 经验。切石机:1 个石头 = 4 个石砖。再加一个进度,在玩家捡起皮革时在配方书中解锁所有这些配方。”
Codexe 在把数据包标记为就绪之前,会先把它加载到真实的 Minecraft 服务器上,所以 JSON 或文件夹错误会被发现并修复。之后用“立即试用”,你就可以加入装有该数据包的服务器,亲手合成每个配方。
常见问题
数据包配方能要求改过名的物品或自定义物品吗?
不能:数据包的材料只匹配物品类型或物品标签,不看名称或数据。这种需求请用插件配合 RecipeChoice.ExactChoice。
能删除原版配方吗?
能。数据包可以替换 minecraft 命名空间中的原版配方文件,插件可以用 Bukkit.removeRecipe 删除它。
为什么我的配方没有显示在配方书中?
它还没有为该玩家解锁。在合成网格里照样能合成;用进度或 discoverRecipe 解锁后就会显示。
制作你的配方
这条提示词打开后即可直接发送:
“一个 Minecraft 1.21.4 数据包,命名空间为 extras:鞍的有序配方(上排 3 个皮革,中排线、铁、线),无序配方 1 个白色羊毛 = 4 根线,熔炉配方腐肉 = 皮革,切石机配方 1 个石头 = 4 个石砖,再加一个在玩家捡起皮革时解锁全部配方的进度。”
用 Codexe 生成这个