Tropical Garden
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | harvestcraft:tropicalgarden |
| 源码类 | BlockPamNormalGarden.java,基类 com/pam/harvestcraft/base/BlockGarden.java → net.minecraft.block.BlockFlower |
| 注册位置 | BlockRegistry.java:665(三参形式 registerBlock(block, ItemPamGarden.class, "tropicalgarden")) |
| 物品形式 | ItemPamGarden(BlockItem),ItemPamGarden.java |
| 结构尺寸 | 1×1×1 单方块 —— 源码中没有任何多方块结构、控制器方块或旋转判定 |
| 碰撞箱 | min (0.1, 0.0, 0.1) ~ max (0.9, 0.8, 0.9)(f = 0.4f) |
| 植物类型 | EnumPlantType.Plains |
| 支撑方块 | 本类未覆写 canPlaceBlockOn(Block),沿用 BlockFlower 默认判定;具体地面类型由原版方块表决定,本机无 1.7.10 映射/源码可核实,故此处不给方块清单 |
| TileEntity | 无 —— 全 mod 只注册 9 个 TileEntity(HarvestCraft.java:94-102:Apiary/Presser/Market/Oven/Churn/Quern/AnimalTrap/FishTrap/Grinder),不含任何花园 |
| 硬度 | 构造器调用 setHardness(Block.field_149779_h) 并 setRequiresTool(true)(BlockPamNormalGarden.java)。field_149779_h 是 net.minecraft.block.Block 上的混淆静态字段,本机无 1.7.10 映射表,其对应的方块与具体硬度数值无法核实 |
| 创造标签 | tabHarvestCraft2(BlockGarden.java:36) |
采集与产出
| 操作 | 行为 | 证据 |
|---|---|---|
| 右键方块 | 源码条件 !world.field_72995_K && world.getBlockMetadata(x,y,z) == 0:把自身方块放进物品栏并清除方块 —— 即「整株收回」 |
base/BlockGarden.java:38-45 |
| 破坏方块 | 从下表随机取 1 种掉落,数量 = gardendropAmount |
base/BlockGarden.java:47-52 |
| 掉哪种 | 由配置 gardensdropSeeds 切换:默认 false = 掉食物;设为 true 才掉种子 |
BlockRegistry.java:434 |
掉落表
下表逐项来自 BlockGarden.getDropList(Block)(base/BlockGarden.java:113-193),两种模式是源码里的两个独立 return,不是同一张表加开关。
| # | 食物(默认 gardensdropSeeds=false) |
种子(gardensdropSeeds=true) |
|---|---|---|
| 1 | Pineapple | Pineapple Seed |
| 2 | Kiwi | Kiwi Seed |
| 3 | minecraft:Melon Slice |
minecraft:Melon Seeds |
| 4 | Curry Leaf | Curry Leaf Seed |
| 5 | Sesame Seeds | Sesame Seeds Seed |
表中
minecraft:*项是原版物品,不是 HarvestCraft 作物。
getDropList里还有第 13 个分支处理跨 mod 的harvestthenether:netherGarden(GameRegistry.findBlock("harvestthenether", "netherGarden")),属于 HarvestTheNether 而不是 HarvestCraft 自带的 12 个花园,故不在本表内。
世界生成
- 生成判定(
PamGardenGenerator.java:135):(WET 或 HOT) - 语言文件给出的对照文案(
harvestcraft.nei.garden.tropical):Wet and Hot - 开关配置
enabletropicalgardenGeneration,默认true(BlockRegistry.java:388) - 稀有度
gardenRarity默认 2(BlockRegistry.java:373);每次尝试由WorldGenPamGarden在 8 个随机位置各试一次
蔓延
BlockGarden.func_149674_a(随机刻)—— 全部 12 个花园共用同一段逻辑:
- 触发:
enablegardenSpread(默认true)且rand.nextInt(gardenspreadRate) == 0,gardenspreadRate默认 100(BlockRegistry.java:376) - 密度闸门:在 水平 ±4 / 垂直 -1…+1 的框内数可放置的空位,若空位数 超过
gardenSpreadLimit(默认 5)则放弃本次蔓延(base/BlockGarden.java:88-99) - 实际扩散:不是「向四周扩散一格」,而是随机游走 —— 先在 X/Z 各取
-1..+1、Y 取-1..+1的偏移,然后 最多 4 步(base/BlockGarden.java:100-113);每步若目标格可放置就把当前位置移到该格,最终在终点放一个新花园(:114-117) - 复制原方块的 metadata
相关条目
- Market - 种子商店(花园掉落的种子/食物均可在此交易,真实注册名
harvestcraft:market,BlockRegistry.java:644) - 同类花园:Berry Garden、Desert Garden、Grass Garden、Gourd Garden、Ground Garden、Herb Garden、Leafy Garden、Mushroom Garden、Stalk Garden、Textile Garden、Water Garden
订正记录(本条目原基于 MC 1.12.2 的 MatrexsVigil/harvestcraft 审计,整篇重核)
- 类名
BlockBaseGarden/BlockBush在 1.7.10 中不存在。真实实现是com/pam/harvestcraft/base/BlockGarden.java,继承net.minecraft.block.BlockFlower;12 个花园中热带花园的具体类是BlockPamNormalGarden。- 「区域类型
BlockBaseGarden.Region.PLAINS」是不存在的概念。1.7.10 用EnumPlantType,本花园返回EnumPlantType.Plains。- 「硬度 0.0」错误。
BlockGarden构造器调用setHardness(Block.field_149779_h)并setRequiresTool(true),需要工具;该混淆静态字段的数值本机无 1.7.10 映射表可核实。- 「蔓延率
gardenspreadRate30」是 1.12.2 数值(原条目引的 1.12.2 行号已按要求清除)。1.7.10 真实默认值是 100(BlockRegistry.java:376),配置类也不叫ConfigHandler。- 「同区域密度上限
gardenspreadMax8」—— 1.7.10 没有gardenspreadMax这个键,实际是gardenSpreadLimit,默认 5(BlockRegistry.java:377)。- 「实际蔓延距离 1 格」不准确。
BlockGarden.func_149674_a是一次最多 4 步的随机游走(base/BlockGarden.java:100-113);±4扫描框只是密度统计(:88-99),不是蔓延半径。- 「潜行或精准采集时掉落自身方块」机制说反了。源码是
onBlockActivated(右键)且要求 metadata 为 0(base/BlockGarden.java:38-45),与潜行/精准采集无关。- 「下方必须是草方块或泥土」只是继承自
BlockFlower的默认行为,本类未覆写;同批的沙漠/菌丝/水生 3 个花园反而把支撑方块写死了。- 「花园多方块」归类彻底作废:花园是
BlockFlower单方块植物,源码里没有任何控制器、尺寸或旋转判定。