From f2e8ccabae0e660f58c784b570b19ccd3d63b06b Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 11 Jun 2023 15:11:27 +0200 Subject: [PATCH] Added custom processors for end village streets --- .../betterend/registry/EndProcessors.java | 16 ++++++ .../structures/village/VillagePools.java | 15 ++++-- .../datagen/betterend/BetterEndDatagen.java | 1 + .../betterend/EndRegistrySupplier.java | 6 +++ .../worldgen/ProcessorsDataProvider.java | 54 +++++++++++++++++++ 5 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/betterx/betterend/registry/EndProcessors.java create mode 100644 src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java diff --git a/src/main/java/org/betterx/betterend/registry/EndProcessors.java b/src/main/java/org/betterx/betterend/registry/EndProcessors.java new file mode 100644 index 00000000..a26ccece --- /dev/null +++ b/src/main/java/org/betterx/betterend/registry/EndProcessors.java @@ -0,0 +1,16 @@ +package org.betterx.betterend.registry; + +import org.betterx.bclib.api.v3.datagen.ProcessorHelper; +import org.betterx.betterend.BetterEnd; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList; + +public class EndProcessors { + public static final ResourceKey WEATHERED_10_PERCENT = + ProcessorHelper.createKey(BetterEnd.makeID("weather_10_percent")); + public static final ResourceKey CRACK_20_PERCENT = + ProcessorHelper.createKey(BetterEnd.makeID("crack_20_percent")); + public static final ResourceKey CRACK_AND_WEATHER = + ProcessorHelper.createKey(BetterEnd.makeID("crack_and_weather")); +} 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 712bcce7..36bb3845 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 @@ -2,6 +2,7 @@ package org.betterx.betterend.world.structures.village; import org.betterx.bclib.api.v2.levelgen.structures.StructurePools; import org.betterx.betterend.BetterEnd; +import org.betterx.betterend.registry.EndProcessors; import com.mojang.datafixers.util.Pair; import net.minecraft.core.Holder; @@ -42,6 +43,10 @@ public class VillagePools { final Holder.Reference emptyPool = poolGetter.getOrThrow(Pools.EMPTY); final Holder.Reference terminatorPool = poolGetter.getOrThrow(VillagePools.TERMINATORS_KEY); + Holder.Reference mossify = processorGetter.getOrThrow(EndProcessors.WEATHERED_10_PERCENT); + Holder.Reference crack = processorGetter.getOrThrow(EndProcessors.CRACK_20_PERCENT); + Holder.Reference crackAndWeather = processorGetter.getOrThrow(EndProcessors.CRACK_AND_WEATHER); + final Holder.Reference emptyProcessor = processorGetter.getOrThrow(ProcessorLists.EMPTY); ctx.register(VillagePools.TERMINATORS_KEY, new StructureTemplatePool( emptyPool, @@ -121,19 +126,19 @@ public class VillagePools { ctx.register(VillagePools.STREET_KEY, new StructureTemplatePool( terminatorPool, ImmutableList.of(Pair.of( - StructurePools.single(BetterEnd.makeID("village/streets/street_01"), emptyProcessor), + StructurePools.single(BetterEnd.makeID("village/streets/street_01"), crackAndWeather), 6 ), Pair.of( - StructurePools.single(BetterEnd.makeID("village/streets/street_02"), emptyProcessor), + StructurePools.single(BetterEnd.makeID("village/streets/street_02"), crackAndWeather), 4 ), Pair.of( - StructurePools.single(BetterEnd.makeID("village/streets/curve_01"), emptyProcessor), + StructurePools.single(BetterEnd.makeID("village/streets/curve_01"), crackAndWeather), 3 ), Pair.of( - StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_01"), emptyProcessor), + StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_01"), crackAndWeather), 1 ), Pair.of( - StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_02"), emptyProcessor), + StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_02"), crackAndWeather), 2 )), StructureTemplatePool.Projection.TERRAIN_MATCHING diff --git a/src/main/java/org/betterx/datagen/betterend/BetterEndDatagen.java b/src/main/java/org/betterx/datagen/betterend/BetterEndDatagen.java index 54ba3141..bc69c028 100644 --- a/src/main/java/org/betterx/datagen/betterend/BetterEndDatagen.java +++ b/src/main/java/org/betterx/datagen/betterend/BetterEndDatagen.java @@ -16,6 +16,7 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; public class BetterEndDatagen implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator dataGenerator) { + EndBiomesDataProvider.ensureStaticallyLoaded(); EndRecipeDataProvider.buildRecipes(); TemplatePoolDataProvider.buildStructures(); diff --git a/src/main/java/org/betterx/datagen/betterend/EndRegistrySupplier.java b/src/main/java/org/betterx/datagen/betterend/EndRegistrySupplier.java index ed96c8e9..e9e9c6c4 100644 --- a/src/main/java/org/betterx/datagen/betterend/EndRegistrySupplier.java +++ b/src/main/java/org/betterx/datagen/betterend/EndRegistrySupplier.java @@ -15,6 +15,7 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; import java.util.List; import org.jetbrains.annotations.Nullable; @@ -47,6 +48,11 @@ public class EndRegistrySupplier extends RegistrySupplier { ConfiguredFeature.DIRECT_CODEC, ConfiguredFeatureDataProvider::bootstrap ), + new RegistryInfo<>( + Registries.PROCESSOR_LIST, + StructureProcessorType.DIRECT_CODEC, + ProcessorsDataProvider::bootstrap + ), new RegistryInfo<>( Registries.PLACED_FEATURE, PlacedFeature.DIRECT_CODEC, diff --git a/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java b/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java new file mode 100644 index 00000000..45357fe2 --- /dev/null +++ b/src/main/java/org/betterx/datagen/betterend/worldgen/ProcessorsDataProvider.java @@ -0,0 +1,54 @@ +package org.betterx.datagen.betterend.worldgen; + +import org.betterx.bclib.api.v3.datagen.ProcessorHelper; +import org.betterx.bclib.complexmaterials.set.stone.StoneSlots; +import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.registry.EndProcessors; + +import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.structure.templatesystem.*; + +import com.google.common.collect.ImmutableList; + +public class ProcessorsDataProvider { + + public static void bootstrap(BootstapContext bootstapContext) { + ProcessorHelper.register( + bootstapContext, + EndProcessors.WEATHERED_10_PERCENT, + ImmutableList.of(new RuleProcessor(ImmutableList.of(new ProcessorRule( + new RandomBlockMatchTest(Blocks.END_STONE_BRICKS, 0.1f), + AlwaysTrueTest.INSTANCE, + EndBlocks.END_STONE_BRICK_VARIATIONS.getBlock(StoneSlots.WEATHERED).defaultBlockState() + )))) + ); + + ProcessorHelper.register( + bootstapContext, + EndProcessors.CRACK_20_PERCENT, + ImmutableList.of(new RuleProcessor(ImmutableList.of(new ProcessorRule( + new RandomBlockMatchTest(Blocks.END_STONE_BRICKS, 0.2f), + AlwaysTrueTest.INSTANCE, + EndBlocks.END_STONE_BRICK_VARIATIONS.getBlock(StoneSlots.CRACKED).defaultBlockState() + )))) + ); + + ProcessorHelper.register( + bootstapContext, + EndProcessors.CRACK_AND_WEATHER, + ImmutableList.of(new RuleProcessor(ImmutableList.of( + new ProcessorRule( + new RandomBlockMatchTest(Blocks.END_STONE_BRICKS, 0.2f), + AlwaysTrueTest.INSTANCE, + EndBlocks.END_STONE_BRICK_VARIATIONS.getBlock(StoneSlots.CRACKED).defaultBlockState() + ), + new ProcessorRule( + new RandomBlockMatchTest(Blocks.END_STONE_BRICKS, 0.1f), + AlwaysTrueTest.INSTANCE, + EndBlocks.END_STONE_BRICK_VARIATIONS.getBlock(StoneSlots.WEATHERED).defaultBlockState() + ) + ))) + ); + } +}