氧气系 TileEntity 总览(Distributor / Collector / Compressor / Pipe / Sealer / Detector / Decompressor / StorageModule)

事实基准:/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。 本篇合并「氧气网络」的 8 个 TileEntity,因为它们共用 TileEntityOxygen 基类。

注册信息(集合运算:8 个,全部来自 GalacticraftCore.registerTileEntities())

TileEntity 注册名 注册类 源码
Air Distributor TileEntityOxygenDistributor GalacticraftCore.java:706
Air Collector TileEntityOxygenCollector GalacticraftCore.java:707
Oxygen Pipe TileEntityOxygenPipe GalacticraftCore.java:708
Air Compressor TileEntityOxygenCompressor GalacticraftCore.java:712
Air Sealer TileEntityOxygenSealer GalacticraftCore.java:718
Oxygen Detector TileEntityOxygenDetector GalacticraftCore.java:720
Oxygen Decompressor TileEntityOxygenDecompressor GalacticraftCore.java:738
Oxygen Storage Module TileEntityOxygenStorageModule GalacticraftCore.java:737

全部无条件注册(GalacticraftCore.java:702-742 是一个连续方法,无 if 门控)。

职责划分

TileEntity 方向 作用
TileEntityOxygenCollector 入 收氧气,压缩成氧气罐
TileEntityOxygenDistributor 出 把氧气释放到大气
TileEntityOxygenPipe 传输 连接两者
TileEntityOxygenCompressor — 把气体抽成高压氧气
TileEntityOxygenDecompressor — 高压氧气 → 常压
TileEntityOxygenSealer — 密封舱室
TileEntityOxygenDetector — 检测当前维度是否有氧
TileEntityOxygenStorageModule — 大容量氧气存储

⚠ TileEntityOxygenDistributor 额外实现 IBubbleProvider(core/tile/TileEntityOxygenDistributor.java:32), 所以在真空 / 无氧环境里会显示气泡效果。

槽位数量

TileEntityOxygenDistributor(core/tile/TileEntityOxygenDistributor.java:255)与 TileEntityOxygenCollector(core/tile/TileEntityOxygenCollector.java:184)都走 this.containingItems = new ItemStack[this.getSizeInventory()] 模式。

⚠ 本条目不写死各机器的槽位数:getSizeInventory() 的返回值取自 containingItems 数组长度,而该数组在多个 GC TileEntity 里由不同的 containingItems = new ItemStack[N] 声明式初始化,逐个核对 N 才能落笔。 已核实者:

TileEntity containingItems 声明 槽数 源码
TileEntityOxygenCollector new ItemStack[1] 1 core/tile/TileEntityOxygenCollector.java:33
TileEntityOxygenDistributor new ItemStack[2] 2 core/tile/TileEntityOxygenDistributor.java:37

两者 getSizeInventory() 均返回 this.containingItems.length (Collector :215、Distributor :290),故上表即为最终槽数。 其余 6 个氧气机器的 containingItems 声明本条目未逐项核对,不写死数字。

处理速率 / 耗时(本篇唯一确认的常量)

core/tile/TileEntityOxygenCollector.java:28:

public static final int OUTPUT_PER_TICK = 100;
常量 值 含义
OUTPUT_PER_TICK 100 每 tick 输出 100 单位氧气

core/tile/TileEntityOxygenCompressor.java:23:

public static final int TANK_TRANSFER_SPEED = 2;
常量 值 含义
TANK_TRANSFER_SPEED 2 每 tick 向罐内转移 2 单位

⚠ 两个常量都是「每 tick」,量纲是氧气单位 / tick,不是「每秒」也不是 mB。 OUTPUT_PER_TICK = 100 与 TANK_TRANSFER_SPEED = 2 相差 50 倍—— 不能用同一个「氧气产量」口径描述整条氧气链。

⚠ 氧气没有「N tick 压一次」的固定周期——它按 tick 连续输出, 不写死合成节拍。

GUI / Container

GuiIdsCore 的 8 个常量只覆盖玩家随身界面,机器界面走 core/client/gui/GuiHandler.java 的 instanceof 分派(:89 起)。

TileEntity Container 类 GuiHandler.java
TileEntityOxygenCollector core.inventory.ContainerOxygenCollector :117
TileEntityOxygenDistributor core.inventory.ContainerOxygenDistributor :120
TileEntityOxygenSealer core.inventory.ContainerOxygenSealer :124
TileEntityOxygenCompressor core.inventory.ContainerOxygenCompressor :148
TileEntityOxygenDecompressor core.inventory.ContainerOxygenDecompressor :150
TileEntityOxygenStorageModule core.inventory.ContainerOxygenStorageModule :146

⚠ TileEntityOxygenPipe 与 TileEntityOxygenDetector 没有 Container 分支—— 管道与检测器不开界面。

网络封包

GC 走自己的 @NetworkedField 字段同步机制(core/util/Annotations/NetworkedField.java)。 氧气系没有独立的封包 ID。

相关条目