Expander TileEntity

基本信息

属性 值
抽象基类 openmodularturrets.tileentity.expander.AbstractPowerExpander、AbstractInvExpander
动力子类 ExpanderPowerTierOneTileEntity … ExpanderPowerTierFiveTileEntity
库存子类 ExpanderInvTierOneTileEntity … ExpanderInvTierFiveTileEntity
注册名 expanderPowerTierOne – expanderPowerTierFive、expanderInvTierOne – expanderInvTierFive
注册数量 10 个(TileEntityHandler.java:52-61)
父类 openmodularturrets.tileentity.TileEntityOMT

功能

两类扩展器的 TileEntity 都做同一件事:贴附到 Turret Base 上,然后把能力叠加上去。

贴附与朝向

AbstractPowerExpander.setSide() 逐个检查 +X / -X / -Y / +Y 四个方向是否有 TurretBase,命中即写入 baseFitRotationX / baseFitRotationZ 并置 hasSetSide = true(AbstractPowerExpander.java:17-45):

底座方向 baseFitRotationX baseFitRotationZ
+X 0F 4.705F
-X 0F 1.56F
-Y 1.56F 4.705F
+Y 4.705F 0F

AbstractPowerExpander

不持有物品栏,唯一的公开字段就是上述两个旋转值与 private int tier。它的价值体现为被查询:底座 TurretBase.getMaxEnergyStorageWithExtenders()(TurretBase.java:157-178)调用 TurretHeadUtil.getPowerExpanderTotalExtraCapacity(world, x, y, z) 汇总相邻扩展器的容量并加到自身最大储能上。

AbstractInvExpander

持有 private final ItemStack[] inv = new ItemStack[9](AbstractInvExpander.java:24)—— 固定的 9 格,不随等级变化,等级只决定总追加容量。附加容量读自 Expanders/Power expander tier one capacity … tier five capacity(见 Expanders 数值表)。

炮塔的供弹扫描会一并遍历扩展器:TurretHeadUtil 中有 7 处 for (int i = 0; i < exp.getSizeInventory(); i++) 循环(TurretHeadUtil.java:382,472,483,494,505,516,527)。

isUseableByPlayer 要求玩家到方块中心的距离平方 < 64(即 8 格内,AbstractInvExpander.java:132)。isItemValidForSlot 覆写为对红石反应堆与回收附加件的判定分支(AbstractInvExpander.java:136)。

存档 writeToNBT / readFromNBT 用标准 tag.setByte("Slot", ...) 形式序列化 9 格(AbstractInvExpander.java:47-67)。

数值

数值名 值
库存扩展器格数 9(固定,AbstractInvExpander.java:24)
动力扩展器追加容量 250 / 25 000 / 75 000 / 250 000 / 5 000 000 RF(Tier 1 – 5)
玩家交互距离平方上限 64
方块爆炸抗性 3.0F(全部 10 个方块)

交互

触发 行为
右键(库存扩展器) 打开 GUI ID 7(ExpanderInvGui / ExpanderInvContainer)
右键(动力扩展器) 无 GUI
自动化 库存扩展器 9 格被炮塔供弹逻辑读取;无 ISidedInventory 覆写,不接受管道直接访问

相关条目