跳到正文
烈焰甘蔗Wiki

TileEntityPamGrinder

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

注册信息

属性 值 来源
TileEntity 注册名 PamGrinder HarvestCraft.java:102
类 TileEntityPamGrinder —
关联方块 Grinder / Mincer(harvestcraft:grinder) BlockRegistry.java:640-641
GUI ID 10 BlockPamGrinder.java:91
容器类 ContainerPamGrinder GuiHandler.java:79
GUI 类 GuiPamGrinder GuiHandler.java:119

⚠ 本 TileEntity 的注册是无条件的(HarvestCraft.java:102),而方块 harvestcraft:grinder 只在 enablemeatGrinder 为真时才注册(BlockRegistry.java:640,默认值 false)。默认配置下这是一条指向不存在方块的孤儿注册。要看到机器必须开启 backports.enablemeatGrinder。

槽位数量与布局

private ItemStack[] grinderItemStacks = new ItemStack[3](TileEntityPamGrinder.java:27)

槽位 内容 槽位类 GUI 坐标(ContainerPamGrinder.java:28-30)
0 待绞的原料 SlotPamGrinder (80, 23)
1 产物 1 SlotPamResult(只可取出) (62, 54)
2 产物 2 SlotPamResult(只可取出) (98, 54)

共 3 槽,与 Presser 布局逐槽相同。SlotPamGrinder 只接受 ItemMincedMeat 实例。

注意:两个产物槽的内容相同 —— 同一 meta 的 mincedmeatcookedItem,不是两种不同产物。

可处理的操作

操作 说明
查询配方 GrinderRecipes.getGrindingResult(ItemStack) → ItemStack[2]
输入类型 ItemMincedMeat 的 8 个 meta(beef / pork / chicken / fish / mutton / rabbit / turkey / venison)

配方条数:无法静态确定(动态注册)

GrinderRecipes 在类初始化时从矿辞典动态构建:

for (meta = 0; meta < 8; ++meta)                          // ItemMincedMeat.meatTypes.length
    for (ItemStack oreStack : OreDictionary.getOres("listAll" + meatTypes[meta] + "raw"))
        if (oreStack 的 Item 是 ItemMincedMeat) continue
        registerItemRecipe(oreStack, 绞熟肉 meta, 绞熟肉 meta)
参数 值 来源
肉类种类数 8 base/item/ItemMincedMeat.java 的 meatTypes
矿辞典名模式 "listAll" + 种类名 + "raw" GrinderRecipes 构造器
单种类条数 = 该矿辞典名在 OreDictionary 中的条目数,由其它模组决定 —

总条数 = Σ(8 个矿辞典名各自的条目数),在纯净 1.7.10 下远小于跨模组整合包。本仓库无法给出确定数字。

这是「枚举/循环注册」陷阱的反向例子:grep registerItemRecipe 会得到 0(全部在循环内),而真实条数是一个随整合包变化的正整数。

随包文档 HarvestCraft 1.7.10Lb Recipes.txt 没有 //GRINDER RECIPES 段落,与它作为默认关闭的 backport 一致。

处理耗时 / 速率

参数 值 行
完成判定 grinderCookTime >= 125 → 125 tick = 6.25 秒 TileEntityPamGrinder.java:109
进度条换算 grinderCookTime * par1 / 125 :97
GUI 进度条像素 24 GuiPamGrinder.java:36
燃料 无 :20 类声明

与 Presser 数值完全相同(125 tick、无燃料、3 槽、双产出)。

源码缺陷

  1. 孤儿 TileEntity 注册:HarvestCraft.java:102 无条件注册,而方块受 enablemeatGrinder(默认 false)门控 —— 默认配置下这条注册指向一个不存在的方块。
  2. 方块放置时抛 ClassCastException(在方块类,非本类):BlockPamGrinder.java:65 把刚创建的 TileEntityPamGrinder 强转为 TileEntityOven;同文件 :70 已正确写作 (TileEntityPamGrinder)。触发条件:手持改名物品放置。
  3. 双产出内容重复:registerItemRecipe(oreStack, 绞熟肉 meta, 绞熟肉 meta) 把同一物品同时写入两个槽,「双产出」名不副实。
  4. 多方块 / 控制器 / 可否旋转:源码未定义。

相关条目

浏览全部模组