diff --git a/src/main/java/org/betterx/betterend/registry/EndProcessors.java b/src/main/java/org/betterx/betterend/registry/EndProcessors.java index 4df24189..66077575 100644 --- a/src/main/java/org/betterx/betterend/registry/EndProcessors.java +++ b/src/main/java/org/betterx/betterend/registry/EndProcessors.java @@ -16,4 +16,7 @@ public class EndProcessors { public static final ResourceKey END_STREET = ProcessorHelper.createKey(BetterEnd.makeID("end_street")); + + public static final ResourceKey CRYING_10_PERCENT = + ProcessorHelper.createKey(BetterEnd.makeID("crying_10_percent")); } diff --git a/src/main/java/org/betterx/betterend/registry/EndStructures.java b/src/main/java/org/betterx/betterend/registry/EndStructures.java index 45559b02..fe422e70 100644 --- a/src/main/java/org/betterx/betterend/registry/EndStructures.java +++ b/src/main/java/org/betterx/betterend/registry/EndStructures.java @@ -40,13 +40,13 @@ public class EndStructures { public static final BCLStructure MEGALAKE = BCLStructureBuilder .start(BetterEnd.makeID("megalake"), MegaLakeStructure::new) - .step(Decoration.RAW_GENERATION) + .step(Decoration.LAKES) .randomPlacement(4, 1) .build(); public static final BCLStructure MEGALAKE_SMALL = BCLStructureBuilder .start(BetterEnd.makeID("megalake_small"), MegaLakeSmallStructure::new) - .step(Decoration.RAW_GENERATION) + .step(Decoration.LAKES) .randomPlacement(4, 1) .build(); diff --git a/src/main/java/org/betterx/betterend/world/structures/village/VillagePools.java b/src/main/java/org/betterx/betterend/world/structures/village/VillagePools.java index 8ed58d96..da3a8d30 100644 --- a/src/main/java/org/betterx/betterend/world/structures/village/VillagePools.java +++ b/src/main/java/org/betterx/betterend/world/structures/village/VillagePools.java @@ -24,6 +24,10 @@ import com.google.common.collect.ImmutableList; import java.util.function.Function; public class VillagePools { + public static final ResourceKey CHORUS_VILLAGE = ResourceKey.create( + Registries.PLACED_FEATURE, + BetterEnd.makeID("village_chorus") + ); public static ResourceKey TERMINATORS_KEY = StructurePools .createKey(BetterEnd.makeID("village/terminators")); public static ResourceKey START = StructurePools @@ -54,12 +58,14 @@ public class VillagePools { final Holder.Reference emptyPool = poolGetter.getOrThrow(Pools.EMPTY); final Holder.Reference terminatorPool = poolGetter.getOrThrow(VillagePools.TERMINATORS_KEY); - Holder.Reference mossifyProcessor = processorGetter.getOrThrow(EndProcessors.WEATHERED_10_PERCENT); - Holder.Reference crack = processorGetter.getOrThrow(EndProcessors.CRACK_20_PERCENT); - Holder.Reference crackAndWeather = processorGetter.getOrThrow(EndProcessors.CRACK_AND_WEATHER); - Holder.Reference endStreetProcessor = processorGetter.getOrThrow(EndProcessors.END_STREET); - + final Holder.Reference mossifyProcessor = processorGetter.getOrThrow(EndProcessors.WEATHERED_10_PERCENT); + final Holder.Reference crack = processorGetter.getOrThrow(EndProcessors.CRACK_20_PERCENT); + final Holder.Reference cry = processorGetter.getOrThrow(EndProcessors.CRYING_10_PERCENT); + final Holder.Reference crackAndWeather = processorGetter.getOrThrow(EndProcessors.CRACK_AND_WEATHER); + final Holder.Reference endStreetProcessor = processorGetter.getOrThrow(EndProcessors.END_STREET); final Holder.Reference emptyProcessor = processorGetter.getOrThrow(ProcessorLists.EMPTY); + + final Holder.Reference chorus = featureGetter.getOrThrow(CHORUS_VILLAGE); ctx.register(VillagePools.TERMINATORS_KEY, new StructureTemplatePool( emptyPool, ImmutableList.of( @@ -101,7 +107,8 @@ public class VillagePools { single("village/decoration/pond_01", mossifyProcessor, 1), single("village/decoration/respawn_01", endStreetProcessor, 1), single("village/decoration/respawn_02", endStreetProcessor, 1), - single("village/decoration/fountain_01", endStreetProcessor, 1) + single("village/decoration/fountain_01", endStreetProcessor, 1), + single("village/street_decoration/work_01", endStreetProcessor, 1) ), StructureTemplatePool.Projection.RIGID @@ -124,8 +131,15 @@ public class VillagePools { terminatorPool, ImmutableList.of( Pair.of(StructurePoolElement.empty(), 5), - single("village/street_decoration/lamp_02", emptyProcessor, 2), - single("village/street_decoration/lamp_05", emptyProcessor, 1) + single("village/street_decoration/lamp_02", emptyProcessor, 4), + single("village/street_decoration/lamp_05", emptyProcessor, 2), + single("village/street_decoration/lamp_06", emptyProcessor, 3), + single("village/street_decoration/obsidian_01", cry, 2), + single("village/street_decoration/obsidian_02", cry, 3), + single("village/street_decoration/obsidian_03", cry, 2), + single("village/street_decoration/obsidian_04", cry, 2), + single("village/street_decoration/obsidian_05", cry, 1), + Pair.of(StructurePoolElement.feature(chorus), 2) ), StructureTemplatePool.Projection.RIGID )); diff --git a/src/main/java/org/betterx/datagen/betterend/worldgen/PlacedFeatureDataProvider.java b/src/main/java/org/betterx/datagen/betterend/worldgen/PlacedFeatureDataProvider.java index 69d98d99..139dd6a0 100644 --- a/src/main/java/org/betterx/datagen/betterend/worldgen/PlacedFeatureDataProvider.java +++ b/src/main/java/org/betterx/datagen/betterend/worldgen/PlacedFeatureDataProvider.java @@ -1,12 +1,30 @@ package org.betterx.datagen.betterend.worldgen; import org.betterx.bclib.api.v3.levelgen.features.BCLPlacedFeatureBuilder; +import org.betterx.betterend.world.structures.village.VillagePools; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.features.EndFeatures; +import net.minecraft.data.worldgen.placement.PlacementUtils; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; public class PlacedFeatureDataProvider { public static void bootstrap(BootstapContext ctx) { BCLPlacedFeatureBuilder.registerUnbound(ctx); + + HolderGetter> configuredFeatures = ctx.lookup(Registries.CONFIGURED_FEATURE); + Holder.Reference> chorusFeature = configuredFeatures.getOrThrow(EndFeatures.CHORUS_PLANT); + + PlacementUtils.register( + ctx, + VillagePools.CHORUS_VILLAGE, + chorusFeature, + PlacementUtils.filteredByBlockSurvival(Blocks.CHORUS_PLANT) + ); } } diff --git a/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java b/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java index a7a8e682..60f60d93 100644 --- a/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java +++ b/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java @@ -15,6 +15,15 @@ import com.google.common.collect.ImmutableList; public class ProcessorsDataProvider { public static void bootstrap(BootstapContext bootstapContext) { + ProcessorHelper.register( + bootstapContext, + EndProcessors.CRYING_10_PERCENT, + ImmutableList.of(new RuleProcessor(ImmutableList.of(new ProcessorRule( + new RandomBlockMatchTest(Blocks.OBSIDIAN, 0.1f), + AlwaysTrueTest.INSTANCE, + Blocks.CRYING_OBSIDIAN.defaultBlockState() + )))) + ); ProcessorHelper.register( bootstapContext, EndProcessors.WEATHERED_10_PERCENT, diff --git a/src/main/java/org/betterx/datagen/betterend/worldgen/StructureDataProvider.java b/src/main/java/org/betterx/datagen/betterend/worldgen/StructureDataProvider.java index 93402d0d..d0f9a62b 100644 --- a/src/main/java/org/betterx/datagen/betterend/worldgen/StructureDataProvider.java +++ b/src/main/java/org/betterx/datagen/betterend/worldgen/StructureDataProvider.java @@ -13,5 +13,7 @@ public class StructureDataProvider { public static void bootstrapSets(BootstapContext ctx) { BCLStructureBuilder.registerUnboundSets(ctx); + + } } diff --git a/src/main/resources/data/betterend/structures/village/decoration/work_01.nbt b/src/main/resources/data/betterend/structures/village/decoration/work_01.nbt new file mode 100644 index 00000000..e51d5f36 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/decoration/work_01.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/lamp_05.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/lamp_05.nbt index ceb63084..b3bc6414 100644 Binary files a/src/main/resources/data/betterend/structures/village/street_decoration/lamp_05.nbt and b/src/main/resources/data/betterend/structures/village/street_decoration/lamp_05.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/lamp_06.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/lamp_06.nbt new file mode 100644 index 00000000..a72fee96 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/lamp_06.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_01.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_01.nbt new file mode 100644 index 00000000..edafb85f Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_01.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_02.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_02.nbt new file mode 100644 index 00000000..f63baa55 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_02.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_03.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_03.nbt new file mode 100644 index 00000000..f6af4a19 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_03.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_04.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_04.nbt new file mode 100644 index 00000000..7b351d06 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_04.nbt differ diff --git a/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_05.nbt b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_05.nbt new file mode 100644 index 00000000..6be8f894 Binary files /dev/null and b/src/main/resources/data/betterend/structures/village/street_decoration/obsidian_05.nbt differ