Blast Furnace
[!WARNING] 已订正(1.7.10 树) 原条目把 pattern 里的
'A'标记当成「控制器 Tile」,这是错的。 在 1.7.10 里控制器位置由MultiBlockPattern的 master offset 决定,与标记字符无关;'A'的语义是「此处必须是空气」(TileMultiBlock.isMapPositionValid的case 'A'), 属于结构内部的空腔,并且被isMapPositionOtherBlock()排除在组件之外。 证据:TileMultiBlock.java:212-243、TileBlastFurnace.java:81-125。
基本信息
| 属性 | 值 |
|---|---|
| 结构尺寸 | 5 × 6 × 5(X 宽 × Y 高 × Z 深,char[6][5][5]) |
| 实际占用方块 | 3 × 4 × 3(最外层全为 'O' 预留空位) |
| 控制器(master) | pattern 坐标 (2, 1, 2),即第 1 层正中 |
| 结构方块 | Blast Furnace(EnumMachineAlpha.BLAST_FURNACE) |
| pattern 数量 | 1 套(无变体) |
| 可否用扳手旋转 | 否 |
| 可否整体拆除 | 无整体拆除 API |
布局
pattern[y][x][z],下表每格按行给出 x=1…3、z=1…3 的内部 3×3;最外圈 x/z=0 或 4 全为 'O'。
| 层 (Y) | 内部 3×3(行=x,列=z) |
|---|---|
| 0 | 全 'O'(预留,必须不是高炉方块) |
| 1 | B W B / W B W / B W B ← 控制器所在层(中心为 'W') |
| 2 | B B B / B A B / B B B |
| 3 | B B B / B A B / B B B |
| 4 | B B B / B B B / B B B |
| 5 | 全 'O'(预留) |
标记语义(1.7.10 通用)
| 标记 | 含义 | 校验规则 |
|---|---|---|
'O' |
Other(他物) | 该位置不能是本机器方块;放别的任何方块都合法 |
'B' |
Block(方块) | 必须是本机器方块且 metadata == getBlockMetadata() |
'W' |
Window | 校验规则与 'B' 完全相同(同一个 case 分支) |
'A' |
Air | 必须是空气 |
'*' |
Anything | 恒为合法,不做任何校验 |
本多方块里
'B'与'W'在校验上无差别;TileBlastFurnace.java:146-147的blockMapping也把两者都映射到同一个EnumMachineAlpha.BLAST_FURNACE.ordinal()。'B'/'W'的区分只用于贴图表现(getPatternMarker()供渲染方查询)。
形成机制
TileMultiBlock.updateEntity() 周期性调用 testIfMasterBlock(),
对 patterns 列表逐个跑 isPatternValid(),首个 VALID 的 pattern 被锁定为本 Tile 的 currentPattern。
任一标记位置校验失败即该 pattern 判定 PATTERN_DOES_NOT_MATCH。
控制器方块被破坏后其余组件在下一次重扫时结构失效(components.clear())。
限制
- 控制器不能旋转:
TileMachineBase.rotateBlock()默认返回false(TileMachineBase.java:95-97),TileBlastFurnace未覆写,故本结构无方向,固定 5×6×5。 - 无一键拆除;逐块破坏会使结构失效。
相关条目
- Coke Oven - 同为 alpha 机器,5×5×5
- Boiler - 12 套 pattern 的变尺寸多方块
- Blast Furnace 方块