Fluid Conduit
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | enderio:itemLiquidConduit |
| 最大堆叠 | 64 |
| 附魔适用 | 否 |
| 耐久度 | 无 |
功能
Fluid Conduit 是 Ender IO 流体导管系统的导管物品。放置后形成流体传输通道,用于在容器之间转移液体。
变种与传输速率
基础流体导管(Basic)
| 参数 | 值 |
|---|---|
| 提取速率 | 50 mB/tick |
| 最大 IO 速率 | 200 mB/tick |
配方:binder + 玻璃
高级流体导管(Advanced)
| 参数 | 值 |
|---|---|
| 提取速率 | 100 mB/tick |
| 最大 IO 速率 | 400 mB/tick |
配方:binder + Fused Quartz(需 Config.useHardRecipes=true)
末影流体导管(Ender Fluid Conduit)
可在相距 40 格以内的两个流体导管网络间传送液体,无需直接连接。
| 参数 | 值 |
|---|---|
| 提取速率 | 200 mB/tick |
| 最大 IO 速率 | 800 mB/tick |
配方:binder + Fused Quartz + Phased Gold
结晶末影流体导管(Crystalline Ender)
| 参数 | 值 |
|---|---|
| 提取速率 | 1,000 mB/tick |
| 最大 IO 速率 | 4,000 mB/tick |
配方:binder + Fused Quartz + Crystalline Alloy
结晶粉色史莱姆末影流体导管(Crystalline Pink Slime Ender)
| 参数 | 值 |
|---|---|
| 提取速率 | 2,000 mB/tick |
| 最大 IO 速率 | 8,000 mB/tick |
配方:binder + Fused Quartz + Crystalline Pink Slime
旋律末影流体导管(Melodic Ender)
| 参数 | 值 |
|---|---|
| 提取速率 | 10,000 mB/tick |
| 最大 IO 速率 | 40,000 mB/tick |
配方:binder + Fused Quartz + Melodic Alloy
恒星末影流体导管(Stellar Ender)
| 参数 | 值 |
|---|---|
| 提取速率 | 20,000 mB/tick |
| 最大 IO 速率 | 80,000 mB/tick |
配方:binder + Fused Quartz + Stellar Alloy
传输速率对比表
| 导管类型 | 提取速率 (mB/t) | 最大 IO (mB/t) | 配方复杂度 |
|---|---|---|---|
| Basic | 50 | 200 | 低 |
| Advanced | 100 | 400 | 中 |
| Ender | 200 | 800 | 中 |
| Crystalline Ender | 1,000 | 4,000 | 高 |
| Crystalline Pink Slime Ender | 2,000 | 8,000 | 高 |
| Melodic Ender | 10,000 | 40,000 | 很高 |
| Stellar Ender | 20,000 | 80,000 | 最高 |
流体类型锁定
末影流体导管支持流体类型锁定功能:
- 首次输入流体后锁定类型
- 锁定后只接受同类型流体
- 可用工具右键解锁后重新选择流体类型
连接模式
每个面独立配置。GUI 中的「提取」和「加入」是两个独立开关,组合后映射到 ConnectionMode 枚举:
| GUI 显示 | 枚举值 | acceptsInput() |
acceptsOutput() |
实际行为 |
|---|---|---|---|---|
| 提取 | INPUT |
✅ | ❌ | 只从这一面抽出流体 |
| 加入 | OUTPUT |
❌ | ✅ | 只向这一面灌入流体 |
| 提取+加入(输入图/输出) | IN_OUT |
✅ | ✅ | 双向 |
| 关闭 | DISABLED |
❌ | ❌ | 完全断开 |
| 默认(未设置) | NOT_SET |
— | — | 继承导管类型默认值 |
[!WARNING] 命名容易误导:
INPUT指的是「从这一侧取」,OUTPUT指的是「往这一侧送」。想往机器里灌流体,必须设为 加入(OUTPUT),而不是「输入」。
默认模式
流体导管的默认连接模式是 提取(INPUT)(AbstractLiquidConduit.getDefaultConnectionMode())。
这意味着任何没有手动改过的面都只会抽取、永远不外送。新建一条导管去接机器时,必须手动把该面切成「加入」。
双向模式的陷阱
源码里的推送判定是:
// AbstractLiquidConduit.canInputToDir()
return getConnectionMode(dir).acceptsOutput() && !autoExtractForDir(dir);
而 autoExtractForDir() 在红石控制模式为 始终运行(IGNORE) 时会无条件返回 true。
因此:某个面同时满足「双向」+「始终运行」时,!autoExtractForDir() 恒为 false → 那个面永远只能抽、永远不能送,且没有任何提示。
排查「双向面只出不进」时,第一件事就是检查该面的红石控制模式。
频道(输入色 / 输出色)
[!NOTE] GUI 里的这个按钮 tooltip 叫 「频道」(
enderio.gui.conduit.item.channel)。它不是把网络隔离成两条独立管道,而是逐面的一对颜色标记,用于决定「谁可以往谁送」。
仅 Ender 系列流体导管的 GUI 会出现频道按钮(LiquidSettings.updateGuiVisibility() 中 if (!isEnder) return;)。
配对规则
推送时,源面和目标面必须颜色相同,否则该目标被静默跳过(无日志、无报错):
// EnderLiquidConduitNetwork.fillFrom()
target.con.getOutputColor(target.conDir)
.equals(tank.con.getInputColor(tank.conDir))
也就是说,要让流体从 A 流到 B,需要同时满足:
- A 侧贴着源的面 → 输入色(提取频道)
- B 侧贴着目标的面 → 输出色(加入频道)
- 两者颜色完全相同
两端的默认值都是 DyeColor.GREEN(AbstractEnderLiquidConduit.getInputColor/getOutputColor)。
最快的修复方式:把两端的输入色和输出色全部改回「默认」。 默认绿 ↔ 默认绿天然匹配,不存在设反的可能。
抽取不检查颜色,输送才检查
这是「能抽出来却灌不进去」的经典成因,因为两条路径的闸门不同:
| 路径 | 源码方法 | 是否检查频道颜色 |
|---|---|---|
| 抽取 | EnderLiquidConduitNetwork.extractFrom() |
❌ 不检查 |
| 输送 | EnderLiquidConduitNetwork.fillFrom() |
✅ 检查 |
所以颜色配错时,源机器照常被抽空、悬浮提示照常显示流体、网络里照常有货——唯独灌不进去。
颜色 ≠ 红石信号颜色
界面上有两个颜色设置,极易点错行:
| GUI tooltip | 含义 | 作用范围 |
|---|---|---|
信号颜色(gui.conduit.redstone.signalColor) |
红石控制所使用的信号颜色 | 红石控制 |
频道(gui.conduit.item.channel) |
输入色/输出色配对 | 流体路由 |
两者互相独立,名字却都像「颜色」。
红石控制
红石控制只影响抽取(autoExtractForDir),不影响输送方向。
| GUI | 枚举值 | 行为 |
|---|---|---|
| 始终运行 | IGNORE |
无条件抽取(忽略红石) |
| 有信号时 | ON |
有信号才抽取(默认) |
| 无信号时 | OFF |
无信号才抽取 |
| 从不 | NEVER |
永不抽取 |
[!IMPORTANT] 默认模式是「有信号时」(
ON),不是「始终运行」。新建导管后若发现抽不出东西,先看这一项。
颜色为红色时,还会额外参考该面的外部红石信号强度。
与 GregTech 5 的交互
GT5 在 1.7.10 中不注册 Forge 流体能力,只依赖 instanceof IFluidHandler;而 EnderIO 也正是用这个方式查找邻居,两者能对上(IGregTechTileEntity extends ... IFluidHandler)。
EnderIO 对 GT5 的容量门槛
EnderIO 对 GT 方块额外加了一道判断:
// AbstractLiquidConduit.canConnectToExternal()
if (EnderIO.hasGT5 && h instanceof IGregTechTileEntity) {
IMetaTileEntity mte = ((IGregTechTileEntity) h).getMetaTileEntity();
return mte != null && mte.getCapacity() > 0; // 容量为 0 → 根本不会绑定
}
getCapacity() 返回 0 时,该面不会进入 externalConnections,也就不会建立推送目标——连尝试都不会发生。
GT5 输入总线 vs 输入仓
中文本地化里这两个名字极易混淆(assets/gregtech/lang/zh_CN.lang):
| 方块 | 中文名 | 能否装流体 |
|---|---|---|
MTEHatchInputBus |
输入总线 | ❌ 纯物品,16 格 |
MTEHatchInput |
输入仓 | ✅ 流体罐 |
输入总线的流体能力是硬关闭的:canTankBeFilled() 恒为 false,getCapacity() 恒为 0,fill() 直接返回 0。
把流体导管接到输入总线上永远不会成功。 游戏内判别:右键开出来是 16 格物品网格 = 输入总线;是流体罐界面 = 输入仓。
GT5 侧的静默拒绝
即使目标确实是流体仓,GT5 仍有一层侧面闸门(BaseMetaTileEntity.fill(ForgeDirection, ...)):
mInputDisabled—— 用螺丝刀禁用该面的输入后,导管推不进去getCoverAtSide(side).letsFluidIn()—— 该面若盖了不导流体的面板,同样推不进去
悬浮提示的局限
Waila/悬浮提示读取的是导管自身罐子里的流体(WailaCompat 中 atc.getTank().getFluid()),从不查询邻居、也从不反映 fill() 的结果。
看到流体 ≠ 推送成功。 排查时不能拿悬浮提示当作证据。
常见故障排查
| 症状 | 优先检查 |
|---|---|
| 完全不抽取 | 该面红石控制是否为「始终运行」(默认为「有信号时」) |
| 抽得出但灌不进 | 频道配对:源面「输入色」与目标面「输出色」是否相同 |
| 双向面只出不进 | 该面是否为「双向」+「始终运行」组合(永久只抽不送) |
| 接到机器完全无反应 | 目标可能是 GT 输入总线(getCapacity()==0,不绑定) |
| 目标面没有连接口渲染 | 说明 canConnectToExternal 返回 false,EnderIO 未绑定该面 |
| 单次推送没反应 | 检查目标面过滤器是否放行该流体 |
| 突然停止工作 | 螺丝刀检查该面输入是否被禁用、面板是否阻挡流体 |
与其他系统结合
Conduit 接口(Conduit Bundle)
所有流体导管安装在 Conduit Bundle 中,可与其他导管共享方块实体。
典型使用场景
| 场景 | 推荐导管类型 |
|---|---|
| 小型农场/酿造 | Basic 或 Advanced |
| 大型工厂 | Ender Fluid Conduit |
| 超高速生产 | Stellar Ender |
相关条目
- Conduit Bundle - 导管核心
- Item Conduit - 物品导管
- Power Conduit - 动力导管
- Redstone Conduit - 红石导管
第三方集成
| 集成 Mod | 集成类型 | 功能 |
|---|---|---|
| ComputerCraft | 捆绑红石 | 捆绑红石信号传输 |
| OpenComputers | OC 网络 | OpenComputers 网络连接 |
| Applied Energistics 2 | ME 网络 | ME 存储网络连接 |
| Mekanism | 气体管道 | 气体传输管道 |
| Immibis Microblocks | 微块覆盖 | 微块系统支持 |
| MineFactoryReloaded | RedNet 集成 | RedNet 电缆连接 |
| Waila | 工具提示 | Waila HUD 信息显示 |
| Thaumcraft | 要素注册 | 物品要素标签 |