
简易自定义合成(兼容所有模组)
一个Minecraft Forge模组,允许管理员在游戏中创建自己的配方——无需文件,无需JSON。配方按世界/服务器存储,并即时应用。
Easy Custom Craft
一款适用于 Minecraft Forge 1.20.1 的模组,让管理员能够在游戏中创建自己的合成配方——无需文件,无需 JSON。配方按世界/服务器存储,并即时生效。
功能特性
- 工作台 – 有序与无序合成(命令 + 3×3 图形界面)
- 烧炼 – 熔炉、高炉、烟熏炉、营火(含经验值与烧炼时间)
- 锻造台与切石机
- 标签 – 在任何地方使用
tag:…作为材料,并可创建自定义标签 - 任意模组机器(机械动力、通用机械、热力膨胀等)– 扫描所有配方类型,检测其选项,支持命令自动补全、多输入和流体——完全无需 JSON
- 支持 NBT 输出和模组物品
命令 (/ecc)
- 公开命令:
list、preview <name> - 管理员(OP)命令:
reload、remove <name>,以及create …:create craft_with_guicreate craft crafting_table shaped|shapeless …create craft furnace|blastfurnace|smoker|campfire|smithing|stonecutting …create tag <name> <values…>create modded_craft types [filter]create modded_craft <type> <name> <input[,input2,…]> <output> [count] [key=value…]
文档(高级)
值语法
每个“材料”位置接受:
| 语法 | 含义 |
|---|---|
minecraft:stick / stick |
物品(命名空间默认为 minecraft) |
tag:<ns:path> |
物品标签 → {"tag":"…"} |
empty / air |
空白合成格(仅限有序合成) |
输出位置接受具体物品(通过原版物品参数,因此支持 NBT,如 minecraft:diamond_sword{…})。仅在 modded_craft 中,key=value 的值额外接受:fluid:<ns:path>[:amount](默认量 1000)、true/false、数字、纯字符串以及逗号列表 a,b,c(→ JSON 数组)。
配方名称会被规范化为 [a-z0-9/._-](其他字符 → _)。
工作台
- 有序合成
<name> <s1>[ s2..s9] result <item> [count]- 材料先写;字面量
result表示合成网格结束。末尾的空格可省略;仅在内部空缺处使用empty/air。 - 按从左到右、从上到下填充网格;模式会被自动裁剪至其边界框。最多支持 16 种不同材料。
- 材料先写;字面量
- 无序合成
<name> <ing1>[ ing2..ing9] result <item> [count] count为可选(默认 1,最大 64)。
烧炼
<station> <name> <ingredient> <result> [experience] [cookingtime]
- 工作站及默认烧炼时间:
furnace200、blastfurnace100、smoker100、campfire600 刻。 experience默认值为0.0。输出支持数量 + NBT(Forge 对象结果)。
锻造与切石
- 锻造
<name> <template> <base> <addition> <result> [count]→minecraft:smithing_transform;三个输入均必需(1.20.1 规则)。支持输出数量/NBT。 - 切石
<name> <ingredient> <result> [count]→ 结果是纯物品 ID,因此不支持输出带 NBT(原版序列化器限制)。
标签
create tag <name> <value1> [value2…] 写入 data/easycustomcraft/tags/items/<name>.json(replace:false)。值可以是物品或 tag: 引用(嵌套为 #ns:path)。该标签可在任何地方以 tag:easycustomcraft:<name> 的形式使用。引用不存在的标签会报错(会针对实时的标签管理器进行验证)。
模组配方 (modded_craft)
探索发现
- 不带过滤器的
types→ 每行显示一个模组及其配方类型数量。 - 带过滤器的
types <filter>→ 显示匹配的类型 ID;单个匹配项会输出完整分析:输入/输出字段名称、流体使用情况以及每个检测到的选项及其观察到的值(例如heatRequirement = heated, superheated)。 - 输出后的 Tab 补全会提示所有检测到的选项键,然后是它们的值。
创建 <type> <name> <input[,…]> <output> [count] [key=value…] 构建器通过学习一个该类型的真实配方并进行编辑来工作:
- 选择该类型的一个模板配方,优先选择类型自身命名空间内的且不含
conditions的配方。 - 移除
conditions(这样你的配方永远不会继承其他模组的forge:mod_loaded依赖)。 - 用你的列表替换物品输入(保留模板中的流体输入);用你的物品替换第一个物品输出(保留副输出/流体输出)。
- 将每个
key=value覆盖应用到 JSON 上(任何顶层字段;列表通过逗号分隔)。 - 使用模组自身的
RecipeSerializer进行验证——无效配方会被模组的错误信息拒绝,永远不会写入。 - 写入并重新加载,然后报告从示例中保留的选项(例如
heatRequirement=heated),以便你可以覆盖它们。
范围与限制
- 最适合1→N 物品的机器加上标量/枚举选项;机械动力的混合风格配方通常需要**≥2 个输入或热量**。
- 模式仅从已加载的配方中学习(Forge 1.20.1 的序列化器不可内省),因此从未被任何已安装配方使用过的字段将不会被建议——但你仍然可以手动输入任意
key=value。 - 完整的类型模式会在一次遍历所有配方时构建并缓存(首次使用
types/Tab 可能需要片刻);具有超过 16 个不同取值的字符串字段将被视为自由格式。
存储与运行时
- 每个配方都是一个数据包文件,位于
<world>/datapacks/easycustomcraft/data/easycustomcraft/recipes/<name>.json。 - 每次创建/移除后,该模组会执行一次程序化的资源重载,镜像原版
/reload命令,并在首次使用时自动启用数据包——更改会即时生效,无需重启。 - 这使得配方本质上是按世界(单人游戏)或按服务器(专用服务器)的。
权限与端
- 根命令
/ecc是公开的;list/preview对所有人开放。create下的所有命令,以及reload/remove,需要权限等级 2(OP)。 - 自定义命令参数类型(
ingredient、ingredients)已使用 Forge 注册,因此命令树能正确同步。在服务端安装以获取功能,在客户端安装以获取图形界面和命令自动补全。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。