TileEntityCryogenicChamber(低温仓)

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

注册信息

属性 值 来源
TileEntity 注册名 Cryogenic Chamber planets/mars/MarsModule.java:245
注册类 micdoodle8.mods.galacticraft.planets.mars.tile.TileEntityCryogenicChamber 同上
关联方块 MarsBlocks.machine(BlockMachineMars) planets/mars/blocks/BlockMachineMars.java:307-316
方块→TE 分派 CRYOGENIC_CHAMBER_METADATA(4) ≤ metadata < LAUNCH_CONTROLLER_METADATA(8) planets/mars/blocks/BlockMachineMars.java:48-49、:310-312
父类 TileEntityMulti planets/mars/tile/TileEntityCryogenicChamber.java:29
实现接口 IMultiBlock 同上
所属 modid GalacticraftMars(@Mod(modid = Constants.MOD_ID_PLANETS) 挂在 GalacticraftPlanets 类上,常量值 GalacticraftMars) planets/GalacticraftPlanets.java:37-38、core/Constants.java:8
槽位数 无(不实现 IInventory,无 ItemStack[]) planets/mars/tile/TileEntityCryogenicChamber.java:29-185

槽位与字段

没有任何槽位。字段只有两个:

字段 类型 语义 源码
isOccupied boolean 舱内是否有人(NBT 键 IsChamberOccupied) planets/mars/tile/TileEntityCryogenicChamber.java:31、:177、:183
mainBlockPosition BlockVec3 多方块主块坐标(父类) core/tile/TileEntityMulti.java:17-18

⚠ isOccupied 没有 @NetworkedField 注解(:31), 只在 NBT 里持久化;把它写进「同步字段」即为编造。 方块侧置位入口:planets/mars/blocks/BlockMachineMars.java:400-401。

tick / 能量 / 网络

多方块结构

项目 值 源码
尺寸 1 × 1 × 3(纯竖柱) planets/mars/tile/TileEntityCryogenicChamber.java:130-139
假方块 y = 1, 2 两块,GCBlocks.fakeBlock,metadata 5 planets/mars/tile/TileEntityCryogenicChamber.java:137
高度检查 超过 worldObj.getHeight() - 1 就中断放置 planets/mars/tile/TileEntityCryogenicChamber.java:128-133
渲染包围盒 x±1、y..y+3、z±1 planets/mars/tile/TileEntityCryogenicChamber.java:35-43
拆除 统计剩余假方块,为 0 就不拆;否则 3 格一起删 planets/mars/tile/TileEntityCryogenicChamber.java:143-172

源码没有任何旋转逻辑(与 TileEntityMulti 里的结构表一致)。

tick

updateEntity() 只调 super.updateEntity()(planets/mars/tile/TileEntityCryogenicChamber.java:119-122), 本类不写任何逐 tick 逻辑;canUpdate() 被强制返回 true(:114-117), 以便多方块结构在放置/拆除时被 tick 到。

休眠(核心交互)

onActivated()(planets/mars/tile/TileEntityCryogenicChamber.java:46-79):

判定 返回 源码
已经在睡 / 已死亡 OTHER_PROBLEM planets/mars/tile/TileEntityCryogenicChamber.java:83-85
生物群系是 BiomeGenBase.hell(下界) NOT_POSSIBLE_HERE planets/mars/tile/TileEntityCryogenicChamber.java:87-89
GCPlayerStats.cryogenicChamberCooldown > 0 NOT_POSSIBLE_NOW,聊天栏显示 cooldown / 20 秒 planets/mars/tile/TileEntityCryogenicChamber.java:91-93、:68-76
其余 OK,把玩家挪到 (x+0.5, y+1.9, z+0.5) 并置 sleeping planets/mars/tile/TileEntityCryogenicChamber.java:100-111

⚠ 聊天提示的秒数是 cryogenicChamberCooldown / 20 除法(:73-74), 说明该字段是 tick 数;冷却本身的具体秒数由玩家存档统计控制,不在本类源码里, 本条目不写死。

网络

项目 值 来源
封包距离 30.0 core/tile/TileEntityMulti.java:83-85
封包冷却 50 tick core/tile/TileEntityMulti.java:88-90
是否同步 true core/tile/TileEntityMulti.java:93-95
同步字段 仅父类的 mainBlockPosition core/tile/TileEntityMulti.java:16-18
专用封包 EnumSimplePacketMars.C_BEGIN_CRYOGENIC_SLEEP(发给该玩家) planets/mars/tile/TileEntityCryogenicChamber.java:61-65

能量

不耗电,类内无 EnergyStorage、无能源接口(planets/mars/tile/TileEntityCryogenicChamber.java:29-185)。

相关条目