配置文件(UniversalSingularities.cfg)

基本信息

属性 值
文件路径 ./config/UniversalSingularities.cfg(CommonProxy.java:721-722)
框架 Forge 原生 net.minecraftforge.common.config.Configuration
加载时机 CommonProxy 构造函数内,即 FML 实例化 proxy 时,早于任何 @Mod.EventHandler
默认 category Configuration.CATEGORY_GENERAL

加载流程的副作用

配置读取发生在构造函数里,并且直接决定注册哪些物品(CommonProxy.java:725-742):

universalSingularities.forEach(us -> {
    if (config.get(us.name, "enabled", true).getBoolean()) {        // 分组级开关,默认 true
        for (int i = 0; i < us.singularities.size(); i++) {
            if (config.get(us.name, wrapper.name, wrapper.enabled).getBoolean()) {
                allowed.get(us.name).add(wrapper.name);              // 进白名单集合
            }
        }
        singularities.add(new UniversalSingularityItem(us.name, us.singularities));
    }
});

关键语义(易错):

  • 分组级 enabled=false → 该组物品根本不注册(GameRegistry.registerItem 不会被调用),meta 全部消失。
  • 单项 enabled=false → 物品照常注册、meta 照常存在(UniversalSingularityItem 拿到的是未过滤的完整 list),只是不生成压缩配方。
  • allowed 是 Map<分组名, Set<变体名>>,只用于配方与 NEI 隐藏,不影响物品本身。

General 段选项

键 类型 默认值 作用
hideDisabledSingularitiesInNei boolean true 且仅当 Loader.isModLoaded("NotEnoughItems") 为真时才生效(&& 短路,:723-724);为 false 时禁用项会完整显示在 NEI 里但无配方
coalSingularityEasterEgg boolean true 控制煤炭奇点是否注册为燃料(:743-744)

分组级选项

每个分组下都有一个名为 enabled 的布尔项,共 17 个——源码 CommonProxy 构造函数中 Arrays.asList(...) 声明了 17 个 UniversalSingularity,每个对应一个配置 section(general、电路等按来源 mod 分组)。

默认全部为 true,因此开箱默认注册 17 个物品,合计 105 个 meta 变体。

分组名(= 配置 section) 变体数
vanilla 4
general 33
bigReactors 5
draconicEvolution 2
enderIO 8
extraPlanets 5
extraTiC 2
extraUtilities 1
utilitiesinexcess 1
mekanism 2
metallurgy 10
redstoneArsenal 1
tinkersConstruct 7
rubber 6
toxic 1
circuit 10
circuit2 7
合计 105

变体级选项

每个分组 section 下有该组全部变体名作为键,默认值取 UniversalSingularityWrapper.enabled 字段。

enabled 字段的来源有两条路径(UniversalSingularityWrapper 有两个构造函数):

构造函数 enabled 取值
5 参(无 enabled) 恒为 true(:21)
6 参(显式传 enabled) 传入值

实测统计:105 个变体中 80 个默认关闭、25 个默认开启。默认开启的仅有:

分组 开启的变体
vanilla water
general magnesium
rubber 全部 6 个
toxic contaminated
circuit 全部 10 个
circuit2 uev、uiv、umv、uxv、max、computronium(不含 erv)

这意味着开箱即用状态下大部分奇点在 NEI 中被隐藏且无法获得,需要玩家手动在配置里开启对应 mod 的分组与变体。

写回

if (config.hasChanged()) config.save();(:745)。构造时即会写盘一次,把所有分组/变体键刷进 cfg 文件。

限制

  • 配置在构造函数中读取,意味着无法通过 /reload 或配置 GUI 热重载;改完必须重启游戏。
  • 不使用 @Config(GTNHLib)框架,也没有 in-game 配置 GUI。

相关条目