Alveary Multiblock
基本信息
| 属性 | 值 |
|---|---|
| 参与方块 | Forestry:alveary(BlockAlveary,metadata 0-7) |
| 尺寸 | 3 × 3 × 3 = 27 格(最小 = 最大,固定不可扩展) |
| 控制器 | 虚拟控制器 AlvearyController,不对应任何特定方块 |
| 控制器类 | AlvearyController extends RectangularMultiblockControllerBase(apiculture/multiblock/AlvearyController.java:50) |
| TileEntity | TileAlvearyPlain / TileAlvearySwarmer / TileAlvearyFan / TileAlvearyHeater / TileAlvearyHygroregulator / TileAlvearyStabiliser / TileAlvearySieve |
[!WARNING] 已订正(源码回核)
- 尺寸 3×3×3 = 27 正确(
AlvearyMultiblockSizeLimits:getMinimumNumberOfBlocksForAssembledMachine() = 27,min/max X/Y/Z 均为 3)。但原文缺了两条必备的附加条件,见「结构要求」。- 「顶层放蜡烛或装饰」—— 错(幻觉模式 6:语义写反)。
AlvearyController.isMachineWhole强制要求顶部上方一整层铺满木板台阶(wood slab,且必须是下半块,meta & 8 == 0)(AlvearyController.java:170-186)。蜡烛不是结构件。- 参与方块表两行错误:
Candle | forestry:Candle | TileCandle——TileCandle属于Forestry:candle(BlockCandle.java:95)和Forestry:stump(BlockStump.java:69),不是 alveary 部件。Swarm | forestry:Alveary | TileSwarm——TileSwarm由Forestry:beehives创建(BlockBeehives.java:58),不是 alveary 方块。- 注册名大小写错:
Forestry:alveary(非forestry:Alveary)。原文全部 8 行都用同一注册名,实际靠 metadata 区分。- 原文「控制器 | AlvearyController」列在方块表里,暗示某块方块是控制器 —— 错,控制器是
MultiblockLogicAlveary.createNewController动态创建的虚拟对象(MultiblockLogicAlveary.java:33)。- 原文「只能放在开放空间(需要空气方块)」—— 表述不准:校验的是顶层外扩一圈 5×5 中不属于本多方块的格子必须
!isOpaqueCube(),允许玻璃、台阶等半透明方块。
结构要求
| 参数 | 值 | 证据 |
|---|---|---|
| 最小 X / Y / Z | 3 / 3 / 3 | AlvearyMultiblockSizeLimits.getMinimumXSize/YSize/ZSize |
| 最大 X / Y / Z | 3 / 3 / 3 | 同上 getMaximumXSize/YSize/ZSize |
| 最小组装方块数 | 27 | getMinimumNumberOfBlocksForAssembledMachine() = 27 |
| 控制器 | 虚拟 AlvearyController |
MultiblockLogicAlveary.java:33 |
| 可否旋转 | 无旋转概念,尺寸固定 3×3×3,功能件可放任意一面/任一层(level 0、1) | — |
| 可否拆除 | 可。任一格被破坏即解体,拆除时会 dumpInventoryIntoWorld 把蜂箱内物品掉在原位(AlvearyController.onBlockRemoved) |
— |
必备附加条件(原文遗漏)
- 顶部上方一层必须是木板台阶:
slabY = maximumCoord.posY + 1的 3×3 全部满足BlockUtil.isWoodSlabBlock(block)且(meta & 8) == 0(下半块)。错误键for.multiblock.alveary.error.needSlabs。 - 顶层外扩一圈须留空:
(maxY)层、范围[minX-1, maxX+1] × [minZ-1, maxZ+1]去掉多方块自身后,所有方块必须!isOpaqueCube()。错误键for.multiblock.alveary.error.needSpace。
逐层 / 逐格校验
| 位置 | 要求 | 错误键 |
|---|---|---|
| 顶层(level == 2,共 9 格) | 必须全部是 TileAlvearyPlain |
for.multiblock.alveary.error.needPlainOnTop |
| 内部(3×3×3 中唯一不接触外表面的中心格,1 格) | 必须是 TileAlvearyPlain |
for.multiblock.alveary.error.needPlainInterior |
| 底层与中层(level 0、1,共 18 格,含 8 个侧面格) | 任意合法 alveary 部件均可 | — |
| 非部件方块 | 一律不允许(isBlockGoodForInterior 默认抛异常,MultiblockControllerBase.java:487-514) |
for.multiblock.error.invalid.interior |
⚠️ 注意:按
isGoodForInterior的实现,中心格也必须是 Plain,Sieve 不能放在中心。
参与方块(BlockAlveary.Type)
| Metadata | 类型 | TileEntity | 角色 | 可放位置 |
|---|---|---|---|---|
| 0 | PLAIN | TileAlvearyPlain |
基础填充 | 任意(顶层/中心强制) |
| 1 | ENTRANCE | TileAlvearyPlain |
遗留类型,创造栏跳过、掉落按 PLAIN | — |
| 2 | SWARMER | TileAlvearySwarmer |
蜜蜂分群 | level 0/1 |
| 3 | FAN | TileAlvearyFan |
风扇降温 | level 0/1 |
| 4 | HEATER | TileAlvearyHeater |
加热升温 | level 0/1 |
| 5 | HYGRO | TileAlvearyHygroregulator |
湿度调节 | level 0/1 |
| 6 | STABILIZER | TileAlvearyStabiliser |
稳定温湿度 | level 0/1 |
| 7 | SIEVE | TileAlvearySieve |
蜂巢产物分离 | level 0/1 |
全部共用注册名 Forestry:alveary。metadata 1(ENTRANCE)在 getSubBlocks 中被跳过(BlockAlveary.java:62-68),getDrops 与 getDamageValue 均把它归为 PLAIN(BlockAlveary.java:79-90)。方块硬度 1.0,斧 level 0(BlockAlveary.java:56-59)。
形成机制
MultiblockLogicAlveary 在检测到邻接 alveary 部件后创建 AlvearyController,逐格执行 isMachineWhole():先由 RectangularMultiblockControllerBase 校验尺寸与逐层规则(RectangularMultiblockControllerBase.java:18-140),再由 AlvearyController.isMachineWhole 追加「顶部台阶」与「顶层留空」两条校验。全部通过才 onMachineAssembled。
功能
Alveary 是高级蜂箱 multiblock,提供比普通 Apiary / Beehouse 更精密的蜜蜂养殖环境控制。
气候控制
| 组件 | 接口 | 作用 |
|---|---|---|
TileAlvearyHeater |
IAlvearyComponent.Climatiser |
升温 |
TileAlvearyFan |
IAlvearyComponent.Climatiser |
降温 |
TileAlvearyHygroregulator |
IAlvearyComponent.Climatiser |
湿度调节 |
TileAlvearyStabiliser |
IAlvearyComponent.Climatiser |
减缓温湿度波动 |
温湿度基线取自控制器所在位置的群系(getExactTemperature / getExactHumidity,AlvearyController.java),再叠加各部件的 addTemperatureChange / addHumidityChange。
温湿度枚举
- 温度
EnumTemperature:icy, cold, normal, warm, hot, hellish - 湿度
EnumHumidity:arid, normal, damp, wet
产蜂逻辑
- 控制器自带
IBeekeepingLogic:BeeManager.beeRoot.createBeekeepingLogic(this) - 蜜蜂库存 9 格:
new InventoryBeeHousing(9, getAccessHandler())(AlvearyController构造函数) - 附带
AlvearyBeeModifier繁殖修正
电路板支持
- 部件可实现
IAlvearyComponent.BeeModifier/BeeListener/Climatiser/Active,由控制器聚合 ChipsetManager电路系统可自动化管理
数值
| 数值 | 值 | 证据 |
|---|---|---|
| 蜜蜂工作周期 | 550 tick/cycle | PluginApiculture.ticksPerBeeWorkCycle = 550(PluginApiculture.java:138) |
| 内部蜜蜂库存 | 9 格 | new InventoryBeeHousing(9, ...) |
| 尺寸 | 27 格(3×3×3) | AlvearyMultiblockSizeLimits |
限制
- 尺寸固定 3×3×3,无法扩展
- 必须填满全部 27 格
- 顶层 9 格与中心 1 格必须是 PLAIN
- 顶部上方一层必须铺下半块木板台阶
- 顶层外一圈必须非不透明
第三方 mod 集成
- IC2:无直接集成(IC2 集成在 Energy/Factory 模块,本多方块不涉及)
- BuildCraft:无直接集成
相关条目
- HiveDecorator - 野外蜂巢世界生成(
Forestry:beehives,与 alveary 是不同方块)