跳到正文
烈焰甘蔗Wiki

Water Garden

基本信息

属性 值
注册名 harvestcraft:watergarden
源码类 BlockPamWaterGarden.java,基类 com/pam/harvestcraft/base/BlockGarden.java → net.minecraft.block.BlockFlower
注册位置 BlockRegistry.java:666(三参形式 registerBlock(block, ItemPamGarden.class, "watergarden"))
物品形式 ItemPamGarden(BlockItem),ItemPamGarden.java
结构尺寸 1×1×1 单方块 —— 源码中没有任何多方块结构、控制器方块或旋转判定
碰撞箱 min (0.05, 0.0, 0.05) ~ max (0.95, 0.02, 0.95)(f = 0.45f, f1 = 0.02f)
植物类型 EnumPlantType.Water
支撑方块 仅限 minecraft:water(水) —— 覆写 canPlaceBlockOn(Block)(BlockPamWaterGarden.java)
TileEntity 无 —— 全 mod 只注册 9 个 TileEntity(HarvestCraft.java:94-102:Apiary/Presser/Market/Oven/Churn/Quern/AnimalTrap/FishTrap/Grinder),不含任何花园
硬度 构造器调用 setHardness(Block.field_149779_h) 并 setRequiresTool(true)(BlockPamWaterGarden.java)。field_149779_h 是 net.minecraft.block.Block 上的混淆静态字段,本机无 1.7.10 映射表,其对应的方块与具体硬度数值无法核实
创造标签 tabHarvestCraft2(BlockGarden.java:36)
渲染类型 覆写 getRenderType() 返回 23(BlockPamWaterGarden.java),即水面型渲染
光照 覆写 getLightValue() 返回 23(BlockPamWaterGarden.java)
放置方式 特殊:ItemPamGarden.func_77659_a 覆写 —— 只对本花园生效,目标是水(metadata 0)且上方为空时,把花园放在水面上方一格(ItemPamGarden.java:28-62)

采集与产出

操作 行为 证据
右键方块 源码条件 !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 Cranberry Cranberry Seed
2 Rice Rice Seed
3 Seaweed Seaweed Seed
4 Raw Clam Raw Clam
5 Raw Crab Raw Crab
6 Raw Crayfish Raw Crayfish
7 Raw Frog Raw Frog
8 Raw Scallop Raw Scallop
9 Raw Shrimp Raw Shrimp
10 Raw Turtle Raw Turtle
11 Water Chestnut Water Chestnut Seed
12 Raw Snail Raw Snail
13 Green Heart Fish Green Heart Fish

表中 minecraft:* 项是原版物品,不是 HarvestCraft 作物。

getDropList 里还有第 13 个分支处理跨 mod 的 harvestthenether:netherGarden(GameRegistry.findBlock("harvestthenether", "netherGarden")),属于 HarvestTheNether 而不是 HarvestCraft 自带的 12 个花园,故不在本表内。

世界生成

  • 生成判定(PamGardenGenerator.java:144):(OCEAN 且 !COLD 或 RIVER 且 !COLD)
  • 语言文件给出的对照文案(harvestcraft.nei.garden.water):Ocean and River but not Cold
  • 开关配置 enablewatergardenGeneration,默认 true(BlockRegistry.java:389)
  • 稀有度 gardenRarity 默认 2(BlockRegistry.java:373);每次尝试由 WorldGenPamGarden 在 8 个随机位置各试一次
  • 生成器仍用通用 WorldGenPamGarden,把水生花园放在河/海底方块上(BlockPamWaterGarden.canPlaceBlockOn 只接受水)

蔓延

BlockGarden.func_149674_a(随机刻)—— 全部 12 个花园共用同一段逻辑:

  1. 触发:enablegardenSpread(默认 true)且 rand.nextInt(gardenspreadRate) == 0,gardenspreadRate 默认 100(BlockRegistry.java:376)
  2. 密度闸门:在 水平 ±4 / 垂直 -1…+1 的框内数可放置的空位,若空位数 超过 gardenSpreadLimit(默认 5)则放弃本次蔓延(base/BlockGarden.java:88-99)
  3. 实际扩散:不是「向四周扩散一格」,而是随机游走 —— 先在 X/Z 各取 -1..+1、Y 取 -1..+1 的偏移,然后 最多 4 步(base/BlockGarden.java:100-113);每步若目标格可放置就把当前位置移到该格,最终在终点放一个新花园(:114-117)
  4. 复制原方块的 metadata

相关条目

浏览全部模组