TileEntityMinerBaseSingle(采矿机基座·单块)

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

注册信息

属性 值 来源
TileEntity 注册名 Astro Miner Base Builder planets/asteroids/AsteroidsModule.java:322
所属 modid GalacticraftMars core/Constants.java:8,@Mod 见 planets/GalacticraftPlanets.java:37-38
注册方法入口 AsteroidsModule.registerTileEntities(),由 planets/asteroids/AsteroidsModule.java:270 调用 planets/asteroids/AsteroidsModule.java:316-324
关联方块 AsteroidBlocks.blockMinerBase = new BlockMinerBase("minerBase") planets/asteroids/blocks/AsteroidBlocks.java:46
方块→TE 分派 无条件 new TileEntityMinerBaseSingle() planets/asteroids/blocks/BlockMinerBase.java:72-74
父类 net.minecraft.tileentity.TileEntity(原版) planets/asteroids/tile/TileEntityMinerBaseSingle.java:9
实现接口 无(类声明无 implements) planets/asteroids/tile/TileEntityMinerBaseSingle.java:9
槽位数 无(不实现 IInventory,全类无 getSizeInventory()) planets/asteroids/tile/TileEntityMinerBaseSingle.java:1-50

⚠ 本类不是机器,是「建造器」占位方块——它继承原版 TileEntity, 不走 GC 的 TileEntityAdvanced / 能量体系,没有 GUI、没有容器、没有 NBT 持久化。

槽位与字段

无槽位、无任何字段声明(:9-49 只有 updateEntity 一个方法)。 类总长 50 行,updateEntity 占 :11-49。

能量

无。 直接继承原版 TileEntity(:9),不含 EnergyStorageTile ——本类没有容量 / maxReceive / maxExtract。

tick / 特殊机制(本篇核心)

updateEntity(:12-48)只做一件事:检测 2×2×2 是否凑齐,凑齐就自组装成 AsteroidBlocks.minerBaseFull(即带完整功能的采矿机基座)。

步骤 行为 源码
触发条件 仅服务端(!worldObj.isRemote) planets/asteroids/tile/TileEntityMinerBaseSingle.java:13
扫描范围 以自身为角的 2×2×2(x、y、z 各 coord .. coord+1) planets/asteroids/tile/TileEntityMinerBaseSingle.java:16-27
提前退出 任何一格不是 TileEntityMinerBaseSingle 就 break SEARCH planets/asteroids/tile/TileEntityMinerBaseSingle.java:21-23
判定 attachedBaseBlocks.size() == 8 planets/asteroids/tile/TileEntityMinerBaseSingle.java:29
自组装 8 格全部 invalidate() 后换成 AsteroidBlocks.minerBaseFull,flag = 3 planets/asteroids/tile/TileEntityMinerBaseSingle.java:30-34
选主块 换成 TileEntityMinerBase 后,用第一个转换块的坐标(即本方块)调 setMainBlockPos planets/asteroids/tile/TileEntityMinerBaseSingle.java:36-46

⚠ 转换是「一次性」且不可逆的——updateEntity 每 tick 都跑,但组装后 8 格的 TE 全变成 TileEntityMinerBase,下次扫描第一个格子就不是 TileEntityMinerBaseSingle,break SEARCH 立刻退出,不会重复触发。

⚠ 没有任何失败提示:只摆 1 块或 7 块时,这个方块静默地什么都不做, 既不掉落也不报错(getItemDropped 恒按 meta 0 处理,planets/asteroids/blocks/BlockMinerBase.java:51-54)。

相关条目