From efeee52a4941726bcccc2894bb69fb5ba2065655 Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 04:16:37 +0100 Subject: [PATCH] Created patch_firefly_bush_near_water. --- .../worldgen/ModBiomeModifiers.java | 8 ++++++++ .../worldgen/ModPlacedFeatures.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModBiomeModifiers.java b/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModBiomeModifiers.java index 9c373f5..d9e18ae 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModBiomeModifiers.java +++ b/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModBiomeModifiers.java @@ -7,6 +7,7 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.placement.PlacedFeature; @@ -18,6 +19,7 @@ import net.minecraftforge.registries.ForgeRegistries; public class ModBiomeModifiers { public static final ResourceKey ADD_PATCH_FIREFLY_BUSH_SWAMP = registerKey("add_patch_firefly_bush_swamp"); public static final ResourceKey ADD_PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP = registerKey("add_patch_firefly_bush_near_water_swamp"); + public static final ResourceKey ADD_PATCH_FIREFLY_BUSH_NEAR_WATER = registerKey("add_patch_firefly_bush_near_water"); public static void bootstrap(BootstapContext context) { HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); @@ -34,6 +36,12 @@ public class ModBiomeModifiers { HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP_PLACED_KEY)), GenerationStep.Decoration.VEGETAL_DECORATION )); + + context.register(ADD_PATCH_FIREFLY_BUSH_NEAR_WATER, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + biomes.getOrThrow(BiomeTags.IS_OVERWORLD), + HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.PATCH_FIREFLY_BUSH_NEAR_WATER_PLACED_KEY)), + GenerationStep.Decoration.VEGETAL_DECORATION + )); } private static ResourceKey registerKey(String name) { diff --git a/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModPlacedFeatures.java b/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModPlacedFeatures.java index 1a531cd..c7a3094 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModPlacedFeatures.java +++ b/src/main/java/dev/micle/firefly_bush_backport/worldgen/ModPlacedFeatures.java @@ -11,6 +11,7 @@ import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.*; @@ -21,6 +22,7 @@ import java.util.List; public class ModPlacedFeatures { public static final ResourceKey PATCH_FIREFLY_BUSH_SWAMP_PLACED_KEY = registerKey("patch_firefly_bush_swamp"); public static final ResourceKey PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP_PLACED_KEY = registerKey("patch_firefly_bush_near_water_swamp"); + public static final ResourceKey PATCH_FIREFLY_BUSH_NEAR_WATER_PLACED_KEY = registerKey("patch_firefly_bush_near_water"); public static void bootstrap(BootstapContext context) { HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); @@ -48,6 +50,23 @@ public class ModPlacedFeatures { ) )) )); + + register(context, PATCH_FIREFLY_BUSH_NEAR_WATER_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.PATCH_FIREFLY_BUSH_KEY), List.of( + CountPlacement.of(2), + InSquarePlacement.spread(), + HeightmapPlacement.onHeightmap(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES), + BiomeFilter.biome(), + BlockPredicateFilter.forPredicate(BlockPredicate.allOf( + BlockPredicate.matchesBlocks(Blocks.AIR), + BlockPredicate.wouldSurvive(ModBlocks.FIREFLY_BUSH.get().defaultBlockState(), Vec3i.ZERO), + BlockPredicate.anyOf( + BlockPredicate.matchesFluids(new Vec3i(1, -1, 0), List.of(Fluids.WATER, Fluids.FLOWING_WATER)), + BlockPredicate.matchesFluids(new Vec3i(-1, -1, 0), List.of(Fluids.WATER, Fluids.FLOWING_WATER)), + BlockPredicate.matchesFluids(new Vec3i(0, -1, 1), List.of(Fluids.WATER, Fluids.FLOWING_WATER)), + BlockPredicate.matchesFluids(new Vec3i(0, -1, -1), List.of(Fluids.WATER, Fluids.FLOWING_WATER)) + ) + )) + )); } private static ResourceKey registerKey(String name) {