Maple Wood(pamMaple)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | harvestcraft:pamMaple |
| 源码类 | BlockPamFruitingLog.java —— 继承 BlockRotatedPillar(有朝向),不是 BlockPamFruit;全 mod 只有 3 个这种方块 |
| 构造 | BlockRegistry.java:510 |
| 注册 | BlockRegistry.java:720 |
| 贴图 | harvestcraft:maple_top(顶/底)、_0(侧面)、_1、_2,共 4 张 |
| 硬度 | 2.0F + setRequiresTool(true)(BlockPamFruitingLog.java:33-35) |
| Forge 特性 | canSustainLeaves 与 isWood 均返回 true(:125-131) |
| 温度/湿度分类 | 产木型 Log(PamLogSaplings,BlockRegistry.java:827) |
| 对应树苗 | pammapleSapling → Maple Sapling |
| 成熟果实物品 | Maple Syrup |
| 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:1181调用setDropItem(maplesyrupItem),因此this.fruit非null,stage == 3时右键会生成 Maple Syrup 掉落物(枫木掉的是糖浆,不是鲜果)。📌 易踩的坑:三个
BlockPamFruitingLog的setDropItem分散在两个文件 ——pamPaperbark在BlockRegistry.java:523,而pamCinnamon在ItemRegistry.java:1171、pamMaple在ItemRegistry.java:1181。只 grepBlockRegistry.java会得出「只有 paperbark 有产出」的错误结论。 - 骨粉:
fertilize前进 2~5 点,上限钳制在 3(:106-112) - 破坏掉落:
func_149650_a返回Item.getItemFromBlock(this),即掉落自身,数量恒为 1(:48-50)—— 不会掉 Maple Syrup - 破坏连带效果:
onBlockDestroyedByPlayer会对周围 ±4 立方体内的树叶调用beginLeavesDecay(:52-67)
这一类方块在
BlockPamFruit.func_149650_a的if (this == BlockRegistry.pamXXX)分支中完全不存在(该方法只覆盖 33 个普通果实方块),这是判定它们属于产木型的直接证据。
相关条目
- Maple Sapling - 对应树苗
- Fruit Trees - 36 个果树种的温度/湿度分类与「果实↔树苗↔原版树种」完整对照表