Boiler
[!WARNING] 已订正(1.7.10 树) 原条目的 pattern 数量、tank 数量、tick/蒸汽常数经核对均正确, 但缺少两项关键事实:① 数组实际尺寸是
char[tankHeight+3][width+2][width+2], 不是 3×3×3;② 控制器位于 y=1 的火箱层(BoilerPattern里super(pattern, xOffset, 1, yOffset)), 不是「顶层空气」。 证据:TileBoiler.java:69-85、:98-130、:307-320。
基本信息
| 属性 | 值 |
|---|---|
| 结构类别 | 变尺寸多方块,12 套 pattern(6 种尺寸 × 高/低压两档) |
| 数组尺寸 | (宽度+2) × (tankHeight+3) × (宽度+2) |
| 控制器(master) | 火箱层中心,pattern 坐标 (offset, 1, offset),offset = 宽度 |
| 结构方块 | Boiler Firebox Solid / Boiler Firebox Fluid + Boiler Tank Low / Boiler Tank High |
| 可否用扳手旋转 | 否 |
| 可否整体拆除 | 无整体拆除 API |
层结构
buildMap() 生成的固定分层(TileBoiler.java:98-130):
| 层 (Y) | 内容 |
|---|---|
| 0 | 全 'O'(预留) |
| 1 | 内 宽度×宽度 为 'F'(火箱),外圈 'O' |
| 2 … tankHeight+1 | 内 宽度×宽度 为 'L' 或 'H'(锅炉罐),外圈 'O' |
| tankHeight+2 | 全 'O'(预留) |
所以实际需要预留的高度 = tankHeight + 3。
12 套 pattern 全表
蒸汽产量 = BoilerPattern.steamCapacity(每 tick 抽取的 mB),水罐 = 每罐 4 桶。
| # | 宽度 | tankHeight | 压力 | 数组 X×Y×Z | tank 数 | tick/周期 | 蒸汽/tick (mB) |
|---|---|---|---|---|---|---|---|
| 0 | 3 | 4 | 高压 'H' |
5×7×5 | 36 | 8 | 32 |
| 1 | 3 | 3 | 高压 'H' |
5×6×5 | 27 | 8 | 32 |
| 2 | 3 | 2 | 高压 'H' |
5×5×5 | 18 | 8 | 32 |
| 3 | 2 | 3 | 高压 'H' |
4×6×4 | 12 | 8 | 32 |
| 4 | 2 | 2 | 高压 'H' |
4×5×4 | 8 | 8 | 32 |
| 5 | 1 | 1 | 高压 'H' |
3×4×3 | 1 | 8 | 32 |
| 6 | 3 | 4 | 低压 'L' |
5×7×5 | 36 | 16 | 16 |
| 7 | 3 | 3 | 低压 'L' |
5×6×5 | 27 | 16 | 16 |
| 8 | 3 | 2 | 低压 'L' |
5×5×5 | 18 | 16 | 16 |
| 9 | 2 | 3 | 低压 'L' |
4×6×4 | 12 | 16 | 16 |
| 10 | 2 | 2 | 低压 'L' |
4×5×4 | 8 | 16 | 16 |
| 11 | 1 | 1 | 低压 'L' |
3×4×3 | 1 | 16 | 16 |
有效组合只有上表这 12 种,并非「宽度 1~3 × 高度 1~4」的自由组合。 例如宽度 2 没有 tankHeight=1 的 pattern,宽度 3 没有 tankHeight=1 的 pattern。 tank 数 =
宽度² × tankHeight。
数值常量
| 常量 | 值 | 来源 |
|---|---|---|
TICKS_LOW |
16 | TileBoiler.java:47 |
TICKS_HIGH |
8 | TileBoiler.java:48 |
STEAM_LOW |
16 mB | TileBoiler.java:49 |
STEAM_HIGH |
32 mB | TileBoiler.java:50 |
| 水罐容量 | 4 × FluidHelper.BUCKET_VOLUME |
TileBoiler.java:88 |
| 蒸汽罐容量 | 16 × FluidHelper.BUCKET_VOLUME |
TileBoiler.java:90 |
HEAT_LOW |
Steam.MAX_HEAT_LOW |
TileBoiler.java:51 |
HEAT_HIGH |
Steam.MAX_HEAT_HIGH |
TileBoiler.java:52 |
标记语义
TileBoiler 覆写了 isMapPositionValid()(TileBoiler.java:212):
| 标记 | 含义 | 校验规则 |
|---|---|---|
'O' |
Other | 不能是锅炉方块(boilerBlocks 集合内任一 metadata) |
'L' |
低压罐 | 必须是 machine.beta + metadata BOILER_TANK_LOW_PRESSURE |
'H' |
高压罐 | 必须是 machine.beta + metadata BOILER_TANK_HIGH_PRESSURE |
'F' |
火箱 | 必须是 machine.beta,且 metadata ∈ {BOILER_FIREBOX_SOLID, BOILER_FIREBOX_FLUID} |
'A' |
空气 | 必须是空气 |
使用
- 先铺火箱层(
宽度×宽度的火箱方块)。 - 在其上叠
tankHeight层锅炉罐方块,同一套结构内必须统一为低压或高压。 - 最外圈保持不放锅炉方块(
'O'位置)。 - 顶部再留 1 层空位。
- 通过火箱或阀门方块加水,加燃料产汽;用流体管把蒸汽接到蒸汽机 / 蒸汽烤箱 / 蒸汽涡轮。
限制
- 火箱方块本身是 master Tile(
TileBoilerFirebox),玩家交互界面开在火箱上。 - 锅炉不可旋转(
TileBoiler未覆写rotateBlock())。 - 过热时可能爆炸(
Steam.BOILERS_EXPLODE,TileBoiler.java:290)。
相关条目
- Steam Oven - 消费蒸汽,4×4×4
- Steam Turbine - 消费蒸汽,4×4×5 / 5×4×4
- Boiler Firebox (Solid)
- Boiler Firebox (Fluid)
- Boiler Tank (Low Pressure)
- Boiler Tank (High Pressure)