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 等与外部模组相关的开关