Config
基本信息
| 属性 | 值 |
|---|---|
| 处理器 | openmodularturrets.handler.ConfigHandler |
| 配置文件 | event.getSuggestedConfigurationFile()(ModularTurrets.java:52) |
| 读取时机 | preInit 最开始,先于 Items.init() / Blocks.init()(ModularTurrets.java:51-57) |
| 配置项总数 | 约 60 个键,覆盖 9 个分类 |
| 写入 | 仅在 config.hasChanged() 时 config.save()(ConfigHandler.java:328-330) |
读取顺序至关重要:
Blocks.init()里每个炮塔是否注册、每种炮塔的爆炸抗性、底座的能量上限,全部在构造Block时读取ConfigHandler的静态字段。因此配置必须在方块注册前完成读取 ——ModularTurrets.preInit的调用顺序保证了这一点(ConfigHandler.init在Blocks.init之前 2 行)。
分类总览
| 分类 | 键数 | 内容 |
|---|---|---|
TurretBaseTierOne – TurretBaseTierFive |
15 | 各等级底座的最大储能 / 最大 IO / 爆炸抗性 |
TurretDisposable、TurretPotatoCannon、TurretMachineGun、TurretIncendiary、TurretGrenade、TurretRelativistic、TurretRocket、TurretTeleporter、TurretLaser、TurretRailgun |
10 × 6 | 每种炮塔的射程 / 射击间隔 / 伤害 / 精度 / 耗能 / 是否启用 |
upgrades |
4 | 射程 / 射速 / 精度 / 效率的每件加成 |
addons |
3 | 太阳能发电 / 红石反应堆 / 回收概率 |
Expanders |
5 | 动力扩展器各等级容量 |
miscellaneous |
12 | 告警、声音、破坏性、战斗、配方选择等 |
ModCompatibility |
5 | 跨模组集成开关与潜势转换比 |
ModCompatability |
3 | EU 支持、离线模式、EU/RF 比 |
GlobalTargetingParameters |
4 | 全局目标策略与索敌节流 |
ModCompatability拼写错误:兼容分类名在源码中没有字母i(ModCompatability),与ModCompatibility(正确拼写,用于另外 5 个键)不是同一个分类。配置文件中会出现两个相似的节名。来源:ConfigHandler.java:322-326vs:281-295。
炮塔数值
10 种炮塔的默认值见 Turret Heads。每组的键名固定为 Range、FireRateCooldown、Damage、Accuracy、PowerUsage、Enabled。
Enabled 决定注册本身:Blocks.init() 用 if (ConfigHandler.getXxxSettings().isEnabled()) 包住方块注册(Blocks.java 中 10 个 if 块)。把某炮塔的 Enabled 设为 false 等于该炮塔在世界里完全不存在:方块不注册、TileEntity 注册成为无用条目、其专属配方也不注册。
Accuracy 语义(配置原文,各组重复):“Value between 0 - 100, where 0 will miss 0% of the time over a distance of 10 blocks, subject to standard deviation.”
底座数值
| 分类 | MaxCharge | MaxIo | BlastResistance |
|---|---|---|---|
TurretBaseTierOne |
500 | 50 | 10 |
TurretBaseTierTwo |
50 000 | 100 | 10 |
TurretBaseTierThree |
150 000 | 500 | 10 |
TurretBaseTierFour |
500 000 | 1 500 | 10 |
TurretBaseTierFive |
10 000 000 | 5 000 | 10 |
来源:ConfigHandler.java:76-94。
miscellaneous 分类
| 键 | 默认 | 作用 |
|---|---|---|
warningDistance |
5 | 炮塔射程外多远开始警告玩家 |
Enable/Disable turret alarm sound. True=enabled, false=disabled |
true | 炮塔告警音开关 |
Should turret warn message be displayed? |
true | 聊天栏警告开关 |
Are turrets/turret bases breakable by anyone? |
false | 为 false 时底座调用 setBlockUnbreakable() |
Can turrets damage their trusted players when they accidentally hit them? |
true | 是否误伤受信任玩家 |
Can rockets fired by the rocket launcher turret home on targets ? |
false | 火箭是否追踪 |
Can rockets fired by the rocket launcher turret hurt the Ender Dragon? |
false | 火箭能否伤末影龙 |
Should we generate dungeon loot? |
true | 是否向地牢结构注入战利品 |
Which recipes should we do? (auto, enderio, thermalexpansion, mekanism, vanilla) |
auto |
配方处理器选择 |
Turret sound volume percentage (Between 0 - 100) |
40 | 源码中先 .getInt() 再 / 10,故实际系数为 4.0 |
Should turret bases be camouflage-able with normal blocks? |
true | 底座伪装 |
Can OPs access all turrets? |
false | OP 权限覆盖 |
来源:ConfigHandler.java:243-305。
ModCompatibility / ModCompatability 分类
| 分类 | 键 | 默认 |
|---|---|---|
ModCompatibility |
Should we enable items that integrate with Thaumcraft? |
true |
ModCompatibility |
Should we enable items that integrate with ComputerCraft/OpenComputers? |
true |
ModCompatibility |
Enable IGW Mod notification |
true |
ModCompatibility |
Potentia Addons' RF conversion ratio per 1 essentia |
500 |
ModCompatibility |
How much essentia the Potentia Addon can store |
20 |
ModCompatability |
Can turrets be powered with EU? |
true |
ModCompatability |
Enable offline mode support?(warning, makes turrets fairly unsafe) |
false |
ModCompatability |
EU to RF Ratio |
8.0 |
来源:ConfigHandler.java:281-295、:322-326。
无读取者的死配置
以下字段被写入但没有任何读取者,属于死代码:
| 字段 | 状态 | 证据 |
|---|---|---|
shouldDoComputerIntegration |
声明 + 赋值,0 处读取 | grep -rn 'shouldDoComputerIntegration' --include=*.java src/ 仅 2 处命中:字段声明(ConfigHandler.java:16)与赋值(:284) |
ModCompatibility.GT5uNHLoaded |
声明 + 赋值,0 处读取 | grep -rn 'GT5uNHLoaded' --include=*.java src/ 仅 2 处命中:声明(ModCompatibility.java:27)与赋值(:62) |
由此导致的实际缺陷(已核实):
shouldDoComputerIntegration的读者本应是 Addon - Serial Port 与ComputerRecipeHandler的开关,但RecipeHandler.java:363-364写的是ConfigHandler.shouldDoThaumcraftIntegration:if ((ModCompatibility.ComputercraftLoaded || ModCompatibility.OpenComputersLoaded) && ConfigHandler.shouldDoThaumcraftIntegration) { ComputerRecipeHandler.init(); }结果是:关掉泰拉的物品集成会连带关掉计算机集成,反之亦然;
Should we enable items that integrate with ComputerCraft/OpenComputers?这个配置项对配方完全无效。注意附加件物品本身的注册(Items.java:105)判的是ModCompatibility.ComputercraftLoaded \|\| OpenComputersLoaded,不受该错误影响。本条按源码原文记录。
ModCompatibility.java:63另有一处if (Loader.isModLoaded("gregtech"))只打日志、不赋值,与相邻的GT5uNHLoaded赋值并列存在,源码注释为 “I feel like it should still say this with GT6”。
指令
模组注册 1 条服务端指令(ModularTurrets.java:76-78,FMLServerStartingEvent):
| 指令 | 用法 | 说明 |
|---|---|---|
/omtchangeowner |
<dimension> <x> <y> <z> <new owner> |
改写指定坐标炮塔底座的主人 |
来源:CommandChangeOwner.java:19-31。参数数量必须恰为 5,否则输出用法文本。
相关条目
- Turret Heads - 各炮塔配置项的默认值
- Turret Base - 各等级底座的配置项
- Recipe System -
Which recipes should we do?的作用 - Compatibility Mods -
ModCompatibility分类的开关效果