upgrades.cfg(升级件配置)

基本信息

属性 值
文件 assets/gendustry/config/upgrades.cfg(303 行)
落地位置 <游戏目录>/config/gendustry/upgrades.cfg
加载方式 files.lst 第 3 行
cfg Upgrades 段 21 个升级件定义(:4-151)
recipes 块 8 个(:154-264)+ 1 个 BIOME OVERRIDES 块(:266-304)
文件头注释 指向 http://bdew.net/gendustry/configuration/apiary-upgrades/

结构

文件分两大部分:先是数据段 cfg Upgrades { ... },定义每个升级的 id / max / 修正器;再是配方段,用 S:gendustry:"upgrade.<name>" 引用。

数据段的 4 个键语义:

键 类型 说明
id 整数 物品伤害值,同时是 ItemApiaryUpgrade 的 meta
max 整数 同类升级最多可安装件数
energy *= 1.2 等 EntryModifier 数值修正器,运算符支持 *= /= += -=
sealed = Y / biomeOverride = Hell EntryStr 布尔 / 字符串修正器

21 个升级的 ID 分布

ID cfg 名 ID cfg 名 ID cfg 名
0 prod 8 未使用 15 sieve
1 life 9 未使用 16 desert
2 flowering 10 sealing 17 plains
3 territory 11 light 18 jungle
4 humidifier 12 sky 19 stabilizer
5 dryer 13 hell 20 winter
6 heater 14 auto 21 ocean
7 cooler 22 scrubber

ID 8 与 9 是空洞 —— 配置从 7 直接跳到 10,属上游预留。

scrubber 的 ID 是 22,追加在文件末尾(:145-150),不在 ID 顺序位置上。

配方块的分配

recipes 块 行范围 产出
主块 154–167 auto
嵌套块(彩色) 169–182 flowering、sky
嵌套块(丝黄蜂) 184–194 sieve、scrubber
嵌套块 196–202 sealing
嵌套块 204–210 light
嵌套块 212–219 prod
嵌套块 221–231 life、territory
嵌套块 233–239 stabilizer
嵌套块 241–262 dryer、humidifier、heater、cooler
BIOME OVERRIDES 266–304 hell、desert、jungle、plains、winter、ocean

同一 recipes 块内可定义多条配方,变量(R / I / S / L / B / A / X)在该块内共享;嵌套块各自独立定义所需变量。

运行时加载

Upgrades.init()(machines/apiary/upgrades/Upgrades.scala)在 init 阶段被 Gendustry.scala:130 调用:

  1. 遍历 Tuning 的 Upgrades 段全部 ConfigSection
  2. 读 id 与 max 构建 Upgrade(id, name, maxNum, mods)
  3. 每个修正器按类型分派到 makeStrMod(字符串 / 布尔)或 makeNumMod(数值)
  4. GameRegistry.registerCustomItemStack("upgrade." + name, new ItemStack(ItemApiaryUpgrade, 1, id))
  5. 存入 Upgrades.map

严格的修正器名白名单:写错名字会直接 sys.error 让游戏崩溃,而不是忽略。

数值修正器(9 个) 字符串 / 布尔修正器(6 个)
lifespan / territory / mutation / production / flowering / geneticDecay / energy / temperature / humidity sealed / selfLighted / sunlightSimulated / automated / collectingPollen / biomeOverride

注意 production / flowering / lifespan / territory / energy 等是可被升级修改的 ApiaryModifiers 字段,而 mutation 与 geneticDecay 同样可改,只是本文件的 21 个升级都没用到 mutation。

Upgrades.map 里的 mod(v, num) 会把数量截断到 maxNum(if (num > maxNum) maxNum else num),因此堆叠溢出不会导致修正超发。

相关条目