配置总览

基本信息

属性 值
配置文件 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)

相关条目