跳到正文
烈焰甘蔗Wiki

Cinnamon Wood(pamCinnamon)

基本信息

属性 值
注册名 harvestcraft:pamCinnamon
源码类 BlockPamFruitingLog.java —— 继承 BlockRotatedPillar(有朝向),不是 BlockPamFruit;全 mod 只有 3 个这种方块
构造 BlockRegistry.java:492
注册 BlockRegistry.java:711
贴图 harvestcraft:cinnamon_top(顶/底)、_0(侧面)、_1、_2,共 4 张
硬度 2.0F + setRequiresTool(true)(BlockPamFruitingLog.java:33-35)
Forge 特性 canSustainLeaves 与 isWood 均返回 true(:125-131)
温度/湿度分类 产木型 Log(PamLogSaplings,BlockRegistry.java:827)
对应树苗 pamcinnamonSapling → Cinnamon Sapling
成熟果实物品 Cinnamon
TileEntity 无
创造标签 tabHarvestCraft2

metadata 编码

BlockPamFruitingLog 的 metadata 是双重编码:stage = meta & 3、angle = meta & 0xC(BlockPamFruitingLog.java:73-75)。

stage 状态
0 无果实,随机刻直接 return,不再生长
1 生长中
2 生长中
3 成熟,可被右键采摘

再生与产出

  • 随机刻再生:stage < 3 且 rand.nextInt(30) == 0 时 meta = stage + angle + 1(:93-104)
  • 右键采摘:仅 stage == 3 时生效,且必须先调用过 setDropItem ——this.fruit == null 时 func_149727_a 第一行就 return false(:69-71)
  • 右键采摘可用:ItemRegistry.java:1171 调用 setDropItem(cinnamonItem),因此 this.fruit 非 null,stage == 3 时右键会生成 Cinnamon 掉落物。

    📌 易踩的坑:三个 BlockPamFruitingLog 的 setDropItem 分散在两个文件 —— pamPaperbark 在 BlockRegistry.java:523,而 pamCinnamon 在 ItemRegistry.java:1171、pamMaple 在 ItemRegistry.java:1181。只 grep BlockRegistry.java 会得出「只有 paperbark 有产出」的错误结论。

  • 骨粉:fertilize 前进 2~5 点,上限钳制在 3(:106-112)
  • 破坏掉落:func_149650_a 返回 Item.getItemFromBlock(this),即掉落自身,数量恒为 1(:48-50)—— 不会掉 Cinnamon
  • 破坏连带效果:onBlockDestroyedByPlayer 会对周围 ±4 立方体内的树叶调用 beginLeavesDecay(:52-67)

这一类方块在 BlockPamFruit.func_149650_a 的 if (this == BlockRegistry.pamXXX) 分支中完全不存在(该方法只覆盖 33 个普通果实方块),这是判定它们属于产木型的直接证据。

相关条目

  • Cinnamon Sapling - 对应树苗
  • Fruit Trees - 36 个果树种的温度/湿度分类与「果实↔树苗↔原版树种」完整对照表
浏览全部模组