智能泵(Smart Pump)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | utilitiesinexcess:smart_pump |
| 类 | com.fouristhenumber.utilitiesinexcess.common.blocks.BlockSmartPump(extends BlockContainer implements IWailaDataProvider) |
| 材质 / 硬度 | Material.rock / 10.0(BlockSmartPump.java:18-22) |
| TileEntity | TileEntitySmartPump(ModTileEntities.java:91) |
| 纹理 | 侧面 smart_pump,顶/底面 smart_pump_top(BlockSmartPump.java:30-32) |
| 开关 | BlockConfig.smartPump.enableSmartPump(默认 true) |
功能
智能泵是一种大范围低卡顿的流体收集器。它必须直接放在流体方块上方并接受 RF 供电,随后在以自身为中心、半径 5 区块的菱形区域(共 61 个区块)内逐块把流体替换成石头,并把收集到的流体先输出到正上方的罐子。
它的设计目标是避免触发方块更新——传统流体自动化靠方块更新传播,在大范围工作时会产生大量区块重载;智能泵直接改写方块状态,因此被描述为"lag-light"(uie.nei.infopage.smart_pump.1)。
区块调度是"逐块接力"的:CHUNK_OFFSETS 是一个固定的 61 项偏移数组(按距离由近及远排列),机器一次只加载一个工作区块,处理完就释放并加载下一个(TileEntitySmartPump.java:41-46, 155-167)。工作期间机器自身所在区块也保持加载。
实现 IWailaDataProvider,Waila tooltip 会显示当前正在处理的区块与完成状态(uie.gui...smart_pump.waila.working / .finished,en_US.lang:229-230)。
数值
| 配置项 | 默认值 | 说明 |
|---|---|---|
smartPumpEnergyStorage |
10000 | 能量容量,@Config.RangeInt(min = 1) |
smartPumpEnergyUsePerBlock |
100 | 每处理一个方块的能耗 |
smartPumpStallCooldown |
200 | 停滞冷却(tick) |
来源:BlockConfig.java:165-177。三个数值均可配置,启用泵本身需 enableSmartPump = true(默认 true)。
| 固定常量 | 值 |
|---|---|
| 工作区域半径 | 5 区块(菱形) |
| 工作区块总数 | 61(CHUNK_OFFSETS 数组长度) |
| 停滞判定 | worldObj.getTotalWorldTime() % smartPumpStallCooldown == 0(TileEntitySmartPump.java:63) |
NBT 持久化字段:chunkX、chunkZ(TileEntitySmartPump.java:181-182, 197-198)。
交互
| 触发 | 行为 |
|---|---|
| 放置 | 必须放在流体方块正上方才有效 |
| 输入 RF | 从内部储能扣除,每方块 smartPumpEnergyUsePerBlock |
正上方有 IFluidHandler |
优先把收集到的流体输出到该罐子(TileEntitySmartPump.java:67) |
| Waila 悬停 | 显示正在处理的区块 / “Finished draining” |
| 区块调度 | 逐块接力加载与释放,避免整片区域同时加载 |
合成配方
产出 2 个,两种配方原料相同、仅水桶与木桶位置互换(RecipeLoader.java:110-147):
odo odo
lew 或 wel
opo opo
o = 装饰方块 meta 5(Ender-Infused Obsidian)、d = 钻石、l = 岩浆桶、e = 末影之眼、w = 水桶、p = 铁镐。
开关:RecipeConfig.enableSmartPumpRecipe(默认 true)。
相关条目
- 虚空采掘场 - 以智能泵为配方原料
- 装饰方块 - 配方原料 meta 5
- TileEntity 注册总表 - 智能泵 TileEntity
- 配置总览 -
BlockConfig.SmartPump的 4 个字段