配置总览
基本信息
| 属性 | 值 |
|---|---|
| 配置文件 | AWWayofTime.cfg |
| 创建位置 | BloodMagicConfiguration.init(File),AlchemicalWizardry.java:644 |
| 配置文件 API | net.minecraftforge.common.config.Configuration(Forge 原版) |
| 配置文件类 | WayofTime.alchemicalWizardry.BloodMagicConfiguration(841 行) |
| 配置 GUI | WayofTime.alchemicalWizardry.client.gui.ConfigGuiFactory(@Mod(guiFactory=...)) |
config.get(...) 调用数 |
226 |
| 被配置赋值的字段数 | 213 |
| 死配置字段 | 0 |
创建代码(AlchemicalWizardry.java:644):
BloodMagicConfiguration.init(new File(event.getModConfigurationDirectory(), "AWWayofTime.cfg"));
syncConfig() 读取全部配置;postInit 额外调用 3 个后处理方法:loadBlacklist()、blacklistRituals()、loadCustomLPValues()(AlchemicalWizardry.java:3343-3345)。
18 个配置分类
| 分类 | get() 次数 |
说明 |
|---|---|---|
lpCosts |
56 | 仪式的 LP 与 tick 成本(36 仪式 + 变体) |
Ritual Blacklist |
36 | 36 个仪式的逐条禁用开关 |
energy items |
33 | 物品的能量抽取/消耗速率 |
Alchemy Potion Blacklist |
26 | 炼金药水的逐条禁用开关 |
Potion ID |
17 | 17 个自定义药水的 ID(100–116) |
tempDemonConfigs |
15 | 恶魔传送门的临时/维度配置 |
WimpySettings |
8 | 「降低难度」类开关 |
Dungeon Loot Chances |
7 | 7 种炼金消耗品的地牢掉落率 |
sacrifice |
6 | 献祭相关 |
TestIncenseSettings |
5 | 香的测试设置 |
ClientSettings |
5 | 客户端设置 |
Ritual Blacklist.Weak |
4 | 弱化版仪式黑名单 |
meteor |
1 | 陨石行为 |
defaultMeteorCost |
1 | 陨石默认 LP 成本 |
defaultMeteorBlock |
1 | 陨石默认填充方块 |
oreCrushing |
1 | 矿石粉碎 |
Teleposer Blacklist |
1 | 传送器可传送方块黑名单 |
sacrifice.custom values |
1 | 献祭自定义值 |
wellOfSufferingBlackList |
1 | 苦难之井的实体黑名单 |
category |
1 | 内部辅助(非配置项) |
「Ritual Blacklist 36」与「仪式总数 36」一一对应,见 仪式目录。
死配置审计:0 个
本条目对配置字段做了声明 → 赋值 → 读取方三段核对(方法:脚本比对 BloodMagicConfiguration.syncConfig() 中 AlchemicalWizardry.<field> = 的赋值行号,再在其余全部 754 个 .java 文件 + 赋值文件的其他行中检索该标识符的读取):
| 阶段 | 数量 |
|---|---|
| 由配置赋值的字段 | 213 |
| 在赋值点之外有读取方 | 213 |
| 死配置(无任何读取方) | 0 |
首轮审计曾把 24 个字段误判为「无读取方」,原因是这些字段在 AlchemicalWizardry 类内以裸字段名引用(不带 AlchemicalWizardry. 前缀),例如 customPotionDrowningID 只在 AlchemicalWizardry.java 内部使用。补上「同类裸引用」规则后误判清零。本模组的配置字段无死配置。
关键配置项
Potion ID(17 个,可配置)
BloodMagicConfiguration.java:86-102,ID 范围 100–116:
| ID | 字段 | ID | 字段 |
|---|---|---|---|
| 100 | customPotionDrowningID |
109 | customPotionFireFuseID |
| 101 | customPotionBoostID |
110 | customPotionPlanarBindingID |
| 102 | customPotionProjProtID |
111 | customPotionSoulFrayID |
| 103 | customPotionInhibitID |
112 | customPotionSoulHardenID |
| 104 | customPotionFlightID |
113 | customPotionDeafID |
| 105 | customPotionReciprocationID |
114 | customPotionFeatherFallID |
| 106 | customPotionFlameCloakID |
115 | customPotionDemonCloakID |
| 107 | customPotionIceCloakID |
116 | customPotionAmphibianID |
| 108 | customPotionHeavyHeartID |
对应 preInit 中把 Potion.potionTypes 扩容到 256 的反射操作(AlchemicalWizardry.java:648-667)。
陨石(meteor)
| 配置项 | 默认值 | 位置 |
|---|---|---|
doMeteorsDestroyBlocks |
true |
BloodMagicConfiguration.java:104 |
defaultMeteorCost |
1000000(范围 0 – Integer.MAX_VALUE) |
:106-112 |
defaultMeteorBlock |
""(回退 minecraft:stone:0) |
:113-119 |
allowedCrushedOres |
数组 | :120-124 |
defaultMeteorBlock 的注释说明其同时用作「矿石列表为空时的回退值」,格式为 modId:itemName:meta。
传送器黑名单
Teleposer Blacklist 分类(BloodMagicConfiguration.java 的 buildTeleposerBlacklist(),:777-)逐行解析 modid:blockname[:meta] 格式。meta 非整数时 parseInt 的结果被捕获并回退到 0(源码注释:Also check if it's an int, if so, parse it. If not, set meta to 0 to avoid crashing.)。
静默失败的异常处理
BloodMagicConfiguration.init()(:50-69)把 config.load() + syncConfig() 包在 try/catch (Exception e) 中,失败时只写一条日志:
} catch (Exception e) {
AlchemicalWizardry.logger
.error("There has been a problem loading the configuration, go ask on the forums :p");
}
e 本身未被记录(只记录固定字符串),排障时无法从日志得知具体失败原因。finally 块仍会执行 config.save(),可能把加载失败后的半成品配置写回磁盘。
同类的静默失败还出现在 AlchemicalWizardry.generateDefaultConfig()(:728)的 catch (Exception ignored) {} —— 完全空的 catch 块,解压默认配置包失败时无任何日志。
数值
| 数值名 | 值 |
|---|---|
| 配置文件名 | AWWayofTime.cfg |
config.get() 调用数 |
226 |
| 被配置赋值的字段数 | 213 |
| 死配置字段 | 0 |
| 配置分类数 | 19(含 1 个内部辅助) |
| 最大的分类 | lpCosts(56) |
| 仪式黑名单开关 | 36(与仪式数一致) |
| 自定义药水 ID | 17(100–116) |