Apiary Upgrade

基本信息

属性 值
注册名 gendustry:apiary_upgrade
注册方式 Items.regItem(ItemApiaryUpgrade)(Items.scala:37)
无本地化名 gendustry.apiary.upgrade(setUnlocalizedName)
泛型本地化键 item.gendustry.apiary.upgrade.name(英文 Upgrade,简中语言文件保留英文原文)
具体名称键 gendustry.upgrades.<name>.name(按 subtype 区分,共 21 种)
物品 meta 即升级件 ID(0–22,见下)
接口 IApiaryUpgrade(公开 API)
创造标签 GendustryCreativeTabs.main

功能

这是 Industrial Apiary 升级件的单一物品类型,全部 21 种升级共用同一个 Item,靠**物品伤害值(meta)**区分。名称不含在 item.gendustry.*.name 键里,而是走 gendustry.upgrades.<cfgName>.name。

注册机制(machines/apiary/upgrades/Upgrades.scala):

  • Upgrades.init() 遍历 Tuning 的 Upgrades 段,对每个 cfg 小节读 id 与 max,构建 Upgrade(id, name, maxNum, mods) 存入 map
  • 每种升级调 GameRegistry.registerCustomItemStack("upgrade." + name, new ItemStack(ItemApiaryUpgrade, 1, id)) 注册自定义物品名
  • 修改器分两类:数值型(EntryModifier,支持 += -= *= /=)与布尔/字符串型(EntryStr)
  • 数值修改器只能作用于 9 个已命名目标:lifespan / territory / mutation / production / flowering / geneticDecay / energy / temperature / humidity。写错名字会 sys.error 直接崩
  • 字符串修改器:sealed / selfLighted / sunlightSimulated / automated / collectingPollen / biomeOverride

堆叠:getMaxAdditionalUpgrades 按 getStackingId 统计同类已有数量,从 getMaxNumber(stack) 里减去,允许整叠放入直到 max 上限。

21 种升级件

按功能分四组,详见对应页面:

组 升级 ID 范围
产量与繁殖 prod / life / flowering / territory / scrubber / stabilizer 0, 1, 2, 3, 22, 19
环境调节 humidifier / dryer / heater / cooler / sealing / light / sky 4, 5, 6, 7, 10, 11, 12
生物群系模拟 hell / desert / plains / jungle / winter / ocean 13, 16, 17, 18, 20, 21
自动化 auto / sieve 14, 15

ID 8 与 9 未被任何升级使用(配置从 7 直接跳到 10),属上游预留的空洞。

Tooltip

getDisplayDetails 按单个升级件(upgrade.mod(mods, 1))计算效果并在物品提示里逐条列出:

  • 首行固定是 gendustry.label.maxinstall + 最大安装数
  • 布尔类:仅在该项为真时显示(automated / sealed / selflighted / sky / sieve);biomeOverride != null 时显示 gendustry.label.mod.biome + 群系名
  • 数值类:仅当 != 1(或 humidity/temperature != 0)时显示,用 formatModifier(f, base) 格式化成带符号百分比 (f - base) × 100,四舍五入到整数

因此提示里的百分比是单件效果,而不是叠满 max 后的总效果。

相关条目