跳到正文
烈焰甘蔗Wiki

TileEntityPamApiary

事实基准:harvestcraft-1.3.14-GTNH.jar(MC 1.7.10 / Forge 10.13.4.1614)CFR 0.152 反编译源码。

注册信息

属性 值 来源
TileEntity 注册名 PamApiary HarvestCraft.java:94
类 TileEntityPamApiary —
关联方块 Apiary(harvestcraft:apiary) BlockRegistry.java:638
注册是否条件化 否,9 个 TileEntity 全部无条件注册 HarvestCraft.java:94-102
GUI ID 0 BlockPamApiary.java:77
容器类 ContainerPamApiary GuiHandler.java:49
GUI 类 GuiPamApiary GuiHandler.java:89

槽位数量与布局

private ItemStack[] inventory = new ItemStack[19](TileEntityPamApiary.java:32)

索引常量在源码中显式定义(TileEntityPamApiary.java:33-35):

常量 值
SLOT_WAX_MIN 0
SLOT_WAX_MAX 17
SLOT_QUEENBEE 18
槽位 内容 数量
0–17 蜂产品(蜂蜡块 / 蜂巢 / 幼虫),自动产出 18
18 蜂王 ItemRegistry.queenbeeItem 1

容器 GUI 排布(ContainerPamApiary):产物区 6 列 × 3 行(双层循环 x<6 / y<3,槽索引 y + x*3,落在 0–17),蜂王槽单独放在第 19 格。蜂王槽的堆叠上限被限制为 1(SlotPamApiary.func_75219_a)。

可处理的操作

操作 判定 行
能否运行 canRun() 槽 18 是蜂王 且 getItemDamage() != getMaxDamage() :173-175
产出物 getComb() 见下 :180-194
执行一轮 run() 取 1 件产物放入 0–17 的首个空槽,蜂王 damageItem(1) :200-…

isStackValidForSlot 与 func_94041_b 均写作 slot == 18 && stack.func_77973_b() == ItemRegistry.queenbeeItem(:240、:244)—— 只接受槽 18 放蜂王,其余槽位一律拒绝。

处理耗时 / 速率(两个独立数字,勿混)

概念 公式 行
getRunTime() 环境速率 起始 3500 tick;半径 2 圆内每个 BlockFlower / BlockCrops / BlockPamCrop / BlockPamNormalGarden ×0.95;每个相邻 pamApiary ÷0.85 :109-123
getRunTime(ItemStack) 蜂王续航 queenbeeItem → 3200 tick :212-213

产出判定 produceTime >= Math.floor(getRunTime())(:167)。环境扫描为半径 2 的圆并排除 4 个角格(:117),最多 20 格。

推算(源码常量,非估算):20 格全是花/作物时 3500 × 0.95^20 ≈ 2357 tick ≈ 118 秒/件;空旷处 3500 tick = 175 秒/件。

产物概率(getComb(),:180-194)

条件 产物 概率
蜂王耐久 == 17 ItemRegistry.grubItem 100%
否则 nextInt(100) < 50 ItemRegistry.waxcombItem 50%
否则 < 95 ItemRegistry.honeycombItem 45%
否则 ItemRegistry.grubItem 5%

源码缺陷

  1. 「蜂王耗尽即移除」是死代码。TileEntityPamApiary.java:143-147:
    queenBee.field_77994_a -= 0;                       // 减 0
    if (queenBee.field_77994_a == 0) queenBee = null;  // 只改局部变量
    
    ① 减的是 0,恒为无操作;② queenBee 是局部变量,置 null 不会写回 inventory[18]。该分支永远无法清空蜂王槽。
  2. 蜂产品无法自动化取出。func_94041_b 对 0–17 槽恒返回 false(:244),漏斗/管道插入被完全拒绝。
  3. 局部变量名 queenBee(:145、:150)在三个陷阱/养蜂类中被广泛复制复用。

相关条目

浏览全部模组