能量核心结构
基本信息
能量核心(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 个面方向寻找外壳方块:
- 6 个方向的距离必须全部相等,否则判定失败(
TileEnergyStorageCore.java:151-155)。 tier = outerBlocksDistances[0]。- 若
tier > 1,则tier++(TileEnergyStorageCore.java:160-162)。 - 特例:
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),完整统计见 合成配方系统。
相关条目
- 多方块结构方块 - 核心与隐形方块的属性
- TileEntity 一览 -
TileEnergyStorageCore注册行 - 能量塔结构 - 与核心配套的无线供能
- 配置项总览