跳到正文
烈焰甘蔗Wiki

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] 已订正(源码回核)

  1. 尺寸 3×3×3 = 27 正确(AlvearyMultiblockSizeLimits:getMinimumNumberOfBlocksForAssembledMachine() = 27,min/max X/Y/Z 均为 3)。但原文缺了两条必备的附加条件,见「结构要求」。
  2. 「顶层放蜡烛或装饰」—— 错(幻觉模式 6:语义写反)。AlvearyController.isMachineWhole 强制要求顶部上方一整层铺满木板台阶(wood slab,且必须是下半块,meta & 8 == 0)(AlvearyController.java:170-186)。蜡烛不是结构件。
  3. 参与方块表两行错误:
    • 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 方块。
  4. 注册名大小写错:Forestry:alveary(非 forestry:Alveary)。原文全部 8 行都用同一注册名,实际靠 metadata 区分。
  5. 原文「控制器 | AlvearyController」列在方块表里,暗示某块方块是控制器 —— 错,控制器是 MultiblockLogicAlveary.createNewController 动态创建的虚拟对象(MultiblockLogicAlveary.java:33)。
  6. 原文「只能放在开放空间(需要空气方块)」—— 表述不准:校验的是顶层外扩一圈 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) —

必备附加条件(原文遗漏)

  1. 顶部上方一层必须是木板台阶:slabY = maximumCoord.posY + 1 的 3×3 全部满足 BlockUtil.isWoodSlabBlock(block) 且 (meta & 8) == 0(下半块)。错误键 for.multiblock.alveary.error.needSlabs。
  2. 顶层外扩一圈须留空:(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 是不同方块)
浏览全部模组