TileEntityPamAnimalTrap
事实基准:
harvestcraft-1.3.14-GTNH.jar(MC 1.7.10 / Forge 10.13.4.1614)CFR 0.152 反编译源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | PamAnimalTrap |
HarvestCraft.java:100 |
| 类 | TileEntityPamAnimalTrap |
— |
| 关联方块 | Animal Trap(harvestcraft:animaltrap) |
BlockRegistry.java:652 |
| GUI ID | 8 |
BlockPamAnimalTrap.java:77 |
| 容器类 | ContainerPamAnimalTrap |
GuiHandler.java:73 |
| GUI 类 | GuiPamAnimalTrap |
GuiHandler.java:113 |
槽位数量与布局
private ItemStack[] inventory = new ItemStack[19](TileEntityPamAnimalTrap.java:30)
| 槽位 | 内容 | 数量 |
|---|---|---|
| 0–17 | 捕获物(产物区,自动填充) | 18 |
| 18 | 诱饵 | 1 |
run() 每次取 0–17 中第一个空槽放入产物,并调 func_70298_a(18, 1) 扣 1 个诱饵(:203)。
可处理的操作
| 操作 | 判定 | 行 |
|---|---|---|
canRun() |
(槽18 是 grainbait / fruitbait / veggiebait 之一) && countFlowers() >= 5 |
:187 |
countFlowers() |
半径 2 圆内、同 Y 层的 BlockDirt 或 BlockGrass 数量 |
:124-134 |
| 抽取产物 | TrapRecipes.getRandomOutputForBait(ANIMAL_TRAP_RECIPES, 槽18 的 Item) → 加权随机 |
:193 |
半径判定为半径 2 的圆并排除 4 个角格(:112),最多 20 格。
处理耗时 / 速率(两个数字,勿混)
| 概念 | 公式 | 行 | 含义 |
|---|---|---|---|
getRunTime() 环境速率 |
起始 3500 tick;每个 BlockDirt/BlockGrass ×0.95;每个相邻 pamanimalTrap ÷0.85 |
:103-118 |
越小越快 |
getRunTime(ItemStack) 诱饵续航 |
三种诱饵之一 → 3200 tick | :209-214 |
诱饵提供的总工作时长 |
产出判定 produceTime >= Math.floor(getRunTime())(:167)。runTime 归零且 canRun() 时按 getRunTime(bait) 续期(:149-150)。
推算(源码常量):20 格全是泥土/草 → 3500 × 0.95^20 ≈ 2357 tick ≈ 118 秒/件;空旷处 3500 tick = 175 秒/件。
⚠ 语义易写反:
3500是产出间隔,不是冷却时间。周围越「肥沃」产得越快。
产物(TrapRecipes.ANIMAL_TRAP_RECIPES,加权随机)
| 诱饵 | 条数 | 行 |
|---|---|---|
grainbaitItem |
7 | TrapRecipes.java:26-32 |
fruitbaitItem |
6 | TrapRecipes.java:33-38 |
veggiebaitItem |
8 | TrapRecipes.java:39-46 |
| 合计 | 21 | TrapRecipes.java:26-46 |
两参重载 addAnimalRecipe(bait, out) 把权重默认为 1(TrapRecipes.java:86-88);显式权重最高为 3(:28、:34、:42)与 2(:30、:36、:44)。
其中 6 个产物是未反混淆的原版物品(Items.field_151082_bd、field_151076_bf、field_151116_aA、field_151008_G、field_151110_aK、field_151103_aS、field_151147_al)——本仓库无 MCP 映射,不断言其具体名称。
源码缺陷
isStackValidForSlot恒返回 false(:240-242)、func_94041_b恒返回 false(:244-246)→ 完全不支持漏斗/管道自动化,19 格捕获物只能手动开 GUI 取。- 方法名残留:取产物的私有方法被命名为
getComb(),与 Apiary 的蜂蜡产物方法同名,纯复制粘贴。 - 局部变量未改名:
queenBee(:150)在本类中指代的是诱饵,不是蜂王。 countFlowers()名实不符:统计泥土/草,与花无关(:124)。- 多方块 / 控制器 / 可否旋转:源码未定义。
相关条目
- 方块:Animal Trap
- 兄弟:Fish Trap(同构,统计液体 / 1 种诱饵)、Apiary(统计花与作物)