配置项
基本信息
| 属性 | 值 |
|---|---|
| 配置文件类 | ConfigurationHandler(ConfigurationHandler.java:11) |
| 配置文件位置 | Forge 建议路径 config/IC2NuclearControl.cfg(由 event.getSuggestedConfigurationFile() 决定,IC2NuclearControl.java:186) |
| 配置分类 | 全部位于 Configuration.CATEGORY_GENERAL(默认分类) |
| 活跃配置项数 | 9 |
| 已注释配置项数 | 3 |
| 加载时机 | preInit(IC2NuclearControl.java:184-186) |
| 热重载 | 监听 ConfigChangedEvent.OnConfigChangedEvent,重新加载全部配置(ConfigurationHandler.java:70-73) |
| 游戏内配置界面 | GuiFactory → ConfigGui(@Mod(guiFactory = ...),IC2NuclearControl.java:62;gui/ConfigGui.java:10-12) |
全部配置项
| 配置键 | 类型 | 默认值 | 赋值目标 | 引用 |
|---|---|---|---|---|
alarmRange |
int | 64 | IC2NuclearControl.instance.alarmRange |
ConfigurationHandler.java:24-25 |
maxAlarmRange |
int | 128 | IC2NuclearControl.instance.maxAlarmRange |
ConfigurationHandler.java:26-27 |
allowedAlarms |
String | default,sci-fi,factorio-rocket-silo |
IC2NuclearControl.instance.allowedAlarms |
ConfigurationHandler.java:28-30 |
remoteThermalMonitorEnergyConsumption |
int | 1 | IC2NuclearControl.instance.remoteThermalMonitorEnergyConsumption |
ConfigurationHandler.java:31-32 |
infoPanelRefreshPeriod |
int | 20 | IC2NuclearControl.instance.screenRefreshPeriod |
ConfigurationHandler.java:33-34 |
sensorDataRefreshPeriod |
int | 4 | IC2NuclearControl.instance.dataRefreshPeriod |
ConfigurationHandler.java:35-39 |
rangeTriggerRefreshPeriod |
int | 20 | IC2NuclearControl.instance.rangeTriggerRefreshPeriod |
ConfigurationHandler.java:40-41 |
SMPMaxAlarmRange |
int | 256 | IC2NuclearControl.instance.SMPMaxAlarmRange |
ConfigurationHandler.java:42-43 |
recipes |
String | normal |
IC2NuclearControl.instance.recipes |
ConfigurationHandler.java:50-54 |
注意 infoPanelRefreshPeriod 与 screenRefreshPeriod、sensorDataRefreshPeriod 与 dataRefreshPeriod 配置键名与字段名不一致。
allowedAlarms 读取后会执行 .replaceAll(" ", "") 去除所有空格(ConfigurationHandler.java:30)。recipes 的注释写明有效输入为 normal / old / gregtech(ConfigurationHandler.java:52-54),但代码实际还接受 gregtech5、normal-force、gregtech-force(IC2NuclearControl.java:226,229,237),共 5 个分支。
各项作用
| 配置项 | 实际作用点 |
|---|---|
alarmRange |
警报器 TileEntity 构造时的默认告警半径(TileEntityHowlerAlarm.java:65),并持久化到 NBT range(TileEntityHowlerAlarm.java:270) |
maxAlarmRange |
服务端每 tick 广播 PacketAlarm 时携带的半径上限(ServerTickHandler.java:30) |
allowedAlarms |
允许的警报音名称列表,随 PacketAlarm 广播;客户端校验后填入 availableAlarms(ServerTickHandler.java:30、ClientTickHandler.java:73,77) |
remoteThermalMonitorEnergyConsumption |
远程温度监控器每 tick 耗电(TileEntityRemoteThermo.java:97,179) |
infoPanelRefreshPeriod |
信息屏刷新周期 |
sensorDataRefreshPeriod |
传感器数据刷新周期;注释明确说明「不能长于 infoPanelRefreshPeriod」(ConfigurationHandler.java:38) |
rangeTriggerRefreshPeriod |
范围触发器的 tickRate(TileEntityRangeTrigger.java:191) |
SMPMaxAlarmRange |
SMP 模式下的最大告警范围 |
recipes |
决定加载哪一套合成配方,见配方组 |
已注释的配置项
以下 3 项在源码中处于注释状态,不参与运行:
| 配置键 | 默认值(注释中) | 引用 |
|---|---|---|
isHttpSensorAvailableClient |
false | ConfigurationHandler.java:44-45 |
isHttpSensorAvailableServer |
true | ConfigurationHandler.java:46-47 |
httpSensorKey |
UUID.randomUUID() |
ConfigurationHandler.java:48-49 |
对应字段声明同样被注释(IC2NuclearControl.java:113-114)。这三项原本用于控制「网页升级」的配方下发与鉴权,现已停用 —— 详见升级件中的说明。
错误处理
配置加载整体包在 try { ... } catch (Exception e) 中,异常时记录日志 "Mod has a problem loading it's configuration"(ConfigurationHandler.java:55-57)。finally 块在 configuration.hasChanged() 为真时写盘(ConfigurationHandler.java:58-60)—— 因此即使某个键格式错误导致中途抛出,已成功读取的键仍会保存。