氧气系 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。