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