Multiblocks
全部 4 个多方块的结构定义:3 个魔力池变体 + 1 个精灵传送门
基本信息
| 属性 | 值 |
|---|---|
| 路径 | net.fuzzycraft.botanichorizons.addons.Multiblocks |
| 结构数 | 4(alfPortal + 3 个魔力池变体) |
字符表
| 字符 | 判定对象 |
|---|---|
x |
根方块(控制器),setRootCharacter("x") |
s |
MetaBlockCheck(ModBlocks.livingrock, LIVINGSTONE_META_BLOCK) |
p |
BasicBlockCheck(ModBlocks.pool) |
f |
对应石英方块,ModFluffBlocks.*Quartz + QUARTZBLOCK_META_CHISELED |
h |
对应石英台阶,ModFluffBlocks.*QuartzSlab meta 0 |
l |
ModBlocks.livingwood + LIVINGWOOD_META_BLOCK(0) |
g |
ModBlocks.livingwood + LIVINGWOOD_META_GLIMMERING(5) |
n |
ModBlocks.pylon + PYLON_META_NATURA(1) |
. |
Blocks.air |
空格(' ')为空白占位,不参与判定——与 . 空气判定是两种不同语义。
一、三类自动化魔力池
三种变体共用同一张 poolSharedTemplate(3 层 × 7×7),
仅装饰石英 f / h 不同:
| 变体 | 字段 | f 装饰方块 |
h 装饰台阶 |
|---|---|---|---|
| 注魔池 | poolInfusion |
manaQuartz + QUARTZBLOCK_META_CHISELED |
manaQuartzSlab meta 0 |
| 炼金池 | poolAlchemy |
sunnyQuartz + QUARTZBLOCK_META_CHISELED |
sunnyQuartzSlab meta 0 |
| 召唤池 | poolConjuration |
elfQuartz + QUARTZBLOCK_META_CHISELED |
elfQuartzSlab meta 0 |
模板原文
layer 0: " " " " " p " " " " " " " " "
layer 1: "sssss" "s s" "s s s" "s s" "sssss" " hfh " " x "
layer 2: " " " sss " " sss " " sss " " fff " " fff " " f f "
尺寸与控制器
- 控制器
x位于 layer 1、第 6 行(index 6)、第 2 列(index 2) - 占据范围:
dx−2…+2(宽 5)、dy−1…+1(高 3)、dz−6…0(长 7) - 即 5 × 3 × 7
- 魔力池本体
p在控制器正上方 4 格、后 6 格处(layer 0)
二、精灵传送门 alfPortal
6 层 × 7×7 的对称结构:
layer 0: " " " " " lll " " lnl " " lll " " " " "
layer 1: " " " l l " " l l " " " " l l " " l l " " "
layer 2: " l l " " " "l l" " " "l l" " " " l l "
layer 3: "n l l n" " " "l l" " " "l l" " " "n l l n"
layer 4: "llglgll" "l.....l" "g.....g" "l.....l" "g.....g" "l.....l" "llgxgll"
layer 5: " " " lllll " " llgll " " lglgl " " llgll " " lllll " " "
尺寸与控制器
- 控制器
x位于 layer 4、第 6 行、第 3 列 - 占据范围:
dx−3…+3(宽 7)、dy−4…+1(高 6)、dz−6…0(长 7) - 即 7 × 6 × 7
- 结构含 4 个
n(自然基岩四角)、内部l.....l逐层交替g,g为闪烁活木(meta 5)
旋转
仅支持水平 4 向旋转,由 Facing2D 驱动:
NORTH(0) / EAST(1) / SOUTH(2) / WEST(3)。
MultiblockHelper.transformedX/transformedZ 用
root + dz*dir.dx - dx*dir.cw_dx 做坐标变换,
没有 Y 轴翻转分支,即不支持上下翻转。
拆除
由 ItemDisassemblyWrench /
ItemSelectiveWrench 整块拆解,
需要 StructureLib 全息投影支持,
故两者注册受 Mods.StructureLib.isModLoaded() 门控。
全息投影注册(postInit)
if (Mods.StructureLib.isModLoaded()) {
HoloProjectorSupport.registerOrientedWithStructureLib(poolInfusion, BHBlocks.autoPoolInfusion, TileAdvancedCraftingPool.class);
HoloProjectorSupport.registerOrientedWithStructureLib(poolAlchemy, BHBlocks.autoPoolAlchemy, TileAdvancedAlchemyPool.class);
HoloProjectorSupport.registerOrientedWithStructureLib(poolConjuration, BHBlocks.autoPoolConjuration, TileAdvancedConjurationPool.class);
HoloProjectorSupport.registerOrientedWithStructureLib(alfPortal, BHBlocks.autoPortal, TileAdvancedAlfPortal.class);
}
Mods 枚举来自 GregTech(import gregtech.api.enums.Mods),
但判定的是 StructureLib 是否加载。