From 3d99dd8c01c87e82af146540d3f0015caafac615 Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 04:07:21 +0100 Subject: [PATCH] Created patch_firefly_bush_near_water_swamp. --- .../patch_firefly_bush_near_water_swamp.json | 90 +++++++++++++++++++ .../worldgen/ModBiomeModifiers.java | 7 ++ .../worldgen/ModPlacedFeatures.java | 23 +++++ 3 files changed, 120 insertions(+) create mode 100644 src/generated/resources/data/firefly_bush_backport/worldgen/placed_feature/patch_firefly_bush_near_water_swamp.json diff --git a/src/generated/resources/data/firefly_bush_backport/worldgen/placed_feature/patch_firefly_bush_near_water_swamp.json b/src/generated/resources/data/firefly_bush_backport/worldgen/placed_feature/patch_firefly_bush_near_water_swamp.json new file mode 100644 index 0000000..905cc61 --- /dev/null +++ b/src/generated/resources/data/firefly_bush_backport/worldgen/placed_feature/patch_firefly_bush_near_water_swamp.json @@ -0,0 +1,90 @@ +{ + "feature": "firefly_bush_backport:patch_firefly_bush", + "placement": [ + { + "type": "minecraft:count", + "count": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "MOTION_BLOCKING" + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:would_survive", + "state": { + "Name": "firefly_bush_backport:firefly_bush" + } + }, + { + "type": "minecraft:any_of", + "predicates": [ + { + "type": "minecraft:matching_fluids", + "fluids": [ + "minecraft:water", + "minecraft:flowing_water" + ], + "offset": [ + 1, + -1, + 0 + ] + }, + { + "type": "minecraft:matching_fluids", + "fluids": [ + "minecraft:water", + "minecraft:flowing_water" + ], + "offset": [ + -1, + -1, + 0 + ] + }, + { + "type": "minecraft:matching_fluids", + "fluids": [ + "minecraft:water", + "minecraft:flowing_water" + ], + "offset": [ + 0, + -1, + 1 + ] + }, + { + "type": "minecraft:matching_fluids", + "fluids": [ + "minecraft:water", + "minecraft:flowing_water" + ], + "offset": [ + 0, + -1, + -1 + ] + } + ] + } + ] + } + } + ] +} \ No newline at end of file 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 fe913da..9c373f5 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 @@ -17,6 +17,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 void bootstrap(BootstapContext context) { HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); @@ -27,6 +28,12 @@ public class ModBiomeModifiers { HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.PATCH_FIREFLY_BUSH_SWAMP_PLACED_KEY)), GenerationStep.Decoration.VEGETAL_DECORATION )); + + context.register(ADD_PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + biomes.getOrThrow(Tags.Biomes.IS_SWAMP), + HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP_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 9012fcf..1a531cd 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 @@ -1,20 +1,26 @@ package dev.micle.firefly_bush_backport.worldgen; import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; +import net.minecraft.core.Vec3i; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; 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.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.*; +import net.minecraft.world.level.material.Fluids; 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 void bootstrap(BootstapContext context) { HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); @@ -25,6 +31,23 @@ public class ModPlacedFeatures { PlacementUtils.HEIGHTMAP, BiomeFilter.biome() )); + + register(context, PATCH_FIREFLY_BUSH_NEAR_WATER_SWAMP_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.PATCH_FIREFLY_BUSH_KEY), List.of( + CountPlacement.of(3), + InSquarePlacement.spread(), + PlacementUtils.HEIGHTMAP, + 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) {