Added custom processors for end village streets

This commit is contained in:
Frank 2023-06-11 15:11:27 +02:00
parent a5b81f5870
commit f2e8ccabae
5 changed files with 87 additions and 5 deletions

View file

@ -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<StructureProcessorList> WEATHERED_10_PERCENT =
ProcessorHelper.createKey(BetterEnd.makeID("weather_10_percent"));
public static final ResourceKey<StructureProcessorList> CRACK_20_PERCENT =
ProcessorHelper.createKey(BetterEnd.makeID("crack_20_percent"));
public static final ResourceKey<StructureProcessorList> CRACK_AND_WEATHER =
ProcessorHelper.createKey(BetterEnd.makeID("crack_and_weather"));
}

View file

@ -2,6 +2,7 @@ package org.betterx.betterend.world.structures.village;
import org.betterx.bclib.api.v2.levelgen.structures.StructurePools; import org.betterx.bclib.api.v2.levelgen.structures.StructurePools;
import org.betterx.betterend.BetterEnd; import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.registry.EndProcessors;
import com.mojang.datafixers.util.Pair; import com.mojang.datafixers.util.Pair;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
@ -42,6 +43,10 @@ public class VillagePools {
final Holder.Reference<StructureTemplatePool> emptyPool = poolGetter.getOrThrow(Pools.EMPTY); final Holder.Reference<StructureTemplatePool> emptyPool = poolGetter.getOrThrow(Pools.EMPTY);
final Holder.Reference<StructureTemplatePool> terminatorPool = poolGetter.getOrThrow(VillagePools.TERMINATORS_KEY); final Holder.Reference<StructureTemplatePool> terminatorPool = poolGetter.getOrThrow(VillagePools.TERMINATORS_KEY);
Holder.Reference<StructureProcessorList> mossify = processorGetter.getOrThrow(EndProcessors.WEATHERED_10_PERCENT);
Holder.Reference<StructureProcessorList> crack = processorGetter.getOrThrow(EndProcessors.CRACK_20_PERCENT);
Holder.Reference<StructureProcessorList> crackAndWeather = processorGetter.getOrThrow(EndProcessors.CRACK_AND_WEATHER);
final Holder.Reference<StructureProcessorList> emptyProcessor = processorGetter.getOrThrow(ProcessorLists.EMPTY); final Holder.Reference<StructureProcessorList> emptyProcessor = processorGetter.getOrThrow(ProcessorLists.EMPTY);
ctx.register(VillagePools.TERMINATORS_KEY, new StructureTemplatePool( ctx.register(VillagePools.TERMINATORS_KEY, new StructureTemplatePool(
emptyPool, emptyPool,
@ -121,19 +126,19 @@ public class VillagePools {
ctx.register(VillagePools.STREET_KEY, new StructureTemplatePool( ctx.register(VillagePools.STREET_KEY, new StructureTemplatePool(
terminatorPool, terminatorPool,
ImmutableList.of(Pair.of( ImmutableList.of(Pair.of(
StructurePools.single(BetterEnd.makeID("village/streets/street_01"), emptyProcessor), StructurePools.single(BetterEnd.makeID("village/streets/street_01"), crackAndWeather),
6 6
), Pair.of( ), Pair.of(
StructurePools.single(BetterEnd.makeID("village/streets/street_02"), emptyProcessor), StructurePools.single(BetterEnd.makeID("village/streets/street_02"), crackAndWeather),
4 4
), Pair.of( ), Pair.of(
StructurePools.single(BetterEnd.makeID("village/streets/curve_01"), emptyProcessor), StructurePools.single(BetterEnd.makeID("village/streets/curve_01"), crackAndWeather),
3 3
), Pair.of( ), Pair.of(
StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_01"), emptyProcessor), StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_01"), crackAndWeather),
1 1
), Pair.of( ), Pair.of(
StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_02"), emptyProcessor), StructurePools.single(BetterEnd.makeID("village/streets/t_crossing_02"), crackAndWeather),
2 2
)), )),
StructureTemplatePool.Projection.TERRAIN_MATCHING StructureTemplatePool.Projection.TERRAIN_MATCHING

View file

@ -16,6 +16,7 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
public class BetterEndDatagen implements DataGeneratorEntrypoint { public class BetterEndDatagen implements DataGeneratorEntrypoint {
@Override @Override
public void onInitializeDataGenerator(FabricDataGenerator dataGenerator) { public void onInitializeDataGenerator(FabricDataGenerator dataGenerator) {
EndBiomesDataProvider.ensureStaticallyLoaded(); EndBiomesDataProvider.ensureStaticallyLoaded();
EndRecipeDataProvider.buildRecipes(); EndRecipeDataProvider.buildRecipes();
TemplatePoolDataProvider.buildStructures(); TemplatePoolDataProvider.buildStructures();

View file

@ -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.Structure;
import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType;
import java.util.List; import java.util.List;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -47,6 +48,11 @@ public class EndRegistrySupplier extends RegistrySupplier {
ConfiguredFeature.DIRECT_CODEC, ConfiguredFeature.DIRECT_CODEC,
ConfiguredFeatureDataProvider::bootstrap ConfiguredFeatureDataProvider::bootstrap
), ),
new RegistryInfo<>(
Registries.PROCESSOR_LIST,
StructureProcessorType.DIRECT_CODEC,
ProcessorsDataProvider::bootstrap
),
new RegistryInfo<>( new RegistryInfo<>(
Registries.PLACED_FEATURE, Registries.PLACED_FEATURE,
PlacedFeature.DIRECT_CODEC, PlacedFeature.DIRECT_CODEC,

View file

@ -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<StructureProcessorList> 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()
)
)))
);
}
}