跳到正文
烈焰甘蔗Wiki

Mothership Engine

基本信息

属性 值
控制器 / 核心方块 Jet block(1 个,位于链的端点)
必需方块 Jet ×1 + Booster ×1~10
结构尺寸 1×1×(1+N) 的直线链,N = Booster 数量,上限 10 → 最大 1×1×11

结构要求

  • Jet block 必须放置在飞船外壳朝外的一面(火焰喷口方向)
  • Booster 链从 Jet 背面延伸出去,方向与 Jet 朝向相反
  • Booster 链只能在 X 或 Z 轴方向延伸(不能沿 Y 轴)
  • Jet 旋转 meta 值决定 Booster 链延伸方向:
    • meta 0 → +Z 方向
    • meta 1 → -X 方向
    • meta 2 → -Z 方向
    • meta 3 → +X 方向

形成机制

自动检测。当 Jet 方块被放置或旋转时,会自动扫描其背面相邻格子,查找匹配的 Booster 方块并形成链接。Booster 链最多包含 10 个 Booster。

功能

为 Mothership 提供推力。运行时 Jet 会检查排气方向(朝外一面)是否有障碍物,若有则发动机禁用。发动机工作时还会点燃并推送排气管线内的实体。

两种变体的区别:

  • Rocket Jet:使用液体燃料推进, thrust 较低但燃料效率较好,需要持续补充燃料罐
  • Ion Jet:使用液体燃料 + 电力双重供能, thrust 极高,但每 tick 额外消耗 10 能量,需要电池供电

数值

属性 Rocket Jet Ion Jet
每 Booster 推力 2,000,000 25,000,000
最大推力(10 Booster) 20,000,000 250,000,000
燃料消耗/tick 2.0 1.0
额外能量消耗/tick — 10
储罐容量/Booster 10,000 2,000
最大储罐容量 100,000 20,000
最大 Booster 链长度 10 10
燃料类型 配置指定液体燃料 配置指定冷却液
所需能量 — 电池供电

限制

  • Jet 排气方向必须畅通,否则发动机禁用
  • Booster 链中断则后面部分不被识别
  • 发动机工作时,位于排气方向的实体会被点燃并被推离
  • Ion Jet 需要在第二个物品栏放置带电电池才能正常运行

参与方块

源码核对(2026-10-01 审计)

「几×几×几 / 控制器 / 可否旋转 / 可否拆除」逐项结论:

项目 结论 证据
结构尺寸 1×1×(1+N) 直线链,N=Booster 数,MAX_LENGTH = 10 → 最大 1×1×11。不是 N×N×N 立方体 TileEntityMothershipEngineAbstract.java:65 public static final int MAX_LENGTH = 10;
控制器 Jet block 本身(isPartOfMultiBlock() 由 Jet 的坐标与朝向判定) TileEntityMothershipEngineAbstract.java:641-674
可否旋转 可。由 Jet 的 metadata 决定,只有 X/Z 两轴,不能沿 Y 轴 同上 switch 只处理 4 个水平朝向
可否拆除 可。resetMultiblockInternal() 在 Booster 消失时 detachBooster(...) 解绑;numBoosters == 0 时引擎视为未连接 TileEntityMothershipEngineAbstract.java:679-700
是否需手动组装 自动检测。onNeighborBlockChange() → scheduleUpdate() 触发重新扫描 MothershipEngineJetBase.java:47-51
最小组装 Jet + 至少 1 个 Booster(numBoosters = 0 时不工作) —

meta → Booster 链延伸方向(原条目已正确,核对通过),依据 getExhaustDirection()(TileEntityMothershipEngineAbstract.java:140-156, 注释明写 -Z => 0 +Z => 2 -X => 3 +X => 1)与 resetMultiblockInternal()(:679+)中 Booster 位置的偏移方向:

meta 排气方向 Booster 链方向
0 -Z +Z
1 +X -X
2 +Z -Z
3 -X +X

数值逐项核对(全部通过):

  • Rocket 推力 getNumBoosters() * 2000000.0D(TileEntityMothershipEngineJet.java:132-133)
  • Ion 推力 getNumBoosters() * 25000000.0D(TileEntityMothershipEngineIon.java:131-132)
  • Rocket 储罐 10000 * this.numBoosters(TileEntityMothershipEngineJet.java:75-76)
  • Ion 储罐 2000 * this.numBoosters(TileEntityMothershipEngineIon.java:136-137)
  • Rocket 燃料 getFuelUsagePerTick() = 2.0F(TileEntityMothershipEngineJet.java:139-140)
  • Ion 燃料 1.0F、能量 10.0F(TileEntityMothershipEngineIon.java:115-121)
  • Ion 为火箭的 12.5 倍(25,000,000 / 2,000,000 = 12.5)——原条目正确

⚠️ 已订正(未写具体数值,按规范保留):TileEntityMothershipEngineAbstract.java:44 有 protected final int tankCapacity = 12000;,但它在两个子类中均被 getTankCapacity() 覆写(10000×N / 2000×N),故该 12000 从不生效, 不应写入本条目。

注册名核对:Jet Rocket mothershipEngineRocketJet(meta 0, ARBlocks.java:574-580)、Jet Ion mothershipEngineRocketJetIon(meta 1, ARBlocks.java:582-587)、Booster Rocket mothershipEngineRocketBooster(meta 0, ARBlocks.java:632-637)、Booster Ion mothershipEngineRocketBoosterIon(meta 1, ARBlocks.java:639-644)——4 个方块条目注册名均正确。 父方块注册名:Jet = machines2、Booster = msBoosters1 (ARBlocks.java:571,630),非条目标注的 Java 字段名。

GUI 核对:Ion Booster 右键打开 GuiIds.GUI_MS_ION_ENGINE (MothershipEngineBoosterIon.java:33)——原条目正确。 Rocket Booster 的 onMachineActivated() 走 MothershipEngineBoosterBase.java:47-50, 仅在 tile.hasMaster() 为真时才响应(即必须已连上 Jet),原条目描述正确。

浏览全部模组