多方块结构方块
基本信息
Draconic Evolution 共注册 8 个多方块结构组件方块。这些方块本身不独立工作,必须按特定形状摆放后由对应的 TileEntity 校验并「激活」,激活过程中会把玩家放置的普通方块替换为 invisibleMultiblock(隐形方块)。
来源:ModBlocks.java:98-141(实例化)、common/blocks/multiblock/。
| 注册名 | 显示名 | 硬度 | 爆炸抗性 | 采集等级 | 材质 | 用途 |
|---|---|---|---|---|---|---|
energyStorageCore |
能量核心 | 10 | 20 | 无 | Material.iron |
储能核心,7 个等级 |
invisibleMultiblock |
能量核心(隐藏) | 10 | 2000 | 无 | Material.iron |
激活后替换玩家方块的隐形占位 |
energyPylon |
能量塔 | 10 | 20 | 无 | Material.iron |
无线供能塔 |
reactorCore |
反应堆核心 | 5.0 | 10.0 | 无 | Material.iron |
终焉反应堆中心 |
reactorStabilizer |
反应堆稳定器 | 5.0 | 10.0 | 无 | Material.iron |
反应堆稳定结构,需 4 个 |
reactorEnergyInjector |
反应堆能量喷射器 | 5.0 | 10.0 | 无 | Material.iron |
反应堆能量注入端 |
dislocatorReceptacle |
错位容器 | 50.0 | 2000.0 | 镐 3 | Material.rock |
龙心召唤仪式的容器 |
portal |
门 | 5.0 | 10.0 | 无 | Material.portal |
传送门方块 |
硬度 / 抗性 5.0 / 10.0 者未显式设置,继承 BlockDE 默认值(BlockDE.java:17-27)。
功能
隐形占位方块(invisibleMultiblock)
能量核心在激活时会把结构内玩家放置的方块换成这个隐形方块,从而在不破坏玩家建筑的前提下「吃掉」一个外壳。它有两个 meta(由 TileEnergyStorageCore 的判定逻辑确认):
| meta | 角色 | 判定代码 |
|---|---|---|
| 0 | 外层方块(outer) | TileEnergyStorageCore.java:329 isOuterBlock |
| 1 | 内层方块(inner) | TileEnergyStorageCore.java:299 isInnerBlock |
拆除时通过 InvisibleMultiblock.revertStructure(world, x, y, z) 还原,调用点见 TileEnergyStorageCore.java:110-112 的 reIntegrate()。
能量核心(energyStorageCore)
七级结构,形状由 TileEnergyStorageCore.setTier()(TileEnergyStorageCore.java:138-169)自动判定,扫描范围半径为 5。校验逻辑在 scanStructure()(TileEnergyStorageCore.java:171-189):
| 等级 | 判定条件 | 结构形状 | 容量(RF) |
|---|---|---|---|
| 0 | scanCube(可替换方块, 1) |
仅核心自身 | 45,500,000 |
| 1 | scanRings(可替换, 1, 1) + scanSides(outer, 0, 1) |
3×3 环 + 侧板 | 273,000,000 |
| 2 | scanCube(outer, 1) |
完整 3×3×3 外壳 | 1,640,000,000 |
| 3 | scanCube(inner, 1) + scanSides(outer, 1, 2) |
3×3×3 内壳 + 外层侧板 | 9,880,000,000 |
| 4 | + scanSides(inner,1,2) scanSides(outer,1,3) scanRings(outer,2,2) |
双层壳 | 59,300,000,000 |
| 5 | scanCube(inner,2) + 三层侧板 + 双环 |
三层壳 | 356,000,000,000 |
| 6 | scanCube(inner,2) + 四层侧板 + 双双环 |
四层壳 | 2,140,000,000,000 |
容量取自 BalanceConfigHandler.java:98-104(energyStorageTier1Storage … energyStorageTier7Storage),在 TileEnergyStorageCore.initializeCapacity()(TileEnergyStorageCore.java:377-390)中按 tier 选取。
激活还要求 4 个粒子发生器作为稳定器:findStabilizers()(TileEnergyStorageCore.java:118-135)沿东南西北四个方向各搜索最多 STABILIZER_SEARCH_DISTANCE = 11 格(TileEnergyStorageCore.java:35),且粒子发生器的 meta 不能为 1,否则直接判定失败。激活后稳定器被置为 isInStabilizerMode = true 并写入 meta 1(TileEnergyStorageCore.java:362-372)。
等级还持久化到 NBT 的 Tier 短整型(TileEnergyStorageCore.java:435, 445)。
反应堆(reactorCore + reactorStabilizer ×4 + reactorEnergyInjector)
- 核心周围 10 格内搜索部件:
MAXIMUM_PART_DISTANCE = 10(TileReactorCore.java:56),搜索逻辑在TileReactorCore.java:284-296。 - 稳定器必须 恰好 4 个且都把
masterLocation指向核心,否则isStructureValid = false(TileReactorCore.java:309-326):isStructureValid = stabilizersCount == 4; - 稳定器位置写入 NBT 的
Stabilizers标签列表(TileReactorCore.java:602-608),读回见TileReactorCore.java:628-630。 - 反应堆有充能进度条:
fieldCharge / (maxFieldCharge * 0.1D),钳制到 1.0(TileReactorCore.java:119),GUI 按钮为button.de.reactorStart/reactorStop/reactorCharge。
能量塔(energyPylon)
- 供能范围半径
range = 15(TileEnergyPylon.java:111-115),以塔为中心的 31×31×31 立方体。 - 塔本身通过
TileEnergyPylon的 master 机制串联,可堆叠成多段塔身。 - 对外暴露的容量接口会被钳制到
Integer.MAX_VALUE(TileEnergyPylon.java:282, 288)。
错位容器与门
dislocatorReceptacle是召唤末影龙仪式中容纳龙心的容器,硬度 50 / 抗性 2000,采集等级镐 3,材质Material.rock。portal材质为Material.portal,对应TilePortalBlock(CommonProxy.java:241)。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 能量核心稳定器搜索距离 | 11 | TileEnergyStorageCore.java:35 |
| 能量核心等级判定半径 | 5 | TileEnergyStorageCore.java:139 |
| 能量核心稳定器数量要求 | 4 | TileEnergyStorageCore.java:135 |
| 反应堆部件最大距离 | 10 | TileReactorCore.java:56 |
| 反应堆稳定器数量要求 | 4 | TileReactorCore.java:326 |
| 能量塔供能范围 | 15 | TileEnergyPylon.java:111 |
| 能量核心 1 级容量 | 45,500,000 RF | BalanceConfigHandler.java:98 |
| 能量核心 7 级容量 | 2,140,000,000,000 RF | BalanceConfigHandler.java:104 |
交互
| 触发 | 行为 |
|---|---|
| 右键能量核心 | 校验结构并尝试激活(TileEnergyCore 系),失败时向控制台输出 Failed to activate structure(TileEnergyStorageCore.java:309, 339) |
| 右键反应堆核心 | 打开反应堆 GUI(ContainerReactor + GUIReactor) |
| 破坏隐形方块 / 核心 | 触发 reIntegrate() 还原周围 3×3×3 内的隐形方块(TileEnergyStorageCore.java:106-116) |
合成配方
- 能量核心、能量塔、反应堆各部件的配方位于 90 条合成配方中,其中反应堆部件使用
reactorCraftingPart的 5 个子类型(见 反应堆结构)。 - 稳定器部件的 5 个子类型通过
ModItems.partStabFrame/partStabRotorInner/partStabRotorOuter/partStabRotorAssembly/partStabRing五个ItemStack别名暴露(ModItems.java:196-200)。