多方块系统

基本信息

属性 值
抽象基类 com.carpentersblocks.data.AbstractMultiBlock
唯一实现 GarageDoor extends AbstractMultiBlock implements ISided(GarageDoor.java:23)
连通上限 FeatureRegistry.multiBlockSizeLimit = 500(FeatureRegistry.java:30)
控制器 无

裁定:只有车库门是多方块

全仓库 extends AbstractMultiBlock 的类只有 GarageDoor 一个。 因此本 mod 的「多方块」能力仅限车库门。

FeatureRegistry.java:62 的配置注释原文可直接引用:

"This controls how many blocks can be connected as a single entity.
Note: only applies to Garage Doors."

工作方式:相邻扫描,无控制器

AbstractMultiBlock(AbstractMultiBlock.java:24–:30)的做法:

public final Set<TEBase> getBlocks(TEBase TE, Block block) {
    Set<TEBase> set = new HashSet<TEBase>();
    int matchData = getMatchingDataPattern(TE);
    ForgeDirection[] dirs = getLocateDirs(TE);
    addAndLocateBlocks(TE, block, matchData, dirs, set);
    return set;
}

从当前 TileEntity 出发,按 getMatchingDataPattern() 取得要匹配的 metadata 值,再沿 getLocateDirs() 返回的 ForgeDirection 方向 逐格扫描相邻方块,把连成一片的同型方块收进 Set。

超过上限时在 AbstractMultiBlock.java:42 被截断:

if (set.size() > FeatureRegistry.multiBlockSizeLimit) { ... }

明确否定项(不要编造)

  • 没有控制器方块:范围由相邻扫描确定,玩家无需放置任何控制器。 不存在「几×几×几 + 控制器」的传统多方块结构。
  • 没有固定的 N×N×N 体积:车库门可以是任意长度的一整片(上限 500 格), 不是 3×3×3 之类。
  • 斜方块、楼梯、栅栏门都不是多方块。

能否旋转 / 能否拆除

本条目不记录这两项。原因:AbstractMultiBlock 源码中 没有任何朝向(ForgeDirection 之外的旋转)或 拆除校验相关方法;旋转与拆除规则由 BlockCoverable 体系与 各具体方块类决定,未逐一读源码验证。 按本仓库规则,不编造未验证字段。

相关条目