VegetationPlacements.java

net.minecraft.data.worldgen.placement.VegetationPlacements

信息

  • 全限定名:net.minecraft.data.worldgen.placement.VegetationPlacements
  • 类型:public class
  • 包:net.minecraft.data.worldgen.placement
  • 源码路径:src/main/java/net/minecraft/data/worldgen/placement/VegetationPlacements.java
  • 起始行号:L37
  • 职责:

    TODO

字段/常量

  • BAMBOO_LIGHT

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L38
    • 说明:

      TODO

  • BAMBOO

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L39
    • 说明:

      TODO

  • VINES

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L40
    • 说明:

      TODO

  • PATCH_SUNFLOWER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L41
    • 说明:

      TODO

  • PATCH_PUMPKIN

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L42
    • 说明:

      TODO

  • PATCH_GRASS_PLAIN

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L43
    • 说明:

      TODO

  • PATCH_GRASS_MEADOW

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L44
    • 说明:

      TODO

  • PATCH_GRASS_FOREST

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L45
    • 说明:

      TODO

  • PATCH_GRASS_BADLANDS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L46
    • 说明:

      TODO

  • PATCH_GRASS_SAVANNA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L47
    • 说明:

      TODO

  • PATCH_GRASS_NORMAL

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L48
    • 说明:

      TODO

  • PATCH_GRASS_TAIGA_2

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L49
    • 说明:

      TODO

  • PATCH_GRASS_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L50
    • 说明:

      TODO

  • PATCH_GRASS_JUNGLE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L51
    • 说明:

      TODO

  • GRASS_BONEMEAL

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L52
    • 说明:

      TODO

  • PATCH_DEAD_BUSH_2

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L53
    • 说明:

      TODO

  • PATCH_DEAD_BUSH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L54
    • 说明:

      TODO

  • PATCH_DEAD_BUSH_BADLANDS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L55
    • 说明:

      TODO

  • PATCH_DRY_GRASS_BADLANDS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L56
    • 说明:

      TODO

  • PATCH_DRY_GRASS_DESERT

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L57
    • 说明:

      TODO

  • PATCH_MELON

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L58
    • 说明:

      TODO

  • PATCH_MELON_SPARSE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L59
    • 说明:

      TODO

  • PATCH_BERRY_COMMON

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L60
    • 说明:

      TODO

  • PATCH_BERRY_RARE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L61
    • 说明:

      TODO

  • PATCH_WATERLILY

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L62
    • 说明:

      TODO

  • PATCH_TALL_GRASS_2

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L63
    • 说明:

      TODO

  • PATCH_TALL_GRASS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L64
    • 说明:

      TODO

  • PATCH_LARGE_FERN

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L65
    • 说明:

      TODO

  • PATCH_BUSH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L66
    • 说明:

      TODO

  • PATCH_LEAF_LITTER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L67
    • 说明:

      TODO

  • PATCH_CACTUS_DESERT

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L68
    • 说明:

      TODO

  • PATCH_CACTUS_DECORATED

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L69
    • 说明:

      TODO

  • PATCH_SUGAR_CANE_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L70
    • 说明:

      TODO

  • PATCH_SUGAR_CANE_DESERT

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L71
    • 说明:

      TODO

  • PATCH_SUGAR_CANE_BADLANDS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L72
    • 说明:

      TODO

  • PATCH_SUGAR_CANE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L73
    • 说明:

      TODO

  • PATCH_FIREFLY_BUSH_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L74
    • 说明:

      TODO

  • PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L75
    • 说明:

      TODO

  • PATCH_FIREFLY_BUSH_NEAR_WATER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L76
    • 说明:

      TODO

  • BROWN_MUSHROOM_NETHER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L77
    • 说明:

      TODO

  • RED_MUSHROOM_NETHER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L78
    • 说明:

      TODO

  • BROWN_MUSHROOM_NORMAL

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L79
    • 说明:

      TODO

  • RED_MUSHROOM_NORMAL

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L80
    • 说明:

      TODO

  • BROWN_MUSHROOM_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L81
    • 说明:

      TODO

  • RED_MUSHROOM_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L82
    • 说明:

      TODO

  • BROWN_MUSHROOM_OLD_GROWTH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L83
    • 说明:

      TODO

  • RED_MUSHROOM_OLD_GROWTH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L84
    • 说明:

      TODO

  • BROWN_MUSHROOM_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L85
    • 说明:

      TODO

  • RED_MUSHROOM_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L86
    • 说明:

      TODO

  • FLOWER_WARM

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L87
    • 说明:

      TODO

  • FLOWER_DEFAULT

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L88
    • 说明:

      TODO

  • FLOWER_FLOWER_FOREST

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L89
    • 说明:

      TODO

  • FLOWER_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L90
    • 说明:

      TODO

  • FLOWER_PLAINS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L91
    • 说明:

      TODO

  • FLOWER_MEADOW

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L92
    • 说明:

      TODO

  • FLOWER_CHERRY

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L93
    • 说明:

      TODO

  • FLOWER_PALE_GARDEN

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L94
    • 说明:

      TODO

  • WILDFLOWERS_BIRCH_FOREST

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L95
    • 说明:

      TODO

  • WILDFLOWERS_MEADOW

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L96
    • 说明:

      TODO

  • TREES_PLAINS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L97
    • 说明:

      TODO

  • DARK_FOREST_VEGETATION

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L98
    • 说明:

      TODO

  • PALE_GARDEN_VEGETATION

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L99
    • 说明:

      TODO

  • FLOWER_FOREST_FLOWERS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L100
    • 说明:

      TODO

  • FOREST_FLOWERS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L101
    • 说明:

      TODO

  • PALE_GARDEN_FLOWERS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L102
    • 说明:

      TODO

  • PALE_MOSS_PATCH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L103
    • 说明:

      TODO

  • TREES_FLOWER_FOREST

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L104
    • 说明:

      TODO

  • TREES_MEADOW

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L105
    • 说明:

      TODO

  • TREES_CHERRY

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L106
    • 说明:

      TODO

  • TREES_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L107
    • 说明:

      TODO

  • TREES_GROVE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L108
    • 说明:

      TODO

  • TREES_BADLANDS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L109
    • 说明:

      TODO

  • TREES_SNOWY

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L110
    • 说明:

      TODO

  • TREES_SWAMP

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L111
    • 说明:

      TODO

  • TREES_WINDSWEPT_SAVANNA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L112
    • 说明:

      TODO

  • TREES_SAVANNA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L113
    • 说明:

      TODO

  • BIRCH_TALL

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L114
    • 说明:

      TODO

  • TREES_BIRCH

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L115
    • 说明:

      TODO

  • TREES_WINDSWEPT_FOREST

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L116
    • 说明:

      TODO

  • TREES_WINDSWEPT_HILLS

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L117
    • 说明:

      TODO

  • TREES_WATER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L118
    • 说明:

      TODO

  • TREES_BIRCH_AND_OAK_LEAF_LITTER

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L119
    • 说明:

      TODO

  • TREES_SPARSE_JUNGLE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L120
    • 说明:

      TODO

  • TREES_OLD_GROWTH_SPRUCE_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L121
    • 说明:

      TODO

  • TREES_OLD_GROWTH_PINE_TAIGA

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L122
    • 说明:

      TODO

  • TREES_JUNGLE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L123
    • 说明:

      TODO

  • BAMBOO_VEGETATION

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L124
    • 说明:

      TODO

  • MUSHROOM_ISLAND_VEGETATION

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L125
    • 说明:

      TODO

  • TREES_MANGROVE

    • 类型: ResourceKey<PlacedFeature>
    • 修饰符: public static final
    • 源码定位: L126
    • 说明:

      TODO

  • TREE_THRESHOLD

    • 类型: PlacementModifier
    • 修饰符: private static final
    • 源码定位: L127
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static List<PlacementModifier> worldSurfaceSquaredWithCount(int count) @ L129

  • 方法名:worldSurfaceSquaredWithCount
  • 源码定位:L129
  • 返回类型:List
  • 修饰符:public static

参数:

  • count: int

说明:

TODO

private static List<PlacementModifier> getMushroomPlacement(int rarity, PlacementModifier prefix) @ L133

  • 方法名:getMushroomPlacement
  • 源码定位:L133
  • 返回类型:List
  • 修饰符:private static

参数:

  • rarity: int
  • prefix: PlacementModifier

说明:

TODO

private static Builder<PlacementModifier> treePlacementBase(PlacementModifier frequency) @ L152

  • 方法名:treePlacementBase
  • 源码定位:L152
  • 返回类型:Builder
  • 修饰符:private static

参数:

  • frequency: PlacementModifier

说明:

TODO

public static List<PlacementModifier> treePlacement(PlacementModifier frequency) @ L161

  • 方法名:treePlacement
  • 源码定位:L161
  • 返回类型:List
  • 修饰符:public static

参数:

  • frequency: PlacementModifier

说明:

TODO

public static List<PlacementModifier> treePlacement(PlacementModifier frequency, Block sapling) @ L165

  • 方法名:treePlacement
  • 源码定位:L165
  • 返回类型:List
  • 修饰符:public static

参数:

  • frequency: PlacementModifier
  • sapling: Block

说明:

TODO

public static void bootstrap(BootstrapContext<PlacedFeature> context) @ L171

  • 方法名:bootstrap
  • 源码定位:L171
  • 返回类型:void
  • 修饰符:public static

参数:

  • context: BootstrapContext

说明:

TODO

代码

public class VegetationPlacements {
    public static final ResourceKey<PlacedFeature> BAMBOO_LIGHT = PlacementUtils.createKey("bamboo_light");
    public static final ResourceKey<PlacedFeature> BAMBOO = PlacementUtils.createKey("bamboo");
    public static final ResourceKey<PlacedFeature> VINES = PlacementUtils.createKey("vines");
    public static final ResourceKey<PlacedFeature> PATCH_SUNFLOWER = PlacementUtils.createKey("patch_sunflower");
    public static final ResourceKey<PlacedFeature> PATCH_PUMPKIN = PlacementUtils.createKey("patch_pumpkin");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_PLAIN = PlacementUtils.createKey("patch_grass_plain");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_MEADOW = PlacementUtils.createKey("patch_grass_meadow");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_FOREST = PlacementUtils.createKey("patch_grass_forest");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_BADLANDS = PlacementUtils.createKey("patch_grass_badlands");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_SAVANNA = PlacementUtils.createKey("patch_grass_savanna");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_NORMAL = PlacementUtils.createKey("patch_grass_normal");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_TAIGA_2 = PlacementUtils.createKey("patch_grass_taiga_2");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_TAIGA = PlacementUtils.createKey("patch_grass_taiga");
    public static final ResourceKey<PlacedFeature> PATCH_GRASS_JUNGLE = PlacementUtils.createKey("patch_grass_jungle");
    public static final ResourceKey<PlacedFeature> GRASS_BONEMEAL = PlacementUtils.createKey("grass_bonemeal");
    public static final ResourceKey<PlacedFeature> PATCH_DEAD_BUSH_2 = PlacementUtils.createKey("patch_dead_bush_2");
    public static final ResourceKey<PlacedFeature> PATCH_DEAD_BUSH = PlacementUtils.createKey("patch_dead_bush");
    public static final ResourceKey<PlacedFeature> PATCH_DEAD_BUSH_BADLANDS = PlacementUtils.createKey("patch_dead_bush_badlands");
    public static final ResourceKey<PlacedFeature> PATCH_DRY_GRASS_BADLANDS = PlacementUtils.createKey("patch_dry_grass_badlands");
    public static final ResourceKey<PlacedFeature> PATCH_DRY_GRASS_DESERT = PlacementUtils.createKey("patch_dry_grass_desert");
    public static final ResourceKey<PlacedFeature> PATCH_MELON = PlacementUtils.createKey("patch_melon");
    public static final ResourceKey<PlacedFeature> PATCH_MELON_SPARSE = PlacementUtils.createKey("patch_melon_sparse");
    public static final ResourceKey<PlacedFeature> PATCH_BERRY_COMMON = PlacementUtils.createKey("patch_berry_common");
    public static final ResourceKey<PlacedFeature> PATCH_BERRY_RARE = PlacementUtils.createKey("patch_berry_rare");
    public static final ResourceKey<PlacedFeature> PATCH_WATERLILY = PlacementUtils.createKey("patch_waterlily");
    public static final ResourceKey<PlacedFeature> PATCH_TALL_GRASS_2 = PlacementUtils.createKey("patch_tall_grass_2");
    public static final ResourceKey<PlacedFeature> PATCH_TALL_GRASS = PlacementUtils.createKey("patch_tall_grass");
    public static final ResourceKey<PlacedFeature> PATCH_LARGE_FERN = PlacementUtils.createKey("patch_large_fern");
    public static final ResourceKey<PlacedFeature> PATCH_BUSH = PlacementUtils.createKey("patch_bush");
    public static final ResourceKey<PlacedFeature> PATCH_LEAF_LITTER = PlacementUtils.createKey("patch_leaf_litter");
    public static final ResourceKey<PlacedFeature> PATCH_CACTUS_DESERT = PlacementUtils.createKey("patch_cactus_desert");
    public static final ResourceKey<PlacedFeature> PATCH_CACTUS_DECORATED = PlacementUtils.createKey("patch_cactus_decorated");
    public static final ResourceKey<PlacedFeature> PATCH_SUGAR_CANE_SWAMP = PlacementUtils.createKey("patch_sugar_cane_swamp");
    public static final ResourceKey<PlacedFeature> PATCH_SUGAR_CANE_DESERT = PlacementUtils.createKey("patch_sugar_cane_desert");
    public static final ResourceKey<PlacedFeature> PATCH_SUGAR_CANE_BADLANDS = PlacementUtils.createKey("patch_sugar_cane_badlands");
    public static final ResourceKey<PlacedFeature> PATCH_SUGAR_CANE = PlacementUtils.createKey("patch_sugar_cane");
    public static final ResourceKey<PlacedFeature> PATCH_FIREFLY_BUSH_SWAMP = PlacementUtils.createKey("patch_firefly_bush_swamp");
    public static final ResourceKey<PlacedFeature> PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP = PlacementUtils.createKey("patch_firefly_bush_near_water_swamp");
    public static final ResourceKey<PlacedFeature> PATCH_FIREFLY_BUSH_NEAR_WATER = PlacementUtils.createKey("patch_firefly_bush_near_water");
    public static final ResourceKey<PlacedFeature> BROWN_MUSHROOM_NETHER = PlacementUtils.createKey("brown_mushroom_nether");
    public static final ResourceKey<PlacedFeature> RED_MUSHROOM_NETHER = PlacementUtils.createKey("red_mushroom_nether");
    public static final ResourceKey<PlacedFeature> BROWN_MUSHROOM_NORMAL = PlacementUtils.createKey("brown_mushroom_normal");
    public static final ResourceKey<PlacedFeature> RED_MUSHROOM_NORMAL = PlacementUtils.createKey("red_mushroom_normal");
    public static final ResourceKey<PlacedFeature> BROWN_MUSHROOM_TAIGA = PlacementUtils.createKey("brown_mushroom_taiga");
    public static final ResourceKey<PlacedFeature> RED_MUSHROOM_TAIGA = PlacementUtils.createKey("red_mushroom_taiga");
    public static final ResourceKey<PlacedFeature> BROWN_MUSHROOM_OLD_GROWTH = PlacementUtils.createKey("brown_mushroom_old_growth");
    public static final ResourceKey<PlacedFeature> RED_MUSHROOM_OLD_GROWTH = PlacementUtils.createKey("red_mushroom_old_growth");
    public static final ResourceKey<PlacedFeature> BROWN_MUSHROOM_SWAMP = PlacementUtils.createKey("brown_mushroom_swamp");
    public static final ResourceKey<PlacedFeature> RED_MUSHROOM_SWAMP = PlacementUtils.createKey("red_mushroom_swamp");
    public static final ResourceKey<PlacedFeature> FLOWER_WARM = PlacementUtils.createKey("flower_warm");
    public static final ResourceKey<PlacedFeature> FLOWER_DEFAULT = PlacementUtils.createKey("flower_default");
    public static final ResourceKey<PlacedFeature> FLOWER_FLOWER_FOREST = PlacementUtils.createKey("flower_flower_forest");
    public static final ResourceKey<PlacedFeature> FLOWER_SWAMP = PlacementUtils.createKey("flower_swamp");
    public static final ResourceKey<PlacedFeature> FLOWER_PLAINS = PlacementUtils.createKey("flower_plains");
    public static final ResourceKey<PlacedFeature> FLOWER_MEADOW = PlacementUtils.createKey("flower_meadow");
    public static final ResourceKey<PlacedFeature> FLOWER_CHERRY = PlacementUtils.createKey("flower_cherry");
    public static final ResourceKey<PlacedFeature> FLOWER_PALE_GARDEN = PlacementUtils.createKey("flower_pale_garden");
    public static final ResourceKey<PlacedFeature> WILDFLOWERS_BIRCH_FOREST = PlacementUtils.createKey("wildflowers_birch_forest");
    public static final ResourceKey<PlacedFeature> WILDFLOWERS_MEADOW = PlacementUtils.createKey("wildflowers_meadow");
    public static final ResourceKey<PlacedFeature> TREES_PLAINS = PlacementUtils.createKey("trees_plains");
    public static final ResourceKey<PlacedFeature> DARK_FOREST_VEGETATION = PlacementUtils.createKey("dark_forest_vegetation");
    public static final ResourceKey<PlacedFeature> PALE_GARDEN_VEGETATION = PlacementUtils.createKey("pale_garden_vegetation");
    public static final ResourceKey<PlacedFeature> FLOWER_FOREST_FLOWERS = PlacementUtils.createKey("flower_forest_flowers");
    public static final ResourceKey<PlacedFeature> FOREST_FLOWERS = PlacementUtils.createKey("forest_flowers");
    public static final ResourceKey<PlacedFeature> PALE_GARDEN_FLOWERS = PlacementUtils.createKey("pale_garden_flowers");
    public static final ResourceKey<PlacedFeature> PALE_MOSS_PATCH = PlacementUtils.createKey("pale_moss_patch");
    public static final ResourceKey<PlacedFeature> TREES_FLOWER_FOREST = PlacementUtils.createKey("trees_flower_forest");
    public static final ResourceKey<PlacedFeature> TREES_MEADOW = PlacementUtils.createKey("trees_meadow");
    public static final ResourceKey<PlacedFeature> TREES_CHERRY = PlacementUtils.createKey("trees_cherry");
    public static final ResourceKey<PlacedFeature> TREES_TAIGA = PlacementUtils.createKey("trees_taiga");
    public static final ResourceKey<PlacedFeature> TREES_GROVE = PlacementUtils.createKey("trees_grove");
    public static final ResourceKey<PlacedFeature> TREES_BADLANDS = PlacementUtils.createKey("trees_badlands");
    public static final ResourceKey<PlacedFeature> TREES_SNOWY = PlacementUtils.createKey("trees_snowy");
    public static final ResourceKey<PlacedFeature> TREES_SWAMP = PlacementUtils.createKey("trees_swamp");
    public static final ResourceKey<PlacedFeature> TREES_WINDSWEPT_SAVANNA = PlacementUtils.createKey("trees_windswept_savanna");
    public static final ResourceKey<PlacedFeature> TREES_SAVANNA = PlacementUtils.createKey("trees_savanna");
    public static final ResourceKey<PlacedFeature> BIRCH_TALL = PlacementUtils.createKey("birch_tall");
    public static final ResourceKey<PlacedFeature> TREES_BIRCH = PlacementUtils.createKey("trees_birch");
    public static final ResourceKey<PlacedFeature> TREES_WINDSWEPT_FOREST = PlacementUtils.createKey("trees_windswept_forest");
    public static final ResourceKey<PlacedFeature> TREES_WINDSWEPT_HILLS = PlacementUtils.createKey("trees_windswept_hills");
    public static final ResourceKey<PlacedFeature> TREES_WATER = PlacementUtils.createKey("trees_water");
    public static final ResourceKey<PlacedFeature> TREES_BIRCH_AND_OAK_LEAF_LITTER = PlacementUtils.createKey("trees_birch_and_oak_leaf_litter");
    public static final ResourceKey<PlacedFeature> TREES_SPARSE_JUNGLE = PlacementUtils.createKey("trees_sparse_jungle");
    public static final ResourceKey<PlacedFeature> TREES_OLD_GROWTH_SPRUCE_TAIGA = PlacementUtils.createKey("trees_old_growth_spruce_taiga");
    public static final ResourceKey<PlacedFeature> TREES_OLD_GROWTH_PINE_TAIGA = PlacementUtils.createKey("trees_old_growth_pine_taiga");
    public static final ResourceKey<PlacedFeature> TREES_JUNGLE = PlacementUtils.createKey("trees_jungle");
    public static final ResourceKey<PlacedFeature> BAMBOO_VEGETATION = PlacementUtils.createKey("bamboo_vegetation");
    public static final ResourceKey<PlacedFeature> MUSHROOM_ISLAND_VEGETATION = PlacementUtils.createKey("mushroom_island_vegetation");
    public static final ResourceKey<PlacedFeature> TREES_MANGROVE = PlacementUtils.createKey("trees_mangrove");
    private static final PlacementModifier TREE_THRESHOLD = SurfaceWaterDepthFilter.forMaxDepth(0);
 
    public static List<PlacementModifier> worldSurfaceSquaredWithCount(int count) {
        return List.of(CountPlacement.of(count), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_WORLD_SURFACE, BiomeFilter.biome());
    }
 
    private static List<PlacementModifier> getMushroomPlacement(int rarity, @Nullable PlacementModifier prefix) {
        Builder<PlacementModifier> builder = ImmutableList.builder();
        if (prefix != null) {
            builder.add(prefix);
        }
 
        if (rarity != 0) {
            builder.add(RarityFilter.onAverageOnceEvery(rarity));
        }
 
        builder.add(InSquarePlacement.spread());
        builder.add(PlacementUtils.HEIGHTMAP);
        builder.add(BiomeFilter.biome());
        builder.add(CountPlacement.of(96));
        builder.add(RandomOffsetPlacement.ofTriangle(7, 3));
        builder.add(BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE));
        return builder.build();
    }
 
    private static Builder<PlacementModifier> treePlacementBase(PlacementModifier frequency) {
        return ImmutableList.<PlacementModifier>builder()
            .add(frequency)
            .add(InSquarePlacement.spread())
            .add(TREE_THRESHOLD)
            .add(PlacementUtils.HEIGHTMAP_OCEAN_FLOOR)
            .add(BiomeFilter.biome());
    }
 
    public static List<PlacementModifier> treePlacement(PlacementModifier frequency) {
        return treePlacementBase(frequency).build();
    }
 
    public static List<PlacementModifier> treePlacement(PlacementModifier frequency, Block sapling) {
        return treePlacementBase(frequency)
            .add(BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(sapling.defaultBlockState(), BlockPos.ZERO)))
            .build();
    }
 
    public static void bootstrap(BootstrapContext<PlacedFeature> context) {
        HolderGetter<ConfiguredFeature<?, ?>> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE);
        Holder<ConfiguredFeature<?, ?>> bambooNoPodzol = configuredFeatures.getOrThrow(VegetationFeatures.BAMBOO_NO_PODZOL);
        Holder<ConfiguredFeature<?, ?>> bambooSomePodzol = configuredFeatures.getOrThrow(VegetationFeatures.BAMBOO_SOME_PODZOL);
        Holder<ConfiguredFeature<?, ?>> vines = configuredFeatures.getOrThrow(VegetationFeatures.VINES);
        Holder<ConfiguredFeature<?, ?>> sunflower = configuredFeatures.getOrThrow(VegetationFeatures.SUNFLOWER);
        Holder<ConfiguredFeature<?, ?>> pumpkin = configuredFeatures.getOrThrow(VegetationFeatures.PUMPKIN);
        Holder<ConfiguredFeature<?, ?>> grass = configuredFeatures.getOrThrow(VegetationFeatures.GRASS);
        Holder<ConfiguredFeature<?, ?>> leafLitter = configuredFeatures.getOrThrow(VegetationFeatures.LEAF_LITTER);
        Holder<ConfiguredFeature<?, ?>> taigaGrass = configuredFeatures.getOrThrow(VegetationFeatures.TAIGA_GRASS);
        Holder<ConfiguredFeature<?, ?>> grassJungle = configuredFeatures.getOrThrow(VegetationFeatures.GRASS_JUNGLE);
        Holder<ConfiguredFeature<?, ?>> deadBush = configuredFeatures.getOrThrow(VegetationFeatures.DEAD_BUSH);
        Holder<ConfiguredFeature<?, ?>> dryGrass = configuredFeatures.getOrThrow(VegetationFeatures.DRY_GRASS);
        Holder<ConfiguredFeature<?, ?>> fireflyBush = configuredFeatures.getOrThrow(VegetationFeatures.FIREFLY_BUSH);
        Holder<ConfiguredFeature<?, ?>> melon = configuredFeatures.getOrThrow(VegetationFeatures.MELON);
        Holder<ConfiguredFeature<?, ?>> berryBush = configuredFeatures.getOrThrow(VegetationFeatures.BERRY_BUSH);
        Holder<ConfiguredFeature<?, ?>> waterlily = configuredFeatures.getOrThrow(VegetationFeatures.WATERLILY);
        Holder<ConfiguredFeature<?, ?>> tallGrass = configuredFeatures.getOrThrow(VegetationFeatures.TALL_GRASS);
        Holder<ConfiguredFeature<?, ?>> largeFern = configuredFeatures.getOrThrow(VegetationFeatures.LARGE_FERN);
        Holder<ConfiguredFeature<?, ?>> bush = configuredFeatures.getOrThrow(VegetationFeatures.BUSH);
        Holder<ConfiguredFeature<?, ?>> cactus = configuredFeatures.getOrThrow(VegetationFeatures.CACTUS);
        Holder<ConfiguredFeature<?, ?>> sugarCane = configuredFeatures.getOrThrow(VegetationFeatures.SUGAR_CANE);
        Holder<ConfiguredFeature<?, ?>> brownMushroom = configuredFeatures.getOrThrow(VegetationFeatures.BROWN_MUSHROOM);
        Holder<ConfiguredFeature<?, ?>> redMushroom = configuredFeatures.getOrThrow(VegetationFeatures.RED_MUSHROOM);
        Holder<ConfiguredFeature<?, ?>> flowerDefault = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_DEFAULT);
        Holder<ConfiguredFeature<?, ?>> flowerFlowerForest = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_FLOWER_FOREST);
        Holder<ConfiguredFeature<?, ?>> flowerSwamp = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_SWAMP);
        Holder<ConfiguredFeature<?, ?>> flowerPlain = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_PLAIN);
        Holder<ConfiguredFeature<?, ?>> flowerMeadow = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_MEADOW);
        Holder<ConfiguredFeature<?, ?>> flowerCherry = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_CHERRY);
        Holder<ConfiguredFeature<?, ?>> flowerPaleGarden = configuredFeatures.getOrThrow(VegetationFeatures.FLOWER_PALE_GARDEN);
        Holder<ConfiguredFeature<?, ?>> wildflower = configuredFeatures.getOrThrow(VegetationFeatures.WILDFLOWER);
        Holder<ConfiguredFeature<?, ?>> treesPlains = configuredFeatures.getOrThrow(VegetationFeatures.TREES_PLAINS);
        Holder<ConfiguredFeature<?, ?>> darkForestVegetation = configuredFeatures.getOrThrow(VegetationFeatures.DARK_FOREST_VEGETATION);
        Holder<ConfiguredFeature<?, ?>> paleGardenVegetation = configuredFeatures.getOrThrow(VegetationFeatures.PALE_GARDEN_VEGETATION);
        Holder<ConfiguredFeature<?, ?>> forestFlowers = configuredFeatures.getOrThrow(VegetationFeatures.FOREST_FLOWERS);
        Holder<ConfiguredFeature<?, ?>> paleForestFlower = configuredFeatures.getOrThrow(VegetationFeatures.PALE_FOREST_FLOWER);
        Holder<ConfiguredFeature<?, ?>> paleMossPatch = configuredFeatures.getOrThrow(VegetationFeatures.PALE_MOSS_PATCH);
        Holder<ConfiguredFeature<?, ?>> treesFlowerForest = configuredFeatures.getOrThrow(VegetationFeatures.TREES_FLOWER_FOREST);
        Holder<ConfiguredFeature<?, ?>> meadowTrees = configuredFeatures.getOrThrow(VegetationFeatures.MEADOW_TREES);
        Holder<ConfiguredFeature<?, ?>> treesTaiga = configuredFeatures.getOrThrow(VegetationFeatures.TREES_TAIGA);
        Holder<ConfiguredFeature<?, ?>> treesBadlands = configuredFeatures.getOrThrow(VegetationFeatures.TREES_BADLANDS);
        Holder<ConfiguredFeature<?, ?>> treesGrove = configuredFeatures.getOrThrow(VegetationFeatures.TREES_GROVE);
        Holder<ConfiguredFeature<?, ?>> treesSnowy = configuredFeatures.getOrThrow(VegetationFeatures.TREES_SNOWY);
        Holder<ConfiguredFeature<?, ?>> cherryBees005 = configuredFeatures.getOrThrow(TreeFeatures.CHERRY_BEES_005);
        Holder<ConfiguredFeature<?, ?>> swampOak = configuredFeatures.getOrThrow(TreeFeatures.SWAMP_OAK);
        Holder<ConfiguredFeature<?, ?>> treesSavanna = configuredFeatures.getOrThrow(VegetationFeatures.TREES_SAVANNA);
        Holder<ConfiguredFeature<?, ?>> birchTall = configuredFeatures.getOrThrow(VegetationFeatures.BIRCH_TALL);
        Holder<ConfiguredFeature<?, ?>> treesBirch = configuredFeatures.getOrThrow(VegetationFeatures.TREES_BIRCH);
        Holder<ConfiguredFeature<?, ?>> treesWindsweptHills = configuredFeatures.getOrThrow(VegetationFeatures.TREES_WINDSWEPT_HILLS);
        Holder<ConfiguredFeature<?, ?>> treesWater = configuredFeatures.getOrThrow(VegetationFeatures.TREES_WATER);
        Holder<ConfiguredFeature<?, ?>> treesBirchAndOakLeafLitter = configuredFeatures.getOrThrow(VegetationFeatures.TREES_BIRCH_AND_OAK_LEAF_LITTER);
        Holder<ConfiguredFeature<?, ?>> treesSparseJungle = configuredFeatures.getOrThrow(VegetationFeatures.TREES_SPARSE_JUNGLE);
        Holder<ConfiguredFeature<?, ?>> treesOldGrowthSpruceTaiga = configuredFeatures.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_SPRUCE_TAIGA);
        Holder<ConfiguredFeature<?, ?>> treesOldGrowthPineTaiga = configuredFeatures.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_PINE_TAIGA);
        Holder<ConfiguredFeature<?, ?>> treesJungle = configuredFeatures.getOrThrow(VegetationFeatures.TREES_JUNGLE);
        Holder<ConfiguredFeature<?, ?>> bambooVegetation = configuredFeatures.getOrThrow(VegetationFeatures.BAMBOO_VEGETATION);
        Holder<ConfiguredFeature<?, ?>> mushroomIslandVegetation = configuredFeatures.getOrThrow(VegetationFeatures.MUSHROOM_ISLAND_VEGETATION);
        Holder<ConfiguredFeature<?, ?>> mangroveVegetation = configuredFeatures.getOrThrow(VegetationFeatures.MANGROVE_VEGETATION);
        PlacementUtils.register(
            context,
            BAMBOO_LIGHT,
            bambooNoPodzol,
            RarityFilter.onAverageOnceEvery(4),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            BAMBOO,
            bambooSomePodzol,
            NoiseBasedCountPlacement.of(160, 80.0, 0.3),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            VINES,
            vines,
            CountPlacement.of(127),
            InSquarePlacement.spread(),
            HeightRangePlacement.uniform(VerticalAnchor.absolute(64), VerticalAnchor.absolute(100)),
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            PATCH_SUNFLOWER,
            sunflower,
            RarityFilter.onAverageOnceEvery(3),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_PUMPKIN,
            pumpkin,
            RarityFilter.onAverageOnceEvery(300),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(
                BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.GRASS_BLOCK))
            )
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_PLAIN,
            grass,
            NoiseThresholdCountPlacement.of(-0.8, 5, 10),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(32),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_MEADOW,
            grass,
            NoiseThresholdCountPlacement.of(-0.8, 5, 10),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(16),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_FOREST,
            grass,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(2),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_LEAF_LITTER,
            leafLitter,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(2),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(
                    BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.GRASS_BLOCK))
                )
            )
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_BADLANDS,
            grass,
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(32),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_SAVANNA,
            grass,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(20),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_NORMAL,
            grass,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(5),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_TAIGA_2,
            taigaGrass,
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(32),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_TAIGA,
            taigaGrass,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(7),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_GRASS_JUNGLE,
            grassJungle,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(25),
                CountPlacement.of(32),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(
                    BlockPredicate.allOf(
                        BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.not(BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.PODZOL))
                    )
                )
            )
        );
        PlacementUtils.register(context, GRASS_BONEMEAL, grass, PlacementUtils.isEmpty());
        PlacementUtils.register(
            context,
            PATCH_DEAD_BUSH_2,
            deadBush,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(2),
                CountPlacement.of(4),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_DEAD_BUSH,
            deadBush,
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(4),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_DEAD_BUSH_BADLANDS,
            deadBush,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(20),
                CountPlacement.of(4),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_DRY_GRASS_BADLANDS,
            dryGrass,
            RarityFilter.onAverageOnceEvery(6),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_DRY_GRASS_DESERT,
            dryGrass,
            RarityFilter.onAverageOnceEvery(3),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        BlockPredicate melonPlacementPredicate = BlockPredicate.allOf(
            BlockPredicate.replaceable(), BlockPredicate.noFluid(), BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.GRASS_BLOCK)
        );
        PlacementUtils.register(
            context,
            PATCH_MELON,
            melon,
            RarityFilter.onAverageOnceEvery(6),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(melonPlacementPredicate)
        );
        PlacementUtils.register(
            context,
            PATCH_MELON_SPARSE,
            melon,
            RarityFilter.onAverageOnceEvery(64),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(melonPlacementPredicate)
        );
        PlacementUtils.register(
            context,
            PATCH_BERRY_COMMON,
            berryBush,
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(
                BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.GRASS_BLOCK))
            )
        );
        PlacementUtils.register(
            context,
            PATCH_BERRY_RARE,
            berryBush,
            RarityFilter.onAverageOnceEvery(384),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_WORLD_SURFACE,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(
                BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.GRASS_BLOCK))
            )
        );
        PlacementUtils.register(
            context,
            PATCH_WATERLILY,
            waterlily,
            Util.copyAndAdd(
                worldSurfaceSquaredWithCount(4),
                CountPlacement.of(10),
                RandomOffsetPlacement.ofTriangle(7, 3),
                BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
            )
        );
        PlacementUtils.register(
            context,
            PATCH_TALL_GRASS_2,
            tallGrass,
            NoiseThresholdCountPlacement.of(-0.8, 0, 7),
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_TALL_GRASS,
            tallGrass,
            RarityFilter.onAverageOnceEvery(5),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_LARGE_FERN,
            largeFern,
            RarityFilter.onAverageOnceEvery(5),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_BUSH,
            bush,
            RarityFilter.onAverageOnceEvery(4),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(24),
            RandomOffsetPlacement.ofTriangle(5, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_CACTUS_DESERT,
            cactus,
            RarityFilter.onAverageOnceEvery(6),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(10),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(
                BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.wouldSurvive(Blocks.CACTUS.defaultBlockState(), BlockPos.ZERO))
            )
        );
        PlacementUtils.register(
            context,
            PATCH_CACTUS_DECORATED,
            cactus,
            RarityFilter.onAverageOnceEvery(13),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(10),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(
                BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.wouldSurvive(Blocks.CACTUS.defaultBlockState(), BlockPos.ZERO))
            )
        );
        PlacementUtils.register(
            context,
            PATCH_SUGAR_CANE_SWAMP,
            sugarCane,
            RarityFilter.onAverageOnceEvery(3),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 0),
            VegetationFeatures.nearWaterPredicate(Blocks.SUGAR_CANE)
        );
        PlacementUtils.register(
            context,
            PATCH_SUGAR_CANE_DESERT,
            sugarCane,
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 0),
            VegetationFeatures.nearWaterPredicate(Blocks.SUGAR_CANE)
        );
        PlacementUtils.register(
            context,
            PATCH_SUGAR_CANE_BADLANDS,
            sugarCane,
            RarityFilter.onAverageOnceEvery(5),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 0),
            VegetationFeatures.nearWaterPredicate(Blocks.SUGAR_CANE)
        );
        PlacementUtils.register(
            context,
            PATCH_SUGAR_CANE,
            sugarCane,
            RarityFilter.onAverageOnceEvery(6),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 0),
            VegetationFeatures.nearWaterPredicate(Blocks.SUGAR_CANE)
        );
        PlacementUtils.register(
            context,
            PATCH_FIREFLY_BUSH_NEAR_WATER,
            fireflyBush,
            CountPlacement.of(2),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_NO_LEAVES,
            BiomeFilter.biome(),
            VegetationFeatures.nearWaterPredicate(Blocks.FIREFLY_BUSH),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP,
            fireflyBush,
            CountPlacement.of(3),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            VegetationFeatures.nearWaterPredicate(Blocks.FIREFLY_BUSH),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            PATCH_FIREFLY_BUSH_SWAMP,
            fireflyBush,
            RarityFilter.onAverageOnceEvery(8),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(20),
            RandomOffsetPlacement.ofTriangle(4, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            BROWN_MUSHROOM_NETHER,
            brownMushroom,
            RarityFilter.onAverageOnceEvery(2),
            InSquarePlacement.spread(),
            PlacementUtils.FULL_RANGE,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            RED_MUSHROOM_NETHER,
            redMushroom,
            RarityFilter.onAverageOnceEvery(2),
            InSquarePlacement.spread(),
            PlacementUtils.FULL_RANGE,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(context, BROWN_MUSHROOM_NORMAL, brownMushroom, getMushroomPlacement(256, null));
        PlacementUtils.register(context, RED_MUSHROOM_NORMAL, redMushroom, getMushroomPlacement(512, null));
        PlacementUtils.register(context, BROWN_MUSHROOM_TAIGA, brownMushroom, getMushroomPlacement(4, null));
        PlacementUtils.register(context, RED_MUSHROOM_TAIGA, redMushroom, getMushroomPlacement(256, null));
        PlacementUtils.register(context, BROWN_MUSHROOM_OLD_GROWTH, brownMushroom, getMushroomPlacement(4, CountPlacement.of(3)));
        PlacementUtils.register(context, RED_MUSHROOM_OLD_GROWTH, redMushroom, getMushroomPlacement(171, null));
        PlacementUtils.register(context, BROWN_MUSHROOM_SWAMP, brownMushroom, getMushroomPlacement(0, CountPlacement.of(2)));
        PlacementUtils.register(context, RED_MUSHROOM_SWAMP, redMushroom, getMushroomPlacement(64, null));
        PlacementUtils.register(
            context, FLOWER_WARM, flowerDefault, RarityFilter.onAverageOnceEvery(16), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            FLOWER_DEFAULT,
            flowerDefault,
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            FLOWER_FLOWER_FOREST,
            flowerFlowerForest,
            CountPlacement.of(3),
            RarityFilter.onAverageOnceEvery(2),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            FLOWER_SWAMP,
            flowerSwamp,
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            FLOWER_PLAINS,
            flowerPlain,
            NoiseThresholdCountPlacement.of(-0.8, 15, 4),
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            FLOWER_CHERRY,
            flowerCherry,
            NoiseThresholdCountPlacement.of(-0.8, 5, 10),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            FLOWER_MEADOW,
            flowerMeadow,
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            FLOWER_PALE_GARDEN,
            flowerPaleGarden,
            RarityFilter.onAverageOnceEvery(32),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            WILDFLOWERS_BIRCH_FOREST,
            wildflower,
            CountPlacement.of(3),
            RarityFilter.onAverageOnceEvery(2),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(64),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context,
            WILDFLOWERS_MEADOW,
            wildflower,
            NoiseThresholdCountPlacement.of(-0.8, 5, 10),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            BiomeFilter.biome(),
            CountPlacement.of(8),
            RandomOffsetPlacement.ofTriangle(6, 2),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementModifier treeThreshold = SurfaceWaterDepthFilter.forMaxDepth(0);
        PlacementUtils.register(
            context,
            TREES_PLAINS,
            treesPlains,
            PlacementUtils.countExtra(0, 0.05F, 1),
            InSquarePlacement.spread(),
            treeThreshold,
            PlacementUtils.HEIGHTMAP_OCEAN_FLOOR,
            BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.OAK_SAPLING.defaultBlockState(), BlockPos.ZERO)),
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            DARK_FOREST_VEGETATION,
            darkForestVegetation,
            CountPlacement.of(16),
            InSquarePlacement.spread(),
            treeThreshold,
            PlacementUtils.HEIGHTMAP_OCEAN_FLOOR,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            PALE_GARDEN_VEGETATION,
            paleGardenVegetation,
            CountPlacement.of(16),
            InSquarePlacement.spread(),
            treeThreshold,
            PlacementUtils.HEIGHTMAP_OCEAN_FLOOR,
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            FLOWER_FOREST_FLOWERS,
            forestFlowers,
            RarityFilter.onAverageOnceEvery(7),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            CountPlacement.of(ClampedInt.of(UniformInt.of(-1, 3), 0, 3)),
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            FOREST_FLOWERS,
            forestFlowers,
            RarityFilter.onAverageOnceEvery(7),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP,
            CountPlacement.of(ClampedInt.of(UniformInt.of(-3, 1), 0, 1)),
            BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            PALE_GARDEN_FLOWERS,
            paleForestFlower,
            RarityFilter.onAverageOnceEvery(8),
            InSquarePlacement.spread(),
            PlacementUtils.HEIGHTMAP_NO_LEAVES,
            BiomeFilter.biome(),
            CountPlacement.of(96),
            RandomOffsetPlacement.ofTriangle(7, 3),
            BlockPredicateFilter.forPredicate(BlockPredicate.ONLY_IN_AIR_PREDICATE)
        );
        PlacementUtils.register(
            context, PALE_MOSS_PATCH, paleMossPatch, CountPlacement.of(1), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_NO_LEAVES, BiomeFilter.biome()
        );
        PlacementUtils.register(context, TREES_FLOWER_FOREST, treesFlowerForest, treePlacement(PlacementUtils.countExtra(6, 0.1F, 1)));
        PlacementUtils.register(context, TREES_MEADOW, meadowTrees, treePlacement(RarityFilter.onAverageOnceEvery(100)));
        PlacementUtils.register(context, TREES_CHERRY, cherryBees005, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.CHERRY_SAPLING));
        PlacementUtils.register(context, TREES_TAIGA, treesTaiga, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_GROVE, treesGrove, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_BADLANDS, treesBadlands, treePlacement(PlacementUtils.countExtra(5, 0.1F, 1), Blocks.OAK_SAPLING));
        PlacementUtils.register(context, TREES_SNOWY, treesSnowy, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1), Blocks.SPRUCE_SAPLING));
        PlacementUtils.register(
            context,
            TREES_SWAMP,
            swampOak,
            PlacementUtils.countExtra(2, 0.1F, 1),
            InSquarePlacement.spread(),
            SurfaceWaterDepthFilter.forMaxDepth(2),
            PlacementUtils.HEIGHTMAP_OCEAN_FLOOR,
            BiomeFilter.biome(),
            BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.OAK_SAPLING.defaultBlockState(), BlockPos.ZERO))
        );
        PlacementUtils.register(context, TREES_WINDSWEPT_SAVANNA, treesSavanna, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1)));
        PlacementUtils.register(context, TREES_SAVANNA, treesSavanna, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1)));
        PlacementUtils.register(context, BIRCH_TALL, birchTall, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_BIRCH, treesBirch, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.BIRCH_SAPLING));
        PlacementUtils.register(context, TREES_WINDSWEPT_FOREST, treesWindsweptHills, treePlacement(PlacementUtils.countExtra(3, 0.1F, 1)));
        PlacementUtils.register(context, TREES_WINDSWEPT_HILLS, treesWindsweptHills, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1)));
        PlacementUtils.register(context, TREES_WATER, treesWater, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1)));
        PlacementUtils.register(context, TREES_BIRCH_AND_OAK_LEAF_LITTER, treesBirchAndOakLeafLitter, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_SPARSE_JUNGLE, treesSparseJungle, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1)));
        PlacementUtils.register(context, TREES_OLD_GROWTH_SPRUCE_TAIGA, treesOldGrowthSpruceTaiga, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_OLD_GROWTH_PINE_TAIGA, treesOldGrowthPineTaiga, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)));
        PlacementUtils.register(context, TREES_JUNGLE, treesJungle, treePlacement(PlacementUtils.countExtra(50, 0.1F, 1)));
        PlacementUtils.register(context, BAMBOO_VEGETATION, bambooVegetation, treePlacement(PlacementUtils.countExtra(30, 0.1F, 1)));
        PlacementUtils.register(
            context, MUSHROOM_ISLAND_VEGETATION, mushroomIslandVegetation, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()
        );
        PlacementUtils.register(
            context,
            TREES_MANGROVE,
            mangroveVegetation,
            CountPlacement.of(25),
            InSquarePlacement.spread(),
            SurfaceWaterDepthFilter.forMaxDepth(5),
            PlacementUtils.HEIGHTMAP_OCEAN_FLOOR,
            BiomeFilter.biome()
        );
    }
}

引用的其他类

  • BootstrapContext

    • 引用位置: 参数
  • VegetationFeatures

    • 引用位置: 方法调用
    • 关联成员: VegetationFeatures.nearWaterPredicate()
  • PlacementUtils

    • 引用位置: 方法调用
    • 关联成员: PlacementUtils.countExtra(), PlacementUtils.createKey(), PlacementUtils.isEmpty(), PlacementUtils.register()
  • ResourceKey

    • 引用位置: 字段
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.copyAndAdd()
  • ClampedInt

    • 引用位置: 方法调用
    • 关联成员: ClampedInt.of()
  • UniformInt

    • 引用位置: 方法调用
    • 关联成员: UniformInt.of()
  • Block

    • 引用位置: 参数
  • VerticalAnchor

    • 引用位置: 方法调用
    • 关联成员: VerticalAnchor.absolute()
  • BlockPredicate

    • 引用位置: 方法调用
    • 关联成员: BlockPredicate.allOf(), BlockPredicate.matchesBlocks(), BlockPredicate.noFluid(), BlockPredicate.not(), BlockPredicate.replaceable(), BlockPredicate.wouldSurvive()
  • BiomeFilter

    • 引用位置: 方法调用
    • 关联成员: BiomeFilter.biome()
  • BlockPredicateFilter

    • 引用位置: 方法调用
    • 关联成员: BlockPredicateFilter.forPredicate()
  • CountPlacement

    • 引用位置: 方法调用
    • 关联成员: CountPlacement.of()
  • HeightRangePlacement

    • 引用位置: 方法调用
    • 关联成员: HeightRangePlacement.uniform()
  • InSquarePlacement

    • 引用位置: 方法调用
    • 关联成员: InSquarePlacement.spread()
  • NoiseBasedCountPlacement

    • 引用位置: 方法调用
    • 关联成员: NoiseBasedCountPlacement.of()
  • NoiseThresholdCountPlacement

    • 引用位置: 方法调用
    • 关联成员: NoiseThresholdCountPlacement.of()
  • PlacedFeature

    • 引用位置: 参数/字段
  • PlacementModifier

    • 引用位置: 参数/字段/返回值
  • RandomOffsetPlacement

    • 引用位置: 方法调用
    • 关联成员: RandomOffsetPlacement.ofTriangle()
  • RarityFilter

    • 引用位置: 方法调用
    • 关联成员: RarityFilter.onAverageOnceEvery()
  • SurfaceWaterDepthFilter

    • 引用位置: 方法调用
    • 关联成员: SurfaceWaterDepthFilter.forMaxDepth()