Chocolate Sprinkles Cake(pamchocolatesprinkleCake)
事实基准:
harvestcraft-1.3.14-GTNH.jar(MC 1.7.10 / Forge 10.13.4.1614)CFR 0.152 反编译源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册名 | harvestcraft:pamchocolatesprinkleCake |
BlockRegistry.java:819 |
| 源码类 | BlockPamCake(extends BlockCake implements IEdibleBlock) |
BlockPamCake.java:24-26 |
| 字段 | BlockRegistry.pamchocolatesprinkleCake |
BlockRegistry.java:629 |
| 构造 | new BlockPamCake(4).func_149711_c(0.5f).func_149658_d("harvestcraft:pamchocolatesprinklecake").func_149663_c("pamchocolatesprinkleCake").func_149647_a(HarvestCraft.tabHarvestCraft3) |
BlockRegistry.java:629 |
| 显示名 | tile.pamchocolatesprinkleCake.name = Chocolate Sprinkles Cake |
en_US.lang:228 |
| 可食用片数(= meta 数) | 4 | BlockRegistry.java:629(构造器第 1 参数) |
| 硬度 | 0.5f(func_149711_c) |
BlockRegistry.java:629 |
| 爆炸抗性 | 未调用 func_149722_d,沿用原版 BlockCake 默认值 |
— |
| TileEntity | 无 | — |
| 多方块 | 否,单方块,无朝向覆写 | — |
| 创造标签 | tabHarvestCraft3 |
BlockRegistry.java:629 |
片数是构造期硬编码的,
Config.java中没有任何蛋糕相关配置项 —— 即不可配置。10 个变体的片数在BlockRegistry.java:625-634逐个传参,实际为 3 / 4 / 5 / 6 四种,不是统一的 6 片。
食用效果
| 项 | 值 | 来源 |
|---|---|---|
| 每片食物值 | 2 | BlockPamCake.java:99(有 AppleCore)/ :83(无 AppleCore) |
| 每片饱和度 | 0.1f | 同上 |
| 整块吃完总计 | 8 食物值 / 0.4 饱和度 | 上两行 × 4 片(计算值) |
| 回血 / 生命回复 | 无 —— 全类无任何 addPotionEffect 调用 |
BlockPamCake.java 全文 |
| 特殊增益(药水效果) | 无 —— 只有上述食物值与饱和度 | 同上 |
| 满饥饿时能否再吃 | 不能(isEdibleAtMaxHunger 恒为 false) |
见下 |
食用走的是 consume(...)(BlockPamCake.java:76-91),两条分支给出同一个数值:
if (HarvestCraft.isLoadedAppleCore) {
this.onEatenCompatibility(new ItemStack((Block)this), player); // :81
} else {
player.func_71024_bL().func_75122_a(2, 0.1f); // :83
}
getFoodValues 同样返回 new FoodValues(2, 0.1f)(BlockPamCake.java:99)。注意 BlockPamCake.java:98-100 带 @Optional.Method(modid="AppleCoreAPI") 注解,即该方法只在装了 AppleCore 时存在。
isEdibleAtMaxHunger 恒为 false
- 字段声明并初始化为
false:BlockPamCake.java:28 - 唯一的 setter
setEdibleAtMaxHunger(boolean):BlockPamCake.java:93-95 - 全 mod 范围内没有任何一处调用该 setter(
grep -rn "setEdibleAtMaxHunger"仅命中声明处与定义处) - 因此
:77的player.func_71043_e(this.isEdibleAtMaxHunger)始终以false调用,即饥饿条满时无法食用。
放置形态
| 项 | 值 | 来源 |
|---|---|---|
| metadata 取值 | 0 ~ 3,共 4 个形态 | BlockRegistry.java:629 + BlockPamCake.java:39 |
| 碰撞箱宽度 | 0.0625 + 0.875 * (meta / 4),随吃掉逐片收缩 |
BlockPamCake.java:36-48 |
| 高度 | 0.5 |
BlockPamCake.java:40-41 |
| 选择框 | 与碰撞箱同宽,但不含 0.0625 的 Y 偏移 |
BlockPamCake.java:59-65 |
| 食用后 | meta + 1;当 nextMeta >= 4 时整个方块消失 |
BlockPamCake.java:85-90 |
源码没有
PropertyInteger,metadata 是用world.func_72805_g(x,y,z)直接读的原始值(BlockPamCake.java:37、:51、:60、:85),因此不存在 1.12.2 版那个「BITES属性范围 0-6」的声明。
物品形态
| 项 | 值 | 来源 |
|---|---|---|
| 物品注册名 | harvestcraft:chocolatesprinklecakeItem |
ItemRegistry.java:2263 |
| 字段 | ItemRegistry.chocolatesprinklecakeItem |
声明 ItemRegistry.java:1460 |
| 类 | ItemPamCakeFood(extends ItemReed) |
ItemPamCakeFood.java:9-10 |
| 构造实参 | (8, snacksaturation, false, BlockRegistry.pamchocolatesprinkleCake) |
ItemRegistry.java:1460 |
| 显示名 | item.chocolatesprinklecakeItem.name = Chocolate Sprinkles Cake |
en_US.lang:753 |
⚠️ 前 3 个构造参数被丢弃:ItemPamCakeFood 的构造器体内只有 super(cake);(ItemPamCakeFood.java:11-13),amount / saturation / isWolfFood 没有传给任何父类构造器。所以上表的 8(声明的食物值)与 snacksaturation(饱和度)全部无效 —— 这个物品本身没有任何食物属性。真正可食用的是放置后的方块。
本类继承的是 ItemReed(ItemPamCakeFood.java:10)—— 它持有蛋糕方块并据此提供 getItemStackFromBlock 与未本地化名,因此实际承担了「蛋糕方块的物品形态」这一角色;它与作物的 ItemPamSeedFood 毫无继承关系。
配方
配方类型 ShapelessOreRecipe(无序 + 矿物词典),登记于 PamFoodRecipes.java:438:
toolBakeware + foodCocoapowder + listAllsugar + foodDough + dyeRed + dyeGreen + dyeYellow -> chocolatesprinklecakeItem
| 槽位 | 矿物词典名 |
|---|---|
| 1 | toolBakeware |
| 2 | foodCocoapowder |
| 3 | listAllsugar |
| 4 | foodDough |
| 5 | dyeRed |
| 6 | dyeGreen |
| 7 | dyeYellow |
破坏掉落
BlockPamCake 未覆写任何掉落方法(getItemDropped / quantityDropped 在 BlockPamCake.java 全文中均无覆写),行为完全继承原版 BlockCake。原版源码不在本仓库内,故不断言具体掉落物。
源码缺陷
ItemPamCakeFood的食物参数是死参数(ItemPamCakeFood.java:11-13)——ItemRegistry.java中 10 处调用传入的饥饿值 / 饱和度全部无效。setEdibleAtMaxHunger无调用者(BlockPamCake.java:93-95)—— 配置意图无法生效,饥饿满时一律吃不了。- 构造器里的
func_149649_H()(BlockPamCake.java:32)调用点无对应可读语义,不做断言。
相关条目
- Cake(蛋糕总览) — 10 个蛋糕的完整对照表
- ItemPamCakeFood — 蛋糕的物品形态基类