能量核心结构

基本信息

能量核心(energyStorageCore)是 Draconic Evolution 的多方块储能设施,共 7 个等级。结构完全由核心方块周围的方块壳体决定,等级由壳体厚度自动判定,玩家不需要手动选择。

属性 值 来源
核心方块 draconicevolution:energyStorageCore ModBlocks.java:112, 68
TileEntity TileEnergyStorageCore CommonProxy.java:227
等级数 7(tier 0 – 6) TileEnergyStorageCore.java:44, 178-186
核心硬度 / 抗性 10 / 20 multiblock/EnergyStorageCore.java 构造函数
核心材质 Material.iron multiblock/EnergyStorageCore.java 构造函数
等级持久化 NBT Compound.setShort("Tier", ...) TileEnergyStorageCore.java:435, 445

等级判定

setTier()(TileEnergyStorageCore.java:138-169)在半径 5 格内沿 6 个面方向寻找外壳方块:

  1. 6 个方向的距离必须全部相等,否则判定失败(TileEnergyStorageCore.java:151-155)。
  2. tier = outerBlocksDistances[0]。
  3. 若 tier > 1,则 tier++(TileEnergyStorageCore.java:160-162)。
  4. 特例:tier == 1 时若 (x+1, y+1, z) 也是外壳方块,则升级为 tier 2(TileEnergyStorageCore.java:163-167)。

七级结构

扫描逻辑 scanStructure()(TileEnergyStorageCore.java:171-189)中的三个基础动作:

辅助方法 含义
scanCube(action, size) 扫描以核心为中心的 (2·size+1)³ 实心立方,跳过核心自身
scanRings(action, radius, distance) 扫描上下两圈四角环
scanSides(action, size, distance) 扫描 z ± distance 两个侧板
等级 结构要求(TileEnergyStorageCore.java:172-186) 形状 容量(RF)
0 scanCube(可替换方块, 1) 核心单独放置,周围 3×3×3 内必须可替换 45,500,000
1 scanRings(可替换, 1, 1) + scanSides(外壳, 0, 1) 3×3 上下环 + 正负 Z 侧板 273,000,000
2 scanCube(外壳, 1) 完整 3×3×3 外壳 1,640,000,000
3 scanCube(内层, 1) + scanSides(外壳, 1, 2) 3×3×3 内壳 + 外层侧板 9,880,000,000
4 + scanSides(内层, 1, 2) + scanSides(外壳, 1, 3) + scanRings(外壳, 2, 2) 双层壳 59,300,000,000
5 scanCube(内层, 2) + 三层侧板 + 双环 三层壳 356,000,000,000
6 scanCube(内层, 2) + 四层侧板 + 双双环 四层壳 2,140,000,000,000

容量取自 BalanceConfigHandler.java:98-104 的 energyStorageTier1Storage – energyStorageTier7Storage,由 initializeCapacity()(TileEnergyStorageCore.java:377-390)按 tier 选取;若已有能量超过新容量会被截断(TileEnergyStorageCore.java:389)。

关键点:这些容量在 BalanceConfigHandler 中是可配置项,整表可通过平衡配置文件覆盖(BalanceConfigHandler.java:350-377)。

稳定器要求

除壳体外,激活还要求 4 个粒子发生器(findStabilizers(),TileEnergyStorageCore.java:118-135):

  • 沿 东、南、西、北 四个水平方向搜索(TileEnergyStorageCore.java:119-120)。
  • 每个方向搜索距离上限 STABILIZER_SEARCH_DISTANCE = 11(TileEnergyStorageCore.java:35, 124)。
  • 找到的粒子发生器 meta 必须不为 1,否则整个结构判定失败并立即返回 false(TileEnergyStorageCore.java:126-128)。
  • 四个方向都必须找到,判定条件为 stabilizersCount == 4(TileEnergyStorageCore.java:135)。

激活成功后(TileEnergyStorageCore.java:362-372):

  • 每个稳定器被置为 isInStabilizerMode = true。
  • 稳定器被设为主核心位置并写入 meta 1。
  • 随后调用 initializeCapacity() 设定容量。

卸载时 deactivateStabilizers()(TileEnergyStorageCore.java:392 起)会还原这些 meta。

拆除与还原

reIntegrate()(TileEnergyStorageCore.java:106-116)扫描核心周围 3×3×3 内的 invisibleMultiblock,逐个调用 InvisibleMultiblock.revertStructure(worldObj, x, y, z) 还原玩家原始方块。

数值

数值名 值 来源
等级判定半径 5 TileEnergyStorageCore.java:139
稳定器搜索距离上限 11 TileEnergyStorageCore.java:35
稳定器数量要求 4 TileEnergyStorageCore.java:135
稳定器方向 东 / 南 / 西 / 北 TileEnergyStorageCore.java:119-120
tier 0 容量 45,500,000 RF BalanceConfigHandler.java:98
tier 6 容量 2,140,000,000,000 RF BalanceConfigHandler.java:104
容量倍增比(tier 0 → 1) 6 倍 45,500,000 → 273,000,000
接收能量 Math.min(capacity - energy, maxReceive) TileEnergyStorageCore.java:470

交互

触发 行为
右键核心 校验并激活结构
红石激活 走 activateRedstone 路径,失败输出 Failed to activate structure (activateRedstone)(TileEnergyStorageCore.java:309)
龙块激活 走 activateDraconium 路径,失败输出 Failed to activate structure (activateDraconium)(TileEnergyStorageCore.java:339)
破坏核心 触发 reIntegrate() 还原隐形方块
能量收发器接入 通过 getEnergyStored / receiveEnergy 与 FE 网络交互

合成配方

核心方块本身通过 ShapedOreEnergyRecipe 合成(addEnergy 路径,CraftingHandler.java:1077),完整统计见 合成配方系统。

相关条目