MBCalculator(appeng.me.cluster.MBCalculator)

基本信息

属性 值
源码 appeng/me/cluster/MBCalculator.java
类声明行号 21
类型 public abstract class
构造器 :25,单参 IAEMultiBlock t(保存「起点方块」)
子类 3 个(CraftingCPUCalculator / QuantumCalculator / SpatialPylonCalculator)

职责

多方块几何的模板方法基类。它把「找包围盒 → 校验 → 建/复用 cluster → 回写 tile」这套流程写死一次,三个子类只填判据。

唯一的具体流程

calculateMultiblock(World world, WorldCoord loc)(:29-102)。 这是本类唯一带实现的公开方法(除 matchesExistingCluster)。

抽象方法清单

方法 行号 子类实现(3 个都有)
checkMultiblockScale(WorldCoord min, WorldCoord max) 104 CPU :39 / 量子 :37 / 空间柱 :33
createCluster(World, WorldCoord min, WorldCoord max) 124 CPU :52 / 量子 :52 / 空间柱 :40
verifyInternalStructure(World, min, max) 130 CPU :57 / 量子 :57 / 空间柱 :53
disconnect() 135 CPU :88 / 量子 :88 / 空间柱 :71
updateTiles(IAECluster, World, min, max) 145 CPU :93 / 量子 :93 / 空间柱 :76
isValidTile(TileEntity) 153 CPU :123 / 量子 :125 / 空间柱 :91

非抽象但可覆写的方法

matchesExistingCluster(IAECluster, WorldCoord, WorldCoord)(:126)是 protected 具体方法。只有 SpatialPylonCalculator 覆写了它 (SpatialPylonCalculator.java:47)。

三个子类的判据一览

子类 isValidTile 判据 createCluster 产出
CraftingCPUCalculator te instanceof TileCraftingTile CraftingCPUCluster(:52)
QuantumCalculator te instanceof TileQuantumBridge QuantumCluster(:52)
SpatialPylonCalculator te instanceof TileSpatialPylon SpatialPylonCluster(:40)

生命周期

MBCalculator 不是 IGridCache,没有 5 个网格钩子。 它的生命周期由方块放置 / 破坏事件驱动(IAEMultiBlock 起点方块), 与网格的 tick 无关。

与既有维度的关系

三个子类的 isValidTile 分别锚定三个 tile 类型, 这些 tile 的方块条目见 cluster 总览 的关系表。

相关条目