Botania 配置文件
基本信息
| 属性 |
值 |
| 处理类 |
vazkii.botania.common.core.handler.ConfigHandler |
| 文件 |
config/botania.cfg(Configuration(configFile),ConfigHandler.java:128) |
| 声明字段总数 |
62 个 public static 配置字段(ConfigHandler.java:45-125) |
| 配置键总数 |
61 个 loadProp*(...) 调用(ConfigHandler.java:136-335)+ 6 个药水 ID(:326-331) |
| 自适应配置 |
useAdaptativeConfig(默认 true),ConfigHandler.java:140-141 |
| 加载时机 |
loadConfig(File) → config.load() → load(),ConfigHandler.java:127-134 |
| 重载监听 |
FMLCommonHandler.instance().bus().register(new ChangeListener()),ConfigHandler.java:133 |
功能
ConfigHandler 是 Botania 唯一的配置类。它在 load() 中用 loadPropBool / loadPropInt / loadPropDouble / loadPropIntSet / loadPropIntArray / loadPropPotionId 六个辅助方法读取全部配置项(辅助方法实现见 ConfigHandler.java:344-410),全部写入 Configuration.CATEGORY_GENERAL,只有 6 个药水 ID 写入私有分类 CATEGORY_POTIONS = "potions"(ConfigHandler.java:42)。
ConfigAdaptor(ConfigHandler.java:141)实现"自适应配置":它按 mod 版本区间把旧版本默认值改写成新默认值,但只改未被玩家手动改过的值。对 3 个键注册了版本映射:
| 配置键 |
旧版本(0) 默认 |
新版本(238) 默认 |
来源 |
worldgen.flower.density |
16 |
2 |
ConfigHandler.java:291-292 |
worldgen.flower.patchChance |
4 |
16 |
ConfigHandler.java:299-300 |
worldgen.flower.tallChance |
0.1 |
0.05 |
ConfigHandler.java:304-305 |
数值
渲染与视觉
| 配置键 |
默认值 |
说明 |
shaders.enabled |
true |
关闭部分渲染的着色器 |
powerSystem.subtle |
false |
魔力系统粒子更克制 |
chargeAnimation.enabled |
true |
法力池充能动画 |
vanillaParticleConfig.enabled |
true |
遵循原版"粒子"设置 |
blockBreakingParticles.enabled |
true |
花草等方块的破坏粒子 |
blockBreakingParticlesTool.enabled |
true |
魔力粉碎器的破坏粒子 |
elfPortal.particles.enabled |
true |
精灵传送门粒子 |
flowerParticles.frequency |
0.75 |
世界生成魔法的粒子频率 |
flowerTextures.alt |
false |
未来哉哉的替代花朵贴图 |
pylonModel.old |
false |
使用 beta18 前的旧法阵模型 |
armorModels.enable |
true |
自定义护甲模型 |
fancySkybox.enable |
true |
Garden of Glass 的花哨天空盒 |
fancySkybox.normalWorlds |
false |
在非 GoG 世界启用花哨天空盒 |
fancySkybox.customDim |
false |
在自定义维度启用花哨天空盒 |
fancySkybox.customDimID |
HashSet<Integer> |
上一项的维度 ID 集合 |
seasonalFeatures.enabled |
true |
万圣节/圣诞节等季节特性 |
baubleRender.enabled |
true |
渲染玩家身上的饰品 |
boundBlock.wireframe.enabled |
true |
已绑定方块的线框显示 |
matrixMode.enabled |
false |
故障艺术彩蛋 |
Lexica Botania
| 配置键 |
默认值 |
说明 |
lexicon.enable.rotatingItems |
true |
花瓣/符文条目的旋转物品 |
lexicon.enable.justifiedText |
false |
文本页两端对齐 |
lexicon.render.3D |
true |
3D 渲染动画 |
quickLookup.useShift |
false |
快速查询用 Shift 代替 Ctrl |
references.enabled |
true |
花朵 tooltip 中的交叉引用 |
shaders.secondaryUnit |
7 |
分类按钮着色器的第二采样单元(GL 纹理单元) |
HUD 布局
| 配置键 |
默认值 |
说明 |
manaBar.height |
29 |
XP 栏上方法力条的像素高度 |
flightBar.height |
49 |
Flugel Tiara 飞行条高度 |
flightBarBreath.height |
59 |
显示氧气条时的飞行条高度 |
玩法开关
| 配置键 |
默认值 |
说明 |
manaSpreaders.silent |
false |
静音法力散播器 |
flower.forceCheck |
true |
花朵严格检查与池/散播器的连接 |
enderPickpocket.enabled |
true |
末影之手可偷取他人末影箱 |
fallenKanade.enabled |
true |
堕落卡那(回血),为 Blood Magic 用户准备 |
darkQuartz.enabled |
true |
烟熏石英方块,为 Thaumic Tinkerer 准备 |
manaEnchanter.enabled |
true |
魔力附魔台 |
manaFluxfield.enabled |
true |
魔力通量场(法力转 RF) |
relics.enabled |
true |
遗物系统 |
18stones.enabled |
true |
1.8 石头作为魔力炼金配方 |
19enderStuff.enabled |
true |
1.9 末影物品作为配方 |
ringOfOdin.fireResist |
true |
奥丁之环提供抗火 |
magnetRing.invert |
false |
反转磁化之环的控制方式 |
noMobSpawnOnBlocks |
true |
怪物不在方块上生成 |
showF3Debug |
true |
F3 调试信息 |
recipes.enabled |
true |
内置配方总开关 |
adaptativeConfig.enabled |
true |
自适应配置 |
thaumraftStabilizers.enabled |
true |
Botania 方块内的 Thaumcraft 注入稳定器(键名原文拼写为 thaumraftStabilizers,ConfigHandler.java:276) |
世界生成
| 配置键 |
默认值 |
说明 |
worldgen.flower.quantity |
2 |
生成的花朵群系数量 |
worldgen.flower.density |
2 |
每个花朵群系的密度 |
worldgen.flower.patchSize |
6 |
每个花朵群系的尺寸 |
worldgen.flower.patchChance |
16 |
生成花朵群系的反向几率 |
worldgen.flower.tallChance |
0.05 |
群系内生成高花的概率 |
worldgen.flower.dimensionWhitelist |
空数组 |
允许生成花朵的维度白名单(空 = 全部) |
worldgen.flower.dimensionBlacklist |
空数组 |
禁止生成花朵的维度黑名单 |
worldgen.mushroom.quantity |
40 |
地下生成的蘑菇群系数量 |
worldgen.mushroom.dimensionWhitelist |
空数组 |
蘑菇维度白名单 |
worldgen.mushroom.dimensionBlacklist |
空数组 |
蘑菇维度黑名单 |
passiveDecay.time |
72000 |
被动花枯萎成枯木丛的 tick 数(60 分钟);-1 关闭该特性 |
工具与药水
| 配置键 |
默认值 |
说明 |
harvestLevel.weightLens |
2 |
魔力透镜·重量的采集等级(3 = 钻石,2 = 铁) |
harvestLevel.boreLens |
3 |
魔力透镜·破甲的采集等级 |
wandBeam.static |
false |
魔杖射线绘制每一个爆裂位置(可能卡顿) |
6 个药水 ID(ConfigHandler.java:326-331)写入 potions 分类:SOUL_CROSS、FEATHER_FEET、EMPTINESS、BLOODTHIRST、ALLURE、CLEAR。分配逻辑在 verifyPotionArray()(ConfigHandler.java:411),当 DragonAPI 加载时用其 ID 段,否则尝试 hodgepodge,均未加载时回退到默认(ConfigHandler.java:412-414)。每个 ID 的具体数值未在本次核查中逐个确认,标记为「无法核实」。
交互
| 触发 |
行为 |
| 启动 / 服务端读取配置 |
loadConfig(File) 创建 Configuration 并调用 load()(ConfigHandler.java:127-134) |
| 玩家在游戏内改配置 |
ChangeListener 收到 ConfigChangedEvent 后重载(ConfigHandler.java:133) |
| 改完配置 |
if(config.hasChanged()) config.save(),ConfigHandler.java:333-334 与 :340-341 |
已确认的失效配置项
spreaderPositionShift 是一个声明了、也赋值了、但全代码库无任何读取方的配置项 —— 典型的死配置(复现命令):
$ grep -rn 'spreaderPositionShift' --include=*.java src/main/java
src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java:87: public static int spreaderPositionShift = 1;
src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java:240: spreaderPositionShift = loadPropInt("spreader.posShift", desc, spreaderPositionShift);
只有这两行:声明(:87)与赋值(:240),没有第三行读取它。配置文件里写入 spreader.posShift 完全无效。其描述文字(ConfigHandler.java:239)是一段玩笑话:“Do not ever touch this value if not asked to. Possible symptoms … you being trapped in a game of Sword Art Online.”,属于功能移除后遗留的彩蛋文本。
除该字段外,62 个声明字段中 60 个存在跨文件读取方(ConfigHandler.X 形式),另 1 个 useAdaptativeConfig 在同文件内被读取(ConfigHandler.java:141)。即 61/62 有效、1/62 为死配置。
相关条目
- 魔力量子系统 - 上述配置中
powerSystem.subtle、manaSpreaders.silent 等所影响的对象
- Lexica Botania - 上述配置中
lexicon.*、quickLookup.*、references.* 所影响的书籍
- 模组集成 - 上述配置中
thaumraftStabilizers.enabled、fallenKanade.enabled、darkQuartz.enabled 等与外部模组相关的开关