TileEntityLandingPadSingle(登陆台·单块)

事实基准:/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 Landing Pad GalacticraftCore.java:714
所属 modid GalacticraftCore core/Constants.java:7,@Mod 见 GalacticraftCore.java:160-161
关联方块 micdoodle8.mods.galacticraft.core.blocks.BlockLandingPad core/blocks/BlockLandingPad.java:100-111
触发条件 metadata 0;且 world.isRemote 时返回 null(只在服务端建 TE) core/blocks/BlockLandingPad.java:102-108
父类 net.minecraft.tileentity.TileEntity core/tile/TileEntityLandingPadSingle.java:11
实现接口 无(类声明 :11 不带 implements) core/tile/TileEntityLandingPadSingle.java:11
槽位数 无(不实现 IInventory,源码中不存在 getSizeInventory()) core/tile/TileEntityLandingPadSingle.java:1-46

⚠ 它没有父类 TileEntityMulti。GC 的 5 大多方块(NASA 工作台 / 空间站 / 低温仓 / 燃料装填台 / 登陆台)都走 TileEntityMulti 那套「主块 + 假方块」框架, 唯独 TileEntityLandingPadSingle 不是其中一员——它继承的是原版 TileEntity (对比 TileEntityLandingPad extends TileEntityMulti,core/tile/TileEntityLandingPad.java:31-32)。

⚠ 注册名有两条,都是本类相关:GalacticraftCore.java:714 注册单块为 Landing Pad,:715 把多方块版 TileEntityLandingPad 注册为 Landing Pad Full。

全文逻辑(46 行,只有 1 个方法)

updateEntity(core/tile/TileEntityLandingPadSingle.java:13-45)是唯一的方法, 逻辑是「3×3 凑齐就自动合并成完整登陆台」:

步骤 条件 / 动作 来源
1 仅服务端执行(!this.worldObj.isRemote) core/tile/TileEntityLandingPadSingle.java:15
2 扫描同高度 3×3 邻域(x-1..x+1、z-1..z+1,y 不变) core/tile/TileEntityLandingPadSingle.java:18-26
3 收集所有 instanceof TileEntityLandingPadSingle 的 TE core/tile/TileEntityLandingPadSingle.java:22-24
4 数量等于 9 才继续(size() == 9) core/tile/TileEntityLandingPadSingle.java:28
5 把这 9 个 TE 全部 invalidate() 并替换为 Blocks.air(flag 3) core/tile/TileEntityLandingPadSingle.java:29-31
6 把中心那一格换成 GCBlocks.landingPadFull(flag 3) core/tile/TileEntityLandingPadSingle.java:36
7 取新的 TileEntityLandingPad,非空则调 onCreate(new BlockVec3(...)) core/tile/TileEntityLandingPadSingle.java:37-42

⚠ 只替换中心格,不是整个 3×3。另外 8 格变成空气。 TileEntityLandingPad.onCreate 之后会自行按 TileEntityMulti 框架补出结构。

⚠ 合并条件是精确的 9,不是 >= 9。若 3×3 范围内存在多于 9 个(比如叠了别的 单块 TE),条件不成立,永远不合。

⚠ 本类会无限自检:每 tick 都跑一遍上述扫描,没有任何冷却或「已检查过」标记。

能量 / 物品 / GUI

项目 情况 依据
物品槽 无 类声明 core/tile/TileEntityLandingPadSingle.java:11 不带 implements
能量存储 无(不继承 EnergyStorageTile) 同上
tick 的电力逻辑 无(updateEntity 内无任何 storage 引用) core/tile/TileEntityLandingPadSingle.java:13-45
GUI / Container 无 源码中无 openGui,core/client/gui/GuiHandler.java 无对应分支
网络封包 无(不继承 TileEntityAdvanced) 父类是原版 TileEntity,见 core/tile/TileEntityLandingPadSingle.java:11

⚠ 本类不写任何 NBT——没有覆写 readFromNBT / writeToNBT, 所以单块状态完全不持久化。放置/破坏一整个周期内它只是个临时合并器。

相关条目