多方块结构方块

基本信息

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)。

相关条目