package net.minecraft.data.worldgen.placement; import java.util.List; import net.minecraft.core.Direction; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.features.TreeFeatures; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.BiomeFilter; import net.minecraft.world.level.levelgen.placement.BlockPredicateFilter; import net.minecraft.world.level.levelgen.placement.CountOnEveryLayerPlacement; import net.minecraft.world.level.levelgen.placement.EnvironmentScanPlacement; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacementModifier; public class TreePlacements { public static final ResourceKey CRIMSON_FUNGI = PlacementUtils.createKey("crimson_fungi"); public static final ResourceKey WARPED_FUNGI = PlacementUtils.createKey("warped_fungi"); public static final ResourceKey OAK_CHECKED = PlacementUtils.createKey("oak_checked"); public static final ResourceKey DARK_OAK_CHECKED = PlacementUtils.createKey("dark_oak_checked"); public static final ResourceKey PALE_OAK_CHECKED = PlacementUtils.createKey("pale_oak_checked"); public static final ResourceKey PALE_OAK_CREAKING_CHECKED = PlacementUtils.createKey("pale_oak_creaking_checked"); public static final ResourceKey BIRCH_CHECKED = PlacementUtils.createKey("birch_checked"); public static final ResourceKey ACACIA_CHECKED = PlacementUtils.createKey("acacia_checked"); public static final ResourceKey SPRUCE_CHECKED = PlacementUtils.createKey("spruce_checked"); public static final ResourceKey MANGROVE_CHECKED = PlacementUtils.createKey("mangrove_checked"); public static final ResourceKey CHERRY_CHECKED = PlacementUtils.createKey("cherry_checked"); public static final ResourceKey PINE_ON_SNOW = PlacementUtils.createKey("pine_on_snow"); public static final ResourceKey SPRUCE_ON_SNOW = PlacementUtils.createKey("spruce_on_snow"); public static final ResourceKey PINE_CHECKED = PlacementUtils.createKey("pine_checked"); public static final ResourceKey JUNGLE_TREE_CHECKED = PlacementUtils.createKey("jungle_tree"); public static final ResourceKey FANCY_OAK_CHECKED = PlacementUtils.createKey("fancy_oak_checked"); public static final ResourceKey MEGA_JUNGLE_TREE_CHECKED = PlacementUtils.createKey("mega_jungle_tree_checked"); public static final ResourceKey MEGA_SPRUCE_CHECKED = PlacementUtils.createKey("mega_spruce_checked"); public static final ResourceKey MEGA_PINE_CHECKED = PlacementUtils.createKey("mega_pine_checked"); public static final ResourceKey TALL_MANGROVE_CHECKED = PlacementUtils.createKey("tall_mangrove_checked"); public static final ResourceKey JUNGLE_BUSH = PlacementUtils.createKey("jungle_bush"); public static final ResourceKey SUPER_BIRCH_BEES_0002 = PlacementUtils.createKey("super_birch_bees_0002"); public static final ResourceKey SUPER_BIRCH_BEES = PlacementUtils.createKey("super_birch_bees"); public static final ResourceKey OAK_BEES_0002_LEAF_LITTER = PlacementUtils.createKey("oak_bees_0002_leaf_litter"); public static final ResourceKey OAK_BEES_002 = PlacementUtils.createKey("oak_bees_002"); public static final ResourceKey BIRCH_BEES_0002_PLACED = PlacementUtils.createKey("birch_bees_0002"); public static final ResourceKey BIRCH_BEES_0002_LEAF_LITTER = PlacementUtils.createKey("birch_bees_0002_leaf_litter"); public static final ResourceKey BIRCH_BEES_002 = PlacementUtils.createKey("birch_bees_002"); public static final ResourceKey FANCY_OAK_BEES_0002_LEAF_LITTER = PlacementUtils.createKey("fancy_oak_bees_0002_leaf_litter"); public static final ResourceKey FANCY_OAK_BEES_002 = PlacementUtils.createKey("fancy_oak_bees_002"); public static final ResourceKey FANCY_OAK_BEES = PlacementUtils.createKey("fancy_oak_bees"); public static final ResourceKey CHERRY_BEES_005 = PlacementUtils.createKey("cherry_bees_005"); public static final ResourceKey OAK_LEAF_LITTER = PlacementUtils.createKey("oak_leaf_litter"); public static final ResourceKey DARK_OAK_LEAF_LITTER = PlacementUtils.createKey("dark_oak_leaf_litter"); public static final ResourceKey BIRCH_LEAF_LITTER = PlacementUtils.createKey("birch_leaf_litter"); public static final ResourceKey FANCY_OAK_LEAF_LITTER = PlacementUtils.createKey("fancy_oak_leaf_litter"); public static final ResourceKey FALLEN_OAK_TREE = PlacementUtils.createKey("fallen_oak_tree"); public static final ResourceKey FALLEN_BIRCH_TREE = PlacementUtils.createKey("fallen_birch_tree"); public static final ResourceKey FALLEN_SUPER_BIRCH_TREE = PlacementUtils.createKey("fallen_super_birch_tree"); public static final ResourceKey FALLEN_SPRUCE_TREE = PlacementUtils.createKey("fallen_spruce_tree"); public static final ResourceKey FALLEN_JUNGLE_TREE = PlacementUtils.createKey("fallen_jungle_tree"); public static void bootstrap(BootstrapContext p_330667_) { HolderGetter> holdergetter = p_330667_.lookup(Registries.CONFIGURED_FEATURE); Holder> holder = holdergetter.getOrThrow(TreeFeatures.CRIMSON_FUNGUS); Holder> holder1 = holdergetter.getOrThrow(TreeFeatures.WARPED_FUNGUS); Holder> holder2 = holdergetter.getOrThrow(TreeFeatures.OAK); Holder> holder3 = holdergetter.getOrThrow(TreeFeatures.DARK_OAK); Holder> holder4 = holdergetter.getOrThrow(TreeFeatures.PALE_OAK); Holder> holder5 = holdergetter.getOrThrow(TreeFeatures.PALE_OAK_CREAKING); Holder> holder6 = holdergetter.getOrThrow(TreeFeatures.BIRCH); Holder> holder7 = holdergetter.getOrThrow(TreeFeatures.ACACIA); Holder> holder8 = holdergetter.getOrThrow(TreeFeatures.SPRUCE); Holder> holder9 = holdergetter.getOrThrow(TreeFeatures.MANGROVE); Holder> holder10 = holdergetter.getOrThrow(TreeFeatures.CHERRY); Holder> holder11 = holdergetter.getOrThrow(TreeFeatures.PINE); Holder> holder12 = holdergetter.getOrThrow(TreeFeatures.JUNGLE_TREE); Holder> holder13 = holdergetter.getOrThrow(TreeFeatures.FANCY_OAK); Holder> holder14 = holdergetter.getOrThrow(TreeFeatures.MEGA_JUNGLE_TREE); Holder> holder15 = holdergetter.getOrThrow(TreeFeatures.MEGA_SPRUCE); Holder> holder16 = holdergetter.getOrThrow(TreeFeatures.MEGA_PINE); Holder> holder17 = holdergetter.getOrThrow(TreeFeatures.TALL_MANGROVE); Holder> holder18 = holdergetter.getOrThrow(TreeFeatures.JUNGLE_BUSH); Holder> holder19 = holdergetter.getOrThrow(TreeFeatures.SUPER_BIRCH_BEES_0002); Holder> holder20 = holdergetter.getOrThrow(TreeFeatures.SUPER_BIRCH_BEES); Holder> holder21 = holdergetter.getOrThrow(TreeFeatures.OAK_BEES_0002_LEAF_LITTER); Holder> holder22 = holdergetter.getOrThrow(TreeFeatures.OAK_BEES_002); Holder> holder23 = holdergetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002); Holder> holder24 = holdergetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002_LEAF_LITTER); Holder> holder25 = holdergetter.getOrThrow(TreeFeatures.BIRCH_BEES_002); Holder> holder26 = holdergetter.getOrThrow(TreeFeatures.FANCY_OAK_BEES_0002_LEAF_LITTER); Holder> holder27 = holdergetter.getOrThrow(TreeFeatures.FANCY_OAK_BEES_002); Holder> holder28 = holdergetter.getOrThrow(TreeFeatures.FANCY_OAK_BEES); Holder> holder29 = holdergetter.getOrThrow(TreeFeatures.CHERRY_BEES_005); Holder> holder30 = holdergetter.getOrThrow(TreeFeatures.OAK_LEAF_LITTER); Holder> holder31 = holdergetter.getOrThrow(TreeFeatures.DARK_OAK_LEAF_LITTER); Holder> holder32 = holdergetter.getOrThrow(TreeFeatures.BIRCH_LEAF_LITTER); Holder> holder33 = holdergetter.getOrThrow(TreeFeatures.FANCY_OAK_LEAF_LITTER); Holder> holder34 = holdergetter.getOrThrow(TreeFeatures.FALLEN_OAK_TREE); Holder> holder35 = holdergetter.getOrThrow(TreeFeatures.FALLEN_BIRCH_TREE); Holder> holder36 = holdergetter.getOrThrow(TreeFeatures.FALLEN_SUPER_BIRCH_TREE); Holder> holder37 = holdergetter.getOrThrow(TreeFeatures.FALLEN_SPRUCE_TREE); Holder> holder38 = holdergetter.getOrThrow(TreeFeatures.FALLEN_JUNGLE_TREE); PlacementUtils.register(p_330667_, CRIMSON_FUNGI, holder, CountOnEveryLayerPlacement.of(8), BiomeFilter.biome()); PlacementUtils.register(p_330667_, WARPED_FUNGI, holder1, CountOnEveryLayerPlacement.of(8), BiomeFilter.biome()); PlacementUtils.register(p_330667_, OAK_CHECKED, holder2, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, DARK_OAK_CHECKED, holder3, PlacementUtils.filteredByBlockSurvival(Blocks.DARK_OAK_SAPLING)); PlacementUtils.register(p_330667_, PALE_OAK_CHECKED, holder4, PlacementUtils.filteredByBlockSurvival(Blocks.PALE_OAK_SAPLING)); PlacementUtils.register(p_330667_, PALE_OAK_CREAKING_CHECKED, holder5, PlacementUtils.filteredByBlockSurvival(Blocks.PALE_OAK_SAPLING)); PlacementUtils.register(p_330667_, BIRCH_CHECKED, holder6, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, ACACIA_CHECKED, holder7, PlacementUtils.filteredByBlockSurvival(Blocks.ACACIA_SAPLING)); PlacementUtils.register(p_330667_, SPRUCE_CHECKED, holder8, PlacementUtils.filteredByBlockSurvival(Blocks.SPRUCE_SAPLING)); PlacementUtils.register(p_330667_, MANGROVE_CHECKED, holder9, PlacementUtils.filteredByBlockSurvival(Blocks.MANGROVE_PROPAGULE)); PlacementUtils.register(p_330667_, CHERRY_CHECKED, holder10, PlacementUtils.filteredByBlockSurvival(Blocks.CHERRY_SAPLING)); BlockPredicate blockpredicate = BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), Blocks.SNOW_BLOCK, Blocks.POWDER_SNOW); List list = List.of( EnvironmentScanPlacement.scanningFor(Direction.UP, BlockPredicate.not(BlockPredicate.matchesBlocks(Blocks.POWDER_SNOW)), 8), BlockPredicateFilter.forPredicate(blockpredicate) ); PlacementUtils.register(p_330667_, PINE_ON_SNOW, holder11, list); PlacementUtils.register(p_330667_, SPRUCE_ON_SNOW, holder8, list); PlacementUtils.register(p_330667_, PINE_CHECKED, holder11, PlacementUtils.filteredByBlockSurvival(Blocks.SPRUCE_SAPLING)); PlacementUtils.register(p_330667_, JUNGLE_TREE_CHECKED, holder12, PlacementUtils.filteredByBlockSurvival(Blocks.JUNGLE_SAPLING)); PlacementUtils.register(p_330667_, FANCY_OAK_CHECKED, holder13, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, MEGA_JUNGLE_TREE_CHECKED, holder14, PlacementUtils.filteredByBlockSurvival(Blocks.JUNGLE_SAPLING)); PlacementUtils.register(p_330667_, MEGA_SPRUCE_CHECKED, holder15, PlacementUtils.filteredByBlockSurvival(Blocks.SPRUCE_SAPLING)); PlacementUtils.register(p_330667_, MEGA_PINE_CHECKED, holder16, PlacementUtils.filteredByBlockSurvival(Blocks.SPRUCE_SAPLING)); PlacementUtils.register(p_330667_, TALL_MANGROVE_CHECKED, holder17, PlacementUtils.filteredByBlockSurvival(Blocks.MANGROVE_PROPAGULE)); PlacementUtils.register(p_330667_, JUNGLE_BUSH, holder18, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, SUPER_BIRCH_BEES_0002, holder19, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, SUPER_BIRCH_BEES, holder20, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, OAK_BEES_0002_LEAF_LITTER, holder21, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, OAK_BEES_002, holder22, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, BIRCH_BEES_0002_PLACED, holder23, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, BIRCH_BEES_0002_LEAF_LITTER, holder24, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, BIRCH_BEES_002, holder25, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, FANCY_OAK_BEES_0002_LEAF_LITTER, holder26, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, FANCY_OAK_BEES_002, holder27, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, FANCY_OAK_BEES, holder28, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, CHERRY_BEES_005, holder29, PlacementUtils.filteredByBlockSurvival(Blocks.CHERRY_SAPLING)); PlacementUtils.register(p_330667_, OAK_LEAF_LITTER, holder30, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, DARK_OAK_LEAF_LITTER, holder31, PlacementUtils.filteredByBlockSurvival(Blocks.DARK_OAK_SAPLING)); PlacementUtils.register(p_330667_, BIRCH_LEAF_LITTER, holder32, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, FANCY_OAK_LEAF_LITTER, holder33, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, FALLEN_OAK_TREE, holder34, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(p_330667_, FALLEN_BIRCH_TREE, holder35, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, FALLEN_SUPER_BIRCH_TREE, holder36, PlacementUtils.filteredByBlockSurvival(Blocks.BIRCH_SAPLING)); PlacementUtils.register(p_330667_, FALLEN_SPRUCE_TREE, holder37, PlacementUtils.filteredByBlockSurvival(Blocks.SPRUCE_SAPLING)); PlacementUtils.register(p_330667_, FALLEN_JUNGLE_TREE, holder38, PlacementUtils.filteredByBlockSurvival(Blocks.JUNGLE_SAPLING)); } }