配置项 ModConfig
基本信息
| 属性 | 值 |
|---|---|
| 实现类 | common/data/config/ModConfig.java |
| 配置文件 | ./config/gadomancy.cfg(Gadomancy.java:57) |
| 加载时机 | FML onConstruct 阶段(Gadomancy.java:54-59) |
| 声明字段数 | 12 |
| 已赋值字段数 | 12(无死配置项) |
字段完整性核验
对 ModConfig 逐字段比对「声明」与「从配置赋值」两处:
| 字段 | 声明行 | 赋值行 | 外部读取处数 |
|---|---|---|---|
entityNoClipItemDatawatcherMasterId |
25 | 68 | 7 |
entityNoClipItemDatawatcherFixedId |
28 | 75 | 6 |
entityAuraCoreDatawatcherAspectsId |
31 | 83 | 4 |
golemDatawatcherId |
34 | 91 | 4 |
dimOuterId |
37 | 95 | 21 |
blacklistAuraEffects |
40 | 147 | 1 |
doLightCalculations |
42 | 102 | 1 |
maxMazeCount |
43 | 107 | 1 |
renderParticleDistance |
44 | 130 | 2 |
enableAdditionalNodeTypes |
46 | 137 | 6 |
ancientStoneRecipes |
49 | 116 | 2 |
eldritchdecoblocks |
52 | 123 | 1 |
12 个声明字段全部在 loadFromConfig() 中被赋值,且每个都至少有 1 处外部读取——不存在「声明却从未赋值」或「已赋值却零读者」的死配置项。
配置项一览
entities 分类
| 键名 | 字段 | 类型 | 默认 | 范围 | 说明 |
|---|---|---|---|---|---|
itemNoClipDatawatcherMasterId |
entityNoClipItemDatawatcherMasterId |
int | 19 | 0–31 | 穿透物品实体的「主坐标」Datawatcher ID |
itemNoClipDatawatcherFixId |
entityNoClipItemDatawatcherFixedId |
int | 20 | 0–31 | 穿透物品实体的「固定坐标」Datawatcher ID |
auraCoreDatawatcherAuraId |
entityAuraCoreDatawatcherAspectsId |
int | 21 | 0–31 | 灵气核心实体的当前要素 Datawatcher ID |
前两项的说明文字以「Do not edit unless you know what are you doing!」开头(ModConfig.java:74、81、89)。
golem 分类
| 键名 | 字段 | 类型 | 默认 | 范围 |
|---|---|---|---|---|
datawatcherId |
golemDatawatcherId |
int | 29 | 0–31 |
说明同为「Do not edit unless you know what are you doing!」(ModConfig.java:92)。
dimension 分类
| 键名 | 字段 | 类型 | 默认 | 范围 | 说明 |
|---|---|---|---|---|---|
dimOuterId |
dimOuterId |
int | -73 | Integer.MIN_VALUE–MAX_VALUE |
经节点操纵器进入异界迷宫的维度 ID |
calculateEldritchLight |
doLightCalculations |
boolean | true | — | TRUE = 计算异界迷宫光照;FALSE = 不计算但有光照 bug。计算耗时约 2 秒,可在进入迷宫时观察到 |
maxMazeCount |
maxMazeCount |
int | -1 | -1–MAX_VALUE |
同时存在的异界迷宫数量上限(-1 = 无限)。1 个迷宫 = 1 名玩家;玩家完成后迷宫自行关闭并传送其离开 |
skyblock 分类
| 键名 | 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
ancientStoneRecipes |
ancientStoneRecipes |
boolean | false | TRUE = 加入远古石与远古石基座的配方(对空岛 / 天空块包有用,可用来造节点操纵器换取更多始源珍珠)。客户端与服务端都必须改 |
decorative 分类
| 键名 | 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
eldritchdecoblocks |
eldritchdecoblocks |
boolean | true | false = 移除这些异界装饰方块的配方。客户端与服务端都必须改 |
general 分类
| 键名 | 字段 | 类型 | 默认 | 范围 | 说明 |
|---|---|---|---|---|---|
particleRenderDistance |
renderParticleDistance |
int | 100 | 5–1000 | 玩家需距粒子源头多近才能看到它产生的粒子 |
enableAdditionalNodeTypes |
enableAdditionalNodeTypes |
boolean | true | — | 启用 Gadomancy 的自定义节点类型。可能解决某些兼容性问题(例如 WitchingGadgets)。客户端与服务端都必须改;仅在遇到特定 mod 功能「只有与 Gadomancy 同装时才失效」时才更改 |
auraPylonBlacklist |
blacklistAuraEffects |
String→String[] | “”(空串) | — | 逗号分隔的要素标签列表(如 aura,aer),列出的要素不会在灵气塔中生效/可获得。留空表示不屏蔽任何要素 |
enableAdditionalNodeTypes 的说明是本 mod 配置中唯一提到其他 mod 名字的地方(提到 WitchingGadgets),但那是作为兼容性问题的举例,不是对 Witchery 或 Witchery 系 mod 的依赖。Gadomancy 全仓对 witchery 的引用数为 0。
potions / enchantments 分类(自动生成)
这两类不是硬编码的固定键,而是反射自动生成的:
for (Field field : RegisteredPotions.class.getFields()) {
if (Potion.class.isAssignableFrom(field.getType())) {
ModConfig.loadPotionId(field.getType().getSimpleName());
}
}
(RegisteredPotions.java:39-45,附魔同理见 RegisteredEnchantments.java:26-32)
| 分类 | 自动生成的键数 | 键名格式 | 特殊值 |
|---|---|---|---|
potions |
5 | 药水类简单名,如 PotionMiningLuck |
-1 = 自动寻找最小空闲 ID |
enchantments |
1 | 附魔类简单名 EnchantmentRevealer |
-1 = 自动寻找最小空闲 ID |
配置分类注释(ModConfig.java:149-154)明确:出现药水 ID 冲突时用这两类,填 -1 则自动找最小空闲 ID。
赋值与回退规则
loadId 对配置值做了钳位(ModConfig.java:179-184):
Property prop = ModConfig.config.get(category, name, -1);
prop.setLanguageKey(name);
int result = prop.getInt(-1);
return result < -1 ? -1 : result;
即小于 -1 的值被归一化为 -1(自动分配)。
药水 ID 若超出 Potion.potionTypes 数组长度会扩容数组并打印警告;若与其他药水冲突则直接抛 RuntimeException(RegisteredPotions.java:74-92),提示用户自行改配置。ID 大于 127 也会告警(RegisteredPotions.java:64-72)。
数值
| 数值名 | 值 |
|---|---|
| 硬编码配置字段数 | 12 |
| 声明未被赋值字段数 | 0 |
| 已赋值但零读者字段数 | 0 |
| 自动生成的药水 ID 条目 | 5 |
| 自动生成的附魔 ID 条目 | 1 |
| 配置分类数 | 7(entities / golem / dimension / skyblock / decorative / general / potions+enchantments) |
| 维度 ID 默认值 | -73 |
交互
| 触发 | 行为 |
|---|---|
| 模组加载 | 在 FML construct 阶段读取 gadomancy.cfg |
| 分类缺失 | 自动创建并写入默认值 |
| ID 冲突 | 药水抛 RuntimeException;附魔抛 RuntimeException(RegisteredEnchantments.java:48-52) |