配置文件(supersolarpanel.cfg)

ConfigLoader 是本 mod 唯一的游戏设定来源,全部 16 个选项都在这里。配置在 preInit 阶段一次性读入静态字段,随后被四个面板的 TileEntity 构造器读取。

基本信息

属性 值
类型 配置文件(Forge Configuration,非指令)
文件 由 event.getSuggestedConfigurationFile() 决定;按 Forge 惯例为 config/supersolarpanel.cfg(modid supersolarpanel)
分类 全部 16 项都在 general 段下,无分组
加载时机 MainSSP.preInit → new ConfigLoader(event) → cfg.run(),在 config.load() 后写入静态字段,finally 中 config.save()
异常处理 整个读取包在 try/catch 中,异常被包装为 RuntimeException 重新抛出(会导致加载失败),但 config.save() 仍在 finally 中执行

关键约束:所有 16 个字段都是 public static int(32 位有符号)。 这直接限制了容量上限——见下方「数值溢出」。

完整选项表

光谱太阳能板

配置键 类型 默认值 作用
SpectralSPGenDay int 8192 白天发电率(EU/t)— 改变输出
SpectralSPGenNight int 0 夜间发电率(EU/t)— 改变输出
SpectralSPOutput int 8192 输出上限(EU/t)— 改变输出
SpectralSPStorage int 81,920,000 内储能(EU)— 仅改容量

奇异太阳能板

配置键 类型 默认值 作用
SingularSPGenDay int 32768 白天发电率(EU/t)— 改变输出
SingularSPGenNight int 0 夜间发电率(EU/t)— 改变输出
SingularSPOutput int 32768 输出上限(EU/t)— 改变输出
SingularSPStorage int 327,680,000 内储能(EU)— 仅改容量

光吸收太阳能板

配置键 类型 默认值 作用
AdminPanelGenDay int 131072 白天发电率(EU/t)— 改变输出
AdminPanelGenNight int 0 夜间发电率(EU/t)— 改变输出
AdminPanelOutput int 131072 输出上限(EU/t)— 改变输出
AdminPanelStorage int 1,310,720,000 内储能(EU)— 仅改容量

注意本组四个键的命名风格与其它三组不同:AdminPanelGenDay / AdminPanelGenNight 用了大写 P,而其它三组是小写 SPGenDay / SPGenNight(SpectralSPGenDay、SingularSPGenDay、PhotonicPanelGenDay)。AdminPanelStorage 与 AdminPanelOutput 则是全组统一大写 P。改配置文件时必须照抄原键名。

光子太阳能板

配置键 类型 默认值 作用
PhotonicPanelGenDay int 524288 白天发电率(EU/t)— 改变输出
PhotonicPanelGenNight int 0 夜间发电率(EU/t)— 改变输出
PhotonicPanelOutput int 524288 输出上限(EU/t)— 改变输出
PhotonicPanelStorage int 2,000,000,000 内储能(EU)— 仅改容量

哪些选项会改变输出

  • 12 个选项改变输出:GenDay / GenNight / Output,每个面板 3 个。
  • 4 个选项只改容量:Storage,每个面板 1 个。
  • 没有任何选项改变行为的其它方面:无难度/规则开关、无日出日落时间、无高度阈值、无损坏率、无红石开关。

数值溢出(重要限制)

ConfigLoader 全部字段为 int,而 Config.get(...).getInt(...) 读入的也是 int。Integer.MAX_VALUE = 2,147,483,647:

面板 输出 容量 容量/输出 满载续航
光谱 8192 81,920,000 10,000 tick = 500 秒 8 分 20 秒
奇异 32768 327,680,000 10,000 tick = 500 秒 8 分 20 秒
光吸收 131072 1,310,720,000 10,000 tick = 500 秒 8 分 20 秒
光子 524288 2,000,000,000 3,814.7 tick ≈ 190.7 秒 3 分 11 秒

前三级面板的容量恰好都是输出的 10000 倍(500 秒)。光子板若要维持同一比例需要 5,242,880,000,已超过 int 上限,因此默认容量被压到 2,000,000,000(约为 Integer.MAX_VALUE 的 93.1%),续航缩短到同级的 38%。

把任何 Storage 调高到 2,147,483,647 以上会溢出;调高 Output 则会让容量/输出比进一步偏离 10000 tick。

另一项关键行为:DreamCraft 下的配方抑制

MainSSP.PostInit 中全部 9 个配方都被包在:

if (!Loader.isModLoaded("dreamcraft")) { ... }

即只要 DreamCraft 已加载,本 mod 注册的 9 个配方一个都不会存在,玩家必须使用 DreamCraft 提供的替代配方。@Mod 注解的 dependencies 写的是 required-after:AdvancedSolarPanel; required-after:IC2; before:dreamcraft,与这一判断方向一致(顺序加载:Advanced Solar Panel → IC2 → 本 mod → DreamCraft)。

这意味着在本 mod 单独可玩(无 DreamCraft)时,配方齐全;整合包中装了 DreamCraft 时,本 mod 的面板与组件全部无法自制。

指令与权限

本 mod 不注册任何指令。 grep -rn "ICommand|CommandBase|addChatCommand" 在 src/main/java/ 下无匹配。ConfigLoader 也只提供读写配置文件的逻辑,不暴露 /ssp 之类的命令。

相关条目