多方块系统
基本信息
| 属性 | 值 |
|---|---|
| 抽象基类 | 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 体系与
各具体方块类决定,未逐一读源码验证。
按本仓库规则,不编造未验证字段。