指南

如何制作自定义合成配方

更新于 2026年10月18日

自定义配方是改变生存服务器最简单的方法:合成鞍、把羊毛拆回原料、把腐肉烧成皮革。你可以用数据包添加,它在原版和单人游戏中都能用;也可以用插件添加,它能做更多事,比如要求用某个特定的自定义物品作为材料。

把这些换成你自己的配方。

用 Codexe 生成这个

分步说明

  1. 1.选择数据包还是插件

    如果配方只用普通物品,并且要在任何服务器或世界中使用,就用数据包。如果材料必须是精确的物品(带名称或标签),或者配方需要权限或其他条件,就用插件。

  2. 2.写下每个配方

    类型(有序、无序、熔炉、烟熏炉、高炉、营火、切石机、锻造台)、网格图案、材料,以及产物和数量。

  3. 3.用正确的格式编写

    数据包的话,每个配方一个 JSON 文件,放在 data/<namespace>/recipe/ 中(1.21 之前是 recipes/)。插件的话,用带 NamespacedKey 的 ShapedRecipe 或 ShapelessRecipe,并通过 Bukkit.addRecipe 添加。

  4. 4.决定是否显示在配方书中

    配方一加载就能合成。要让它们显示在配方书中,需要用进度解锁(数据包)或用 player.discoverRecipe(key) 解锁(插件)。

  5. 5.安装

    数据包:放进 <world>/datapacks/,然后执行 /reload。插件:把 .jar 放进 plugins/,然后重启。

  6. 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 生成这个
如何在 Minecraft 中制作自定义合成配方 | Codexe