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 刷写时落盘。修改模块开关需要重启游戏(或至少重载世界)才生效。