TileEntityOxygenDecompressor(氧气解压机)

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

注册信息

属性 值 来源
TileEntity 注册名 Oxygen Decompressor core/GalacticraftCore.java:738
所属 modid GalacticraftCore core/Constants.java:7,@Mod 见 core/GalacticraftCore.java:160-161
关联方块 GCBlocks.oxygenCompressor = new BlockOxygenCompressor(false, "oxygenCompressor")(与压缩机同一方块) core/blocks/GCBlocks.java:110
方块→TE 分派 metadata >= OXYGEN_DECOMPRESSOR_METADATA(=4)时装解压机 core/blocks/BlockOxygenCompressor.java:128-129、:32
父类 TileEntityOxygen(→ TileBaseElectricBlock → … → EnergyStorageTile) core/tile/TileEntityOxygenDecompressor.java:18、core/tile/TileEntityOxygen.java:19
实现接口 IInventory / ISidedInventory core/tile/TileEntityOxygenDecompressor.java:18
槽位数 2 见下节

槽位与字段

core/tile/TileEntityOxygenDecompressor.java:20:

private ItemStack[] containingItems = new ItemStack[2];

getSizeInventory()(:84-87)返回 this.containingItems.length → 恒为 2(:54 等长重建)。

槽位 用途 源码
0 氧气罐(ItemOxygenTank,每 tick 被抽气) core/tile/TileEntityOxygenDecompressor.java:35-43、:190
1 电池槽(getBatteryInSlot() → getStackInSlot(1)) core/tile/TileEntityOxygenDecompressor.java:215-217
可接受性 源码
侧面可达槽:{0, 1} core/tile/TileEntityOxygenDecompressor.java:158-160
每槽堆叠上限 1 core/tile/TileEntityOxygenDecompressor.java:139-141
抽出条件:槽 0 仅在罐满(getItemDamage() == getMaxDamage())时允许 core/tile/TileEntityOxygenDecompressor.java:175-184

能量

项目 值 来源
缓冲容量 16000 gJ(STANDARD_CAPACITY,本类未覆写) core/energy/tile/EnergyStorageTile.java:18、:21
最大输入 25 gJ/t——new EnergyStorage(STANDARD_CAPACITY, 10) 的两参构造展开为 maxReceive = 2.5F * 10 core/energy/tile/EnergyStorageTile.java:21、core/energy/tile/EnergyStorage.java:19-21
最大输出 10 gJ/t(构造未覆写,沿用默认 maxTransfer) core/tile/TileEntityOxygenDecompressor.java:25-27、core/energy/tile/EnergyStorage.java:19-21

⚠ 与 TileEntityOxygenCompressor 相比,本类没有 setMaxExtract 调用, 输出就是默认的 10 gJ/t。

tick / 特殊机制

  • 氧气容量与速率:super(1200, 0) → maxOxygen = 1200、oxygenPerTick = 0(:26)。 ⚠ oxygenPerTick = 0 意味着 shouldUseOxygen() 返回 false 时本机不耗自身氧气(core/tile/TileEntityOxygen.java:55-57), 氧气是边抽边推的过路量。
  • 抽气:每 tick 若槽 0 是 ItemOxygenTank、耐久未满、内部未满且 hasEnoughEnergyToRun, 罐耐久 +1、机器 receiveOxygen(1)(:37-43)。
  • 出网:每 tick 调 produceOxygen()(:45),单次上限 OUTPUT_PER_TICK = 100(:22、:244-247)。
  • 出气面 = 电力输入面的对面(:219-221、:229-231);输入方向为空集(:224-226)。
  • 电力输入面 = getOrientation(getBlockMetadata() - 4 + 2),即解压机侧比压缩机少减 4(:209-212)。
  • shouldPullOxygen() / shouldUseOxygen() 均被覆写为 false(:234-241)——不联网拉气、不耗自身氧气。

GUI / Container

GUI 类 Container 类 分派处(core/client/gui/GuiHandler.java)
core.client.gui.container.GuiOxygenDecompressor core.inventory.ContainerOxygenDecompressor Container :149-150、Gui :239-240

相关条目