-
Notifications
You must be signed in to change notification settings - Fork 0
Attachment Modules
附属模块是在同一台 MMCE 机器上声明额外多方块结构的机制。主结构保留原生顶层 parts,其保留 ID 为 main;额外结构写入顶层 modules 数组。
{
"registryname": "distillation_tower",
"localizedname": "蒸馏塔",
"parts": [
{ "x": 0, "y": -1, "z": 0, "elements": ["minecraft:iron_block"] }
],
"modules": [
{
"id": "cooling_compressor",
"parts": [
{ "x": 3, "y": 0, "z": 0, "elements": ["minecraft:packed_ice"] }
]
}
]
}不要在 modules 中再声明一个 main。模块坐标与主结构完全共用同一个控制器原点和旋转规则。
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id |
string | 无 | 机器内唯一、区分大小写;不能是 main
|
parts |
array | 无 | 与原生 MMCE parts 条目格式相同 |
depends-on |
string[] | ["main"] |
所有依赖都生效时,本模块才可能生效;[] 表示平行模块 |
conflicts-with |
string[] | [] |
任一冲突模块也匹配时,冲突双方均不生效 |
as-upgrade |
boolean | true |
生效时是否提供一个与模块 ID 同名的 MMCE 升级 |
加载时会拒绝空 ID、重复 ID、自依赖、自冲突、未知引用和循环依赖。建议让互斥双方都写明 conflicts-with,便于维护,尽管运行时按双向冲突处理。
每次 MMCE 对主结构执行结构检测时,本模组也在同一轮检测附属模块。只有主机器已识别且 main 成型后,附属模块才会参与当前机器。
检测顺序:
- 检查每个模块的有效
parts是否匹配世界方块。 - 解析父模块链;直接和间接依赖必须全部生效。
- 处理冲突;相互冲突且都匹配的模块会同时关闭。
- 把最终生效模块中的仓室、总线等模块化组件加入机器,并同步可变色外观。
- 模块状态变化后重新触发配方搜索。
父模块拥有重叠坐标的最终定义权。若子模块在同一坐标声明了不同方块,该子模块位置视作空气/无效定义,以父模块为准;该规则会递归应用到全部祖先,并同时用于结构匹配、组件收集和 JEI 预览。
"modules": [
{
"id": "cooling",
"parts": [
{ "x": 3, "y": 0, "z": 0, "elements": ["minecraft:packed_ice"] }
]
},
{
"id": "spacetime_pipe",
"depends-on": ["cooling"],
"conflicts-with": ["low_pressure_pipe"],
"parts": [
{ "x": 4, "y": 0, "z": 0, "elements": ["minecraft:diamond_block"] }
]
},
{
"id": "low_pressure_pipe",
"conflicts-with": ["spacetime_pipe"],
"parts": [
{ "x": -3, "y": 0, "z": 0, "elements": ["minecraft:gold_block"] }
]
},
{
"id": "alternate_shell",
"depends-on": [],
"as-upgrade": false,
"parts": [
{ "x": 0, "y": -3, "z": 0, "elements": ["minecraft:glass"] }
]
}
]拥有模块的机器会在原 MMCE 预览右下角增加:
- 模块切换按钮:按
main、随后按 JSON 声明顺序循环模块页;tooltip 显示当前模块。 - 与父模块合并展示按钮:当前页存在父模块时显示在切换按钮左侧,默认关闭。开启后展示当前模块及所有祖先,直到依赖链根部。
单模块页仅保留主控制器作为定位参照,其余主结构方块隐藏。预览反映定义和父子覆盖规则,不表示世界中的模块当前已经生效。
工具继承 MMCE 原版选择工具,并与原版及其他兼容选择工具共享玩家选区。
- 创造模式并具有管理员权限。
- 右键方块选择/取消选择,观察与原版一致的高亮。
- 保证主机器已经形成;若要继续制作模块 2,先让已有模块 1 也实际生效。
- 选中待新增方块。选区可以包含部分已形成方块。
- 手持工具潜行右键控制器。
工具会从选区中扣除当前已形成结构的全部坐标,包括 main 和所有当前生效附属模块,只导出剩余方块。结果是一个可直接粘贴进 modules 数组的模块对象,同时复制到剪贴板并保存临时 JSON。
若控制器未识别机器,则回退为 MMCE 原工具行为,导出完整结构 JSON。若扣除后为空,会明确提示,而不会生成空模块。
导出的独立模块对象文件不能长期留在 MMCE machinery 加载目录中;粘贴进正式机器 JSON 后请移走或删除临时文件。
模块默认同时作为同 ID 升级;更精确的配方条件请使用 CraftTweaker API 中的 withModule/withoutModule。
MMCE Complement 1.3.0 · GitHub · CurseForge · Issues
MMCE Complement 1.3.0
机制与组件
整合包开发
Language