跳到正文
烈焰甘蔗Wiki

电弧高炉 (Electric Blast Furnace, EBF)

基本信息

属性 值
注册名(控制器方块) gregtech:gt.blockmachines(meta = EBF_CONTROLLER.ID)
核心类 gregtech.common.tileentities.machines.multi.MTEElectricBlastFurnace
父类链 MTEElectricBlastFurnace → MTEAbstractMultiFurnace → MTEExtendedPowerMultiBlockBase → MTEEnhancedMultiBlockBase → MTEMultiBlockBase
电压范围 MV – MAX(每超过 MV 一档电压 +100K 加热能力)
温度范围 1500K – 6000K+(由加热线圈等级决定)
配方图 RecipeMaps.blastFurnaceRecipes

结构要求

  • 结构尺寸(宽×高×深):3 × 4 × 1(单一 main 结构块,无第二块可拼接)
  • 最小 = 最大 = 3 × 4 × 1(MTEElectricBlastFurnace 无变量结构通道,不存在更大的 EBF)
  • 核心组件:EBF 控制器、加热线圈层
  • 结构材料:机器外壳(Heat Proof Machine Casing)、加热线圈方块
  • 加热线圈等级(从低到高):Heat Proof Coil → Cupronickel Coil → Kanthal Coil → Nichrome Coil → Superconductor Coil

加热能力 (Heat Capacity)

EBF 加热能力由两部分组成:

mHeatingCapacity = HeatingCoilLevel.getHeat() + 100 × (GTUtility.getTier(getMaxInputVoltage()) - 2)

即线圈本身的基础热量 + 超过 MV 一档电压带来的 100K 增益。

多方块控制按钮(基础 GUI 工具栏)

EBF GUI 底部第二行排列的多方块控制按钮(在 MTEMultiBlockBase.addUIWidgets 中固定布局)。EBF 启用了以下开关:

按钮 翻译键 EBF 支持 触发方式
销毁模式 (Voiding Mode) GT5U.gui.button.voiding_mode ✅ supportsVoidProtection=true(默认) 左/右键点击循环:None → Items → Fluids → All
输入隔离 (Input Separation) GT5U.gui.button.input_separation ✅ supportsInputSeparation=true 点击 / 螺丝刀右键
机器模式切换 (Machine Mode) GT5U.gui.button.machine_mode ❌ supportsMachineModeSwitch=false —
批处理模式 (Batch Mode) GT5U.gui.button.batch_mode ✅ supportsBatchMode=true 点击 / 潜行 + 剪线钳右键
锁定配方 (Lock Recipe) GT5U.gui.button.lock_recipe ✅ supportsSingleRecipeLocking=true(默认) 点击 / 刷子右键
电源控制面板 (Power Control Panel) GT5U.gui.button.power_panel ✅ supportsPowerPanel=true(默认) 点击

提示:EBF 自身没有 machineMode(机器模式图标为空),但继承的销毁/隔离/批处理/锁定四个开关都启用。


模式详解

1. 销毁模式 (Voiding Mode)

控制 EBF 在输出仓满时如何处理副产物。

枚举定义见 gregtech.api.enums.VoidingMode,有四种:

模式 显示 物品保护 流体保护
VOID_NONE §7Void Nothing ✅ ✅
VOID_ITEM §7Void Excess §6Items ❌ ✅
VOID_FLUID §7Void Excess §9Fluids ✅ ❌
VOID_ALL §7Void Excess §6Items §7and §9Fluids ❌ ❌

机制:

  • 左键循环到下一档,右键循环到上一档。
  • 对应字段 voidingMode 持久化到 NBT 键 voidingMode(旧存档自动从 voidExcess boolean 迁移)。
  • 在 MTEMultiBlockBase.configureRecipeProcessingLogic 中通过 protectsExcessItem() / protectsExcessFluid() 注入到 ProcessingLogic.setVoidProtection(...)。
  • 当保护开启时(VOID_NONE、VOID_ITEM 仅保护流体、VOID_FLUID 仅保护物品),ParallelHelper 会用 VoidProtectionHelper 反复削减并行数直到输出能塞进仓内。如果并行数被削到 0,整批配方不运行。

玩家体验: 烧钢等产生副产物的配方,如果你不想手动腾输出仓,可以切到 VOID_ITEM 或 VOID_ALL 自动丢弃多余副产物。

2. 输入隔离 (Input Separation)

把多个输入总线视为独立、彼此不共享物品——即每个输入总线只能看到自己那一槽的物品,不同总线的相同物品不互通。

机制:

  • 字段 inputSeparation(默认 false)。
  • EBF 自定义 onScrewdriverRightClick:用螺丝刀右键翻转,并在聊天栏提示 Input buses are separated / aren't separated。
  • 在 ProcessingLogic 配方查找时,按 ItemId 聚合输入的方式不变;但在 MTEMultiBlockBase.getStoredInputsForRecipe() 一类的输入聚合路径上,开启时各总线独立汇总,从而同一配方可能因为某总线缺一项而匹配失败。
  • 持久化键 inputSeparation(旧键 isBussesSeparate 自动迁移)。

玩家体验: 当你用一条线专门放电路/集成元件、其他线只放原料时,开启此模式可以避免总线之间"互偷"物品导致配方误识别。

3. 批处理模式 (Batch Mode)

允许单次配方运行中堆叠多份产物输出,从而拉低单位 EU 消耗。

机制(ParallelHelper):

  • 字段 batchMode,默认从 Gregtech.general.batchModeInitialValue 读取(getDefaultBatchMode())。
  • 开启后 MTEMultiBlockBase 调 logic.setBatchSize(getMaxBatchSize())(默认 128),ParallelHelper 把最大并行乘以 batchModifier:
    if (batchMode) maxParallel = maxParallel * batchModifier;
    
  • 真正限制并行数的是 MAX_BATCH_MODE_TICK_TIME = 128(配方 tick 时长):若单次 duration 低于 128 tick 且当前并行还能扩展,则继续叠加并行直到 duration × parallels >= 128 或达到 maxParallel 上限。
  • 触发方式:GUI 点击按钮,或潜行 + 剪线钳右键,聊天栏提示 Batch Mode: Enabled/Disabled。

玩家体验: 对长 tick 配方(如钢 1s = 20t)效果不明显,但对短 tick 配方可显著压低单位 EU 成本。注意对 EBF 这种输出物很多的机器,批处理会同时放大副产物输出,需要销毁模式配合。

4. 锁定配方 (Lock Recipe)

锁定 EBF 只跑当前第一次成功匹配的配方。

机制:

  • 字段 mLockedToSingleRecipe(默认 false)。
  • 持久化到 NBT 键 mLockedToSingleRecipe,并把锁定的 SingleRecipeCheck(itemCost + fluidCost 映射)一并写入。
  • 触发方式:GUI 点击按钮,或刷子右键,聊天栏提示 Single recipe locking enabled. Will lock to next recipe. / disabled.。
  • 启用后,MTEMultiBlockBase.configureRecipeProcessingLogic() 调用 logic.setRecipeLocking(this, isRecipeLockingEnabled());当 isRecipeLocked=true 且 getSingleRecipeCheck() != null 时,ProcessingLogic 跳过整个 RecipeMap 线性扫描,直接用 SingleRecipeCheck.checkRecipeInputs(...) 计算并行:
    • 加速收益:从 O(N·C·R + N·M) 降到 O(N + M)。SingleRecipeCheck 的 docstring 明确指出"Used by machines that are locked to a single recipe, for faster recipe checking."
  • 切换机器模式(setMachineMode)或解锁时会自动清空 mSingleRecipeCheck。

玩家体验: 大型工厂里把 EBF 锁死成"只炼钢"或"只炼某种合金",CPU 占用显著下降;当某天配方被 NEI/输入变化而锁定的配方失效时,机器会停机并提示。


电源控制面板 (Power Control Panel)

打开方式:点击主 GUI 工具栏右上的"电源面板"按钮。面板窗口 120 × 130,含三个控件:

Power Control Panel
━━━━━━━━━━━━━━━━━━
Maximum Parallel
[     128     ] [✓]      ← 数值框 + "Always use maximum" 复选框
Powerfail Events   [ ]   ← "Make Powerfail Events" 复选框

最大并行值 (Max Parallel)

  • 字段 powerPanelMaxParallel(整型,默认 1)。

  • 输入范围(实时由校验器强制约束):

    始终使用最大值 允许输入范围
    ✅ 勾选 powerPanelMaxParallel = maxParallel(数值被强制等于当前上限,无法编辑)
    ❌ 未勾选 1 ≤ powerPanelMaxParallel ≤ maxParallel(可在 1 到上限之间调)

    UI 提示分别为 Locked: %s(GT5U.gui.text.lockedvalue)和 Range: %s-%s(GT5U.gui.text.rangedvalue)。

  • 实际生效的并行数 由 getTrueParallel() 计算:

    public final int getTrueParallel() {
        return Math.max(1,
            alwaysMaxParallel
                ? getMaxParallelRecipes()
                : Math.min(getMaxParallelRecipes(), powerPanelMaxParallel));
    }
    

    即:当 alwaysMaxParallel=true,getTrueParallel() == getMaxParallelRecipes(),忽略 powerPanelMaxParallel;关闭后才用 Math.min(max, powerPanelMaxParallel) 限制。

  • getMaxParallelRecipes() 在 MTEMultiBlockBase 默认返回 1;具体机器(EBF 自身没有重写)需要子类覆写以提供真实上限。打开面板时 server 端会把当前 getMaxParallelRecipes() 同步到 maxParallel 字段。

玩家体验: 当你的 EBF 偶尔想手动压低并行(比如避免一次性抽光输入总线上的所有原料、或者降低瞬时 EU 拉取),关闭"始终使用最大值",把 powerPanelMaxParallel 设成 1~max 之间的某个值,机器就会按这个上限并行运行。

始终使用最大值 (Always Use Maximum)

  • 字段 alwaysMaxParallel(布尔,默认 true)。首次加载无 NBT 时也默认 true(!aNBT.hasKey(...) || aNBT.getBoolean(...))。
  • 控制 getTrueParallel() 是取 maxParallel 还是 Math.min(maxParallel, powerPanelMaxParallel)。
  • 同步数值框:切换此复选框后,会调用 textField.notifyTooltipChange() 刷新提示文案;同时 setValidator 在编辑器阶段会把输入强制钳到 [maxParallel, maxParallel](开启时)或 [1, maxParallel](关闭时)。

玩家体验: 默认开,即"机器能力允许多少并行就跑多少";关掉后才允许自定义并行上限。

电力故障事件 (Powerfail Events)

  • 字段 makePowerfailEvents(布尔,默认 true,首次加载无 NBT 时默认 true)。

  • 触发位置:MTEMultiBlockBase.stopMachine(ShutDownReason reason):

    if (makePowerfailEvents && reason == ShutDownReasonRegistry.POWER_LOSS) {
        GTMod.proxy.powerfailTracker.createPowerfailEvent(igte);
    }
    
  • 作用:仅在停机原因为 电力中断 (POWER_LOSS) 时,把此次故障记录到 gregtech.common.data.GTPowerfailTracker,并通过 GTPacketOnPowerfail 通知所有在线的机器拥有者(同一队伍)。事件会显示在 Navigator 模组的 Powerfail 图层,并可通过 /gt powerfail list 命令列出。

  • 上层还有一层总开关 Gregtech.machines.enablePowerfailNotifications(GTPowerfailTracker.createPowerfailEvent 入口会先检查它),关闭后即使单机器开了也无效。

玩家体验: 默认开。服务器停电或电网崩溃时,电力故障事件会记录所有因 POWER_LOSS 停机的多方块机器位置、次数、最后一次发生时间,便于断电恢复后快速排查哪些机器需要重启。如果不想被打扰,可以在此面板里把它关掉。


配方温度机制

条件 效果
recipe.mSpecialValue <= mHeatingCapacity 配方可运行
每超过 MV 一档电压 +100K 加热
每超过配方温度 900K EU 消耗 -5%
每超过配方温度 1800K 一次"完美超频"(时间 ×0.25 而不是 ×0.5,效率 100%)

公式 OverclockCalculator.setRecipeHeat(recipe.mSpecialValue).setMachineHeat(mHeatingCapacity).setHeatOC(true).setHeatDiscount(true),见 MTEElectricBlastFurnace.createProcessingLogic。

维护与污染

  • 维护 hatch 必需(6 项修复全部到位才能 100% 效率)。
  • 污染速率 GTMod.proxy.mPollutionEBFPerSecond(默认 40/s)。
  • 顶部中央需要一个 muffler hatch。

参与方块

  • 机器外壳(Heat Proof Machine Casing)
  • 加热线圈(5 个等级)
  • 输入总线 / 输入仓
  • 输出总线 / 输出仓
  • Energy Hatch
  • Maintenance Hatch
  • Muffler Hatch

相关条目

旋转与拆除

项 结论 证据
扳手旋转 无法核实(本仓不覆写 isRotationChangeAllowed,继承外部依赖 gtnhlib 的默认实现) MTEElectricBlastFurnace.java 中 isRotationChangeAllowed 命中 0
螺丝刀右键 不用于旋转,而是切换「输入/输出仓分离」 MTEElectricBlastFurnace.java onScrewdriverRightClick → inputSeparation = !inputSeparation
逐块拆除 无法核实:gregtech/api/metatileentity/ 下未找到任何 dismantle / deconstruct 方法(grep -rin "dismantle|deconstruct" 零命中) —

审计订正(2026-10-01)

项 原文 订正为 证据
注册名 gregtech:gt.multitileentity.electric_blast_furnace gregtech:gt.blockmachines(meta = MTE ID) 全仓 multitileentity 零命中;MetaTileEntity.getStackForm 返回 new ItemStack(GregTechAPI.sBlockMachines, n, getMetaTileID())(gregtech/api/metatileentity/MetaTileEntity.java:189)
结构尺寸 3 × 4 × 3 3 × 4 × 1 MTEElectricBlastFurnace.java:77-81 shape 为 4 行×3 列,transpose() 后 3 宽×4 高,深度 1
「最大规模 3×4×3」 同上 最小 = 最大 = 3×4×1 无变量结构通道,EBF 不可加高

注册名 gt.multitileentity.* 属于幻觉模式 #1(取自 GT5 新版命名习惯而非本仓字符串实参)——本仓是 1.7.10 GT5U 体系,多方块控制器一律是机器方块的某个 meta。

浏览全部模组