Recipe Crafter

Recipe Crafter

添加了一个配方合成台方块,用于可视化制作Minecraft配方,并可保存到可编辑的json文件!

KubeJS

配方工坊 (Recipe Crafter)

这个模组让整合包作者和地图制作者能够可视化地在工作台方块内编写 Minecraft 配方——无需 KubeJS、数据包 JSON 或外部工具。配方会写入一个可手动编辑的配置文件,并立即生效。


概述

放置一个 配方工坊 方块,打开它,通过将物品放入熟悉的工作台格子里来构建配方。从下拉菜单中选择配方类型,设置产物,填写ID,然后点击 保存——配方会被追加到 config/recipecrafter/recipes.json5 并立即可用于合成(无需重启)。你还可以将生成的 JSON 导出到剪贴板,用于数据包/KubeJS,或者 加载 并编辑游戏中已有的配方。


配方工坊方块

  • 一个独立的方块和物品(recipecrafter:recipe_crafter),带有自定义的Blockbench模型。
  • 仅创造模式: 不附带合成配方;出现在 红石 创造模式标签页中,位于工作台之后。
  • 方块实体物品栏(13个槽位)在打开/关闭及世界重载后保留其内容,破坏时会像箱子一样散落物品。

支持的配方类型

从下拉菜单选择;GUI会切换到对应的原版工作台纹理和对应布局:

类型 原版配方 布局
工作台 crafting_shaped / crafting_shapeless 3×3 网格 + 产物
熔炉 smelting 单个输入 + 产物
高炉 blasting 单个输入 + 产物
烟熏炉 smoking 单个输入 + 产物
营火 campfire_cooking 单个输入 + 产物(烟熏炉面板)
切石机 stonecutting 单个输入 + 产物
锻造台 smithing_transform 模板 + 基底 + 附加 + 产物
  • 无序 开关仅适用于工作台配方(其他类型隐藏)。
  • 有序 合成会自动计算最小图案边界框和紧凑的键位映射(因此角落的1×1物品会变成1×1配方,而非3×3)。
  • 烹饪 配方会记录 烧炼时间(提供合理的每类型默认值:200 / 100 / 600 游戏刻)和 经验值。
  • 切石机 配方带有产物 数量。
  • 锻造 配方需要全部三个部分(模板、基底、附加)。

编辑器GUI

左侧面板

  • 类型下拉菜单 — 切换配方类型;面板纹理和槽位会实时更新。
  • 无序复选框 — 仅工作台配方可用。
  • 编辑输入框 + “编辑”按钮 — 输入配方ID(命名空间:路径)来将已注册的配方加载回网格中进行修改。
  • “加载配方”按钮 — 查找与当前内容匹配的配方。

中间

  • 工作台网格/输入位和一个你可以将产物拖入的 产物预览槽。

右侧

  • 完成 — 打开确认界面。

确认 / 保存界面

通过 完成 打开。字段:

  • 配方ID — 预填为 recipecrafter:<产物物品>;可编辑。
  • 组 — 可选;占位提示 + 从游戏中已有的组进行 Tab自动填充。
  • 类别 — 仅工作台/烹饪配方显示(即使用该字段的类型);提供有效的原版类别并支持Tab自动填充。
  • 烧炼时间(游戏刻) 和 经验值 — 仅烹饪配方显示。

操作:

  • 保存 — 将配方写入 recipes.json5,刷新配方,并将 ID复制到剪贴板。
  • 导出到剪贴板 — 生成配方JSON并复制(不保存)。
  • 取消 — 返回编辑器并保留所有内容。

成功 保存 或 导出 后,工坊会自动清空(物品返还给你,类型重置),以便开始下一个配方。取消则不会改动任何内容。

便利性优化:确认按钮在ID填好且配方有效前呈灰色,界面字段在打开时会滑入并淡入。


加载与查询已有配方

  • 按ID编辑 会将已注册配方分解回工坊网格中 — 支持有序、无序、所有烹饪类型、切石机和锻造转化配方。
  • 查询 会搜索与当前内容匹配的配方:
    • 如果产物槽有物品 → 返回所有产出该物品的配方。
    • 否则,如果网格已填满 → 返回第一个匹配的工作台配方。
    • 最多返回 20条匹配项,显示在可滚动列表中,每条都带有ID、类型和 复制ID / 复制JSON 按钮。

配置文件:recipes.json5

位于 config/recipecrafter/recipes.json5。

  • 可随时手动编辑。每条目都是普通的原版配方JSON,附加了唯一的 "id"。
  • 宽松解析: 支持 // 注释和尾逗号。
  • 保留注释和格式的保存: 新配方会被插入到数组中,而非重写整个文件,因此你的注释和手动格式在每次保存后都会保留。
  • 手动编辑后,使用 /recipecrafter reload(或重新启动)来应用更改。

结构示例:

{
  "recipes": [
    { "id": "recipecrafter:my_recipe", "type": "minecraft:crafting_shaped", ... }
  ]
}