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 是否加载。