Modules.cfg 配置
本 mod 使用 Mantle Pulsar 框架组织代码,每个功能是一个独立的「模块」(Pulse),可在配置文件里单独开关。
- 配置文件:
config/iguanatweakstconstruct/Modules.cfg - 加载类:
iguanaman.iguanatweakstconstruct.PulsarCFG
加载机制
PulsarCFG 是对 Mantle 自带 mantle.pulsar.config.IConfiguration 的重新实现,注释说明了原因:// Reimplementation of mantle.pulsar.config because static config。
每个模块的开关通过模块 ID 作为键:
public boolean isModuleEnabled(PulseMeta meta) {
return config.get(description, meta.getId(), meta.isEnabled(), meta.getDescription())
.getBoolean(meta.isEnabled());
}
- 第二个参数
description是配置中的分类名(Pulse 上@Pulse(description = ...)的值) - 键为模块 ID(
Reference.PULSE_*) - 默认值与
meta.isEnabled()一致——即@Pulse(defaultEnable = ...)的注解值
重要:类的文档字符串明确警告不要与主配置共用文件:
Do NOT make this the same as the overall mod configuration; it will clobber it!
因此 Modules.cfg 与主配置 iguanatweakstconstruct.cfg 是两个独立文件。
10 个模块
模块 ID 常量全部定义在 reference/Reference.java。
| 模块 ID | 描述 | 默认 | 主要内容 |
|---|---|---|---|
ToolLeveling |
Leveling Module | 开 | 工具等级系统、随机奖励、挖掘等级提升 |
HarvestLevelTweaks |
Harvest Level Tweak Module | 开 | 挖掘等级系统、材料重平衡 |
ToolPartReplacing |
(部件替换) | 开 | 工具部件替换 |
MobHeads |
(生物头颅) | 开 | 生物头颅、生物头颅掉落 |
Tweaks |
Tweak Module | 开 | 原版工具削弱、微调修饰符 |
Items |
(物品模块) | 开 | 黏土桶 系列、外部流体黏土桶 |
Restrictions |
(限制模块) | 开 | 工具部件限制 |
WorldGen |
This module takes care of additional awesome dungeon loot. | 开 | 战利品注入 等 6 处 |
Debug |
(调试) | 开 | /igdebug 指令 |
MultipartCompat |
(多方块兼容) | — | FMP / Oredict Crating 兼容(modcompat/fmp) |
Override |
This module allows to override about any values relevant for TConstruct or IguanaTinkerTweaks. | 关 | 覆盖模块 |
Override 是唯一 @Pulse(defaultEnable = false) 的模块。MultipartCompat 标注中未见 defaultEnable 说明,走 Mantle 默认值。
耦合关系
| 模块 | 依赖 |
|---|---|
ToolLeveling |
依赖 TConstruct(Reference.TCON_MOD_ID)。指令 /leveluptool、/toolxp 只在 ToolLeveling 加载时注册 |
HarvestLevelTweaks |
override 的 MaterialOverride / BlockOverride 依赖它先跑 |
Override |
在 FMLPostInitializationEvent 执行,必须在所有 mod 注册完材料后 |
WorldGen |
需要 HarvestLevelTweaks 的 HarvestLevels 常量(编译期依赖,运行时不做守卫) |
MobHeads |
黏土岩浆桶 的 1/1000 彩蛋用 pulsar.isPulseLoaded(PULSE_MOBHEADS) 守卫 |
重新加载
flush() 只在 config.hasChanged() 时 save(),因此游戏运行时编辑 Modules.cfg 会在下次 Pulsar 刷写时落盘。修改模块开关需要重启游戏(或至少重载世界)才生效。