TilePump

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

注册信息

属性 值 来源
TileEntity 注册名 net.minecraft.src.buildcraft.factory.TilePump BuildCraftFactory.java:105
注册类 buildcraft.factory.TilePump 同上
所属 modid BuildCraft|Factory BuildCraftFactory.java:71
关联方块 Pump 方块 BuildCraftFactory.java:105 同块
实现接口 IHasWork / IFluidHandler / IRedstoneEngineReceiver / ILEDProvider factory/TilePump.java 类声明
是否配置门控 否(无条件注册) BuildCraftFactory.java:105

槽位数量与布局

没有物品槽位。TilePump 走流体罐模型,不实现 IInventory:

factory/TilePump.java:48-49:

public static int MAX_LIQUID = FluidContainerRegistry.BUCKET_VOLUME * 16;
public SingleUseTank tank = new SingleUseTank("tank", MAX_LIQUID, this);

1 个流体罐,容量 = 16 × 桶体积(BUCKET_VOLUME 由 Forge 给出,本仓库不硬编码)。 罐名 "tank"。

对比 TileRefinery 的 3 罐 × 4 桶、 TileFloodGate 的 1 罐 × 2 桶——Pump 的罐最大(16 桶)。

能量(回源码读常量)

factory/TilePump.java:68:

this.setBattery(new RFBattery(1000, 150, 0));
参数 值
容量 1000
每 tick 接收上限 150
最小接收量 0

对比 TileRefinery 的 RFBattery(10000, 1500, 0)—— Pump 的容量只有 Refinery 的 1/10。

处理速率 / 耗时(本篇核心常量)

factory/TilePump.java:47:

public static final int REBUID_DELAY = 512;

⚠️ 注意源码里的拼写是 REBUID_DELAY(少了 L),这是原版的拼写错误—— 引用时必须照抄 REBUID_DELAY,写成 REBUILD_DELAY 就对不上源码。

常量 值 换算 含义
REBUID_DELAY 512 512 tick = 25.6 秒 SafeTimeTracker 的节流周期(:56)
MAX_LIQUID BUCKET_VOLUME * 16 — 罐容量

⚠️ REBUID_DELAY = 512 是「重新规划 / 重建流体路径」的间隔,不是「抽一桶水要 25.6 秒」。 它被包在 new SafeTimeTracker(REBUID_DELAY)(:56)里,作用是限制重算频率。 把它写成「抽液体速率」即为语义写反。

网络更新另有一条独立节流:SafeTimeTracker(Math.max(16, BuildCraftCore.updateFactor))(:64), 源码注释 // tick % 16 => min. 16 ticks per network update—— 下限 16 tick,即最快 0.8 秒一次同步。

工作方式

Pump 在流体源与目标之间逐层搜索,用 pumpLayerQueues(TreeMap<Integer, Deque<BlockIndex>>,:52) 按 Y 层排队,并维护实体方块管道 EntityBlock tube(:51)作为可见的泵管。

tickPumped 初值为 tick - 20(:58),tick 初值是 Utils.RANDOM.nextInt(32)(:57)—— 即每台 Pump 的相位随机,避免整齐同步。

GUI / Container

没有 GUI,也没有 Container(FactoryGuiHandler 无 Pump 分支)。

自动化接口

实现 IFluidHandler,流体可由管道 / 漏斗直接进出,不经 GUI 槽位。

网络封包

走 TileEntity 默认 NBT 同步 + 上述两条 SafeTimeTracker 节流。无独立的 Factory 封包 ID。

相关条目