TileEntityOxygenPipe(氧气管道)

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

注册信息

属性 值 来源
TileEntity 注册名 Oxygen Pipe core/GalacticraftCore.java:708
所属 modid GalacticraftCore core/Constants.java:7,@Mod 见 core/GalacticraftCore.java:160-161
关联方块 GCBlocks.oxygenPipe = new BlockOxygenPipe("oxygenPipe") core/blocks/GCBlocks.java:102
方块→TE 分派 createNewTileEntity(非 createTileEntity)→ new TileEntityOxygenPipe() core/blocks/BlockOxygenPipe.java:181-183
父类 TileEntityOxygenTransmitter(→ TileEntityAdvanced → 原版 TileEntity) core/tile/TileEntityOxygenPipe.java:17、core/tile/TileEntityOxygenTransmitter.java:19
实现接口 IColorable(父类 ITransmitter) core/tile/TileEntityOxygenPipe.java:17、core/tile/TileEntityOxygenTransmitter.java:19
槽位数 无(不实现 IInventory,全类无 getSizeInventory()) core/tile/TileEntityOxygenPipe.java:1-130

⚠ 同一个 TE 类被三个方块复用,不能只看 oxygenPipe:

方块 分派处
BlockOxygenPipe(独立氧气管) core/blocks/BlockOxygenPipe.java:181-183
BlockEnclosed(包覆式,metadata = OXYGEN_PIPE.getMetadata() = 1) core/blocks/BlockEnclosed.java:245-249、:45
BlockWalkway(小行星带栈桥,方块本身属 GalacticraftMars modid) planets/asteroids/blocks/BlockWalkway.java:104

槽位与字段

无槽位。 唯一自有字段是颜色(core/tile/TileEntityOxygenPipe.java:19-22):

@NetworkedField(targetSide = Side.CLIENT)
public byte pipeColor = 15;
private byte lastPipeColor = -1;

pipeColor 默认 15(未染色),NBT 键 pipeColor(:108-119)。

能量

无。 父类链为 TileEntityOxygenTransmitter → TileEntityAdvanced → 原版 TileEntity, 不含 EnergyStorageTile,因此没有容量 / maxReceive / maxExtract(core/tile/TileEntityOxygenTransmitter.java:19)。

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

氧气管是染色隔离网络——颜色不同的管道互不连通。

行为 值 / 频率 源码
连接判定 仅 NetworkType.OXYGEN;若相邻方块也是 IColorable,必须同色才连 core/tile/TileEntityOxygenPipe.java:25-37
canUpdate() 只在服务端更新 core/tile/TileEntityOxygenPipe.java:40-42
颜色变化同步 每 60 tick 检查一次,且仅当颜色真的变了才发 PacketDynamic core/tile/TileEntityOxygenPipe.java:48-52
染色后服务端动作 getNetwork().split(this) 再 resetNetwork()——拆网重连 core/tile/TileEntityOxygenPipe.java:86-89
染色后客户端动作 标记方块重渲染 core/tile/TileEntityOxygenPipe.java:84-85、:100
相邻色变回调 标记更新 + 服务端 refresh() core/tile/TileEntityOxygenPipe.java:99-105
网络参数 值 源码
getPacketRange() 12.0 core/tile/TileEntityOxygenPipe.java:56-58
getPacketCooldown() 5 core/tile/TileEntityOxygenPipe.java:61-63
isNetworkedTile() true core/tile/TileEntityOxygenPipe.java:66-68

染色入口在方块侧:手持 ItemDye 右键(core/blocks/BlockOxygenPipe.java:93-101), 掉落物颜色随机(:44-50)。相邻同色管渲染用 pipeIcons[15], 异色则各用自己的色板(:83-89)。

相关条目