跳到正文
烈焰甘蔗Wiki

Presser(压榨机)

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

基本信息

属性 值 来源
注册名 harvestcraft:presser BlockRegistry.java:639
方块类 BlockPamPresser extends BlockContainer BlockPamPresser.java:29-30
字段 BlockRegistry.pamPresser BlockRegistry.java:50
构造 new BlockPamPresser() BlockRegistry.java:450
显示名 tile.presser.name = Presser en_US.lang:34
硬度 1.0f BlockRegistry.java:450
爆炸抗性 未设置(默认 2.0F) —
TileEntity TileEntityPamPresser BlockPamPresser.java:42-44
GUI ID 1 BlockPamPresser.java:91
条件注册 无,无条件注册 BlockRegistry.java:639
多方块 否,源码未定义任何多方块结构 —
朝向 放置时按玩家朝向设 0–3 metadata BlockPamPresser.java:51-63

槽位布局(TileEntityPamPresser.java:27,combPresserItemStacks = new ItemStack[3])

槽位 内容 槽位类 GUI 坐标(ContainerPamPresser.java:28-30)
0 待压榨原料 SlotPamPresser (80,23)
1 主产物 SlotPamResult(只可取出) (62,54)
2 副产物 SlotPamResult(只可取出) (98,54)

Presser 是双产出机器:一次压榨同时给出两件产物(如果实 → 果汁 + 果饵)。

处理什么 / 产什么

配方表 PresserRecipes,查询入口 PresserRecipes.getPressingResult(ItemStack),返回 ItemStack[](长度 2)。

配方条数 = 43(集合运算)

私有构造器 PresserRecipes.java:19-64 内 this.registerItemRecipe(...) 调用连续出现在 :20–:62,共 43 处;无枚举/循环注册。

必须排除的干扰项::70 是 registerItemRecipe(Block, ItemStack, ItemStack) 辅助方法的方法体,不是配方点;:73 与 :82 是另两个辅助方法声明。

43 条与随包文档 HarvestCraft 1.7.10Lb Recipes.txt 的 //PRESSER RECIPES 段落(42 行条目)基本吻合。

产出类型分布(按源码调用参数统计):

副产物 条数 代表行
果饵 fruitbaitItem 19 :22–:31,35-40,46-51,61-62
谷物饵 grainbaitItem 13 :33,34,52,53,54,56,58,59,60 等
蔬菜饵 veggiebaitItem 4 :42,55,57
无副产物(null) 4 :20,41,43,44
蜂蜡 beeswaxItem 1 :21

处理耗时 / 速率

参数 值 来源
完成判定 combPresserCookTime >= 125 → 125 tick = 6.25 秒 TileEntityPamPresser.java:109
进度条分母 combPresserCookTime * par1 / 125 TileEntityPamPresser.java:97
GUI 进度条像素宽度 24 GuiPamPresser.java:36
燃料 无。不实现 IFuelHandler,不需要燃料槽 TileEntityPamPresser.java:20
驱动方式 持续 tick,无需玩家在旁 TileEntityPamPresser.java:107

Presser(125 tick)比 Oven(100 tick)与 Churn/Quern(200 tick)都快,且省去燃料槽。

交互

触发 行为 来源
右键 openGui(..., 1, ...);player.func_70093_af() 为真时不打开 BlockPamPresser.java:86-93
放置 设 0–3 朝向 BlockPamPresser.java:51-63
破坏 掉落 Item.func_150898_a(BlockRegistry.pamPresser),并散落容器内物品 BlockPamPresser.java:46-48,69-84

源码缺陷

  1. 重命名放置时抛 ClassCastException。BlockPamPresser.java:65:
    if (par6Ist.func_82837_s()) {
        ((TileEntityOven)par1World.func_147438_o(xcoord, ycoord, zcoord)).func_145951_a(par6Ist.func_82833_r());
    }
    
    刚放置的 Presser 的 TileEntity 是 TileEntityPamPresser,却被强转为 TileEntityOven。触发条件是手持物品带自定义名称(铁砧改名,func_82837_s() = hasDisplayName)。这显然是从 BlockPamOven 复制粘贴后忘了改类型——同文件 :70 处的同类代码已正确写作 (TileEntityPamPresser)。
  2. 多方块 / 控制器 / 可否旋转:源码未定义。

相关条目

订正记录

  • 本条目完全重写。旧版基于 MC 1.12.2 的 MatrexsVigil/harvestcraft fork(master 分支),引用了该 fork 的类名与行号。旧版行号一律作废,现全部改以 harvestcraft-1.7.10-GTNH 反编译源码行号为准。
浏览全部模组