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 需要在第二个物品栏放置带电电池才能正常运行
参与方块
- Rocket Jet - 火箭喷口,核心控制方块
- Ion Jet - 离子喷口,高推力变体
- Rocket Booster - 火箭 Booster,燃料储存
- Ion Booster - 离子 Booster,冷却液储存
源码核对(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),原条目描述正确。