diff --git a/src/main/java/org/betterx/bclib/api/v2/levelgen/structures/BCLStructure.java b/src/main/java/org/betterx/bclib/api/v2/levelgen/structures/BCLStructure.java index eb0b6d91..deb03584 100644 --- a/src/main/java/org/betterx/bclib/api/v2/levelgen/structures/BCLStructure.java +++ b/src/main/java/org/betterx/bclib/api/v2/levelgen/structures/BCLStructure.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.function.Function; import org.jetbrains.annotations.NotNull; -public class BCLStructure { +public abstract class BCLStructure { public static class Unbound extends BCLStructure { private final Function structureBuilder; private final TerrainAdjustment terrainAdjustment; @@ -101,6 +101,10 @@ public class BCLStructure { public Holder getStructure() { return structure; } + + public Bound register(BootstapContext bootstrapContext) { + return this; + } } @@ -118,8 +122,7 @@ public class BCLStructure { public final Codec STRUCTURE_CODEC; private static HolderSet biomes(BootstapContext bootstrapContext, TagKey tagKey) { - //TODO:1.19.3 Refactor - return null; //BuiltInRegistries.BIOME.getOrCreateTag(tagKey); + return bootstrapContext.lookup(Registries.BIOME).getOrThrow(tagKey); } private static Structure.StructureSettings structure( @@ -246,4 +249,6 @@ public class BCLStructure { spreadConfig )); } + + public abstract Bound register(BootstapContext bootstrapContext); } diff --git a/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java b/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java index ea56c477..3698eb22 100644 --- a/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java +++ b/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java @@ -45,7 +45,7 @@ public class TestBiomes extends FabricTagProvider { .skyColor(0x0000AA) .addNetherClimateParamater(-1, 1) .surface(Blocks.LIGHT_BLUE_CONCRETE) - .structure(TestStructure.TEST_STRUCTURE_TAG) + .structure(TestStructure.TEST.biomeTag) .endLandBiome() .build(); diff --git a/src/main/java/org/betterx/datagen/bclib/tests/TestPlacedFeatures.java b/src/main/java/org/betterx/datagen/bclib/tests/TestPlacedFeatures.java index d286651c..5fb3a9c1 100644 --- a/src/main/java/org/betterx/datagen/bclib/tests/TestPlacedFeatures.java +++ b/src/main/java/org/betterx/datagen/bclib/tests/TestPlacedFeatures.java @@ -22,6 +22,7 @@ public class TestPlacedFeatures { .onHeightmap(Heightmap.Types.WORLD_SURFACE) .decoration(GenerationStep.Decoration.VEGETAL_DECORATION) .isEmptyAndOn(BlockPredicate.matchesBlocks(Blocks.YELLOW_CONCRETE)) + .onlyInBiome() .build(); public static void bootstrap(BootstapContext bootstrapContext) { diff --git a/src/main/java/org/betterx/datagen/bclib/tests/TestStructure.java b/src/main/java/org/betterx/datagen/bclib/tests/TestStructure.java index ff51869b..4ad3b1bc 100644 --- a/src/main/java/org/betterx/datagen/bclib/tests/TestStructure.java +++ b/src/main/java/org/betterx/datagen/bclib/tests/TestStructure.java @@ -1,25 +1,23 @@ package org.betterx.datagen.bclib.tests; import org.betterx.bclib.BCLib; +import org.betterx.bclib.api.v2.levelgen.structures.BCLStructure; +import org.betterx.bclib.api.v2.levelgen.structures.BCLStructureBuilder; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; -import org.betterx.worlds.together.tag.v3.TagManager; import net.minecraft.core.BlockPos; -import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; -import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.StructureManager; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.GenerationStep; @@ -29,10 +27,7 @@ import net.minecraft.world.level.levelgen.structure.*; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; -import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement; -import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType; -import java.util.Map; import java.util.Optional; class TestStructurePiece extends StructurePiece { @@ -90,15 +85,12 @@ class TestStructurePiece extends StructurePiece { } public class TestStructure extends Structure { - static final TagKey TEST_STRUCTURE_TAG = TagManager.BIOMES.makeTag(BCLib.makeID("test_structure")); - static final ResourceKey> TYPE_KEY = ResourceKey.create( - Registries.STRUCTURE_TYPE, - BCLib.makeID("test_type") - ); - static final StructureType TYPE = () -> Structure.simpleCodec(TestStructure::new); - - static final ResourceKey KEY = ResourceKey.create(Registries.STRUCTURE, BCLib.makeID("test_structure")); - static final ResourceKey SET_KEY = ResourceKey.create(Registries.STRUCTURE_SET, KEY.location()); + public static final BCLStructure TEST = BCLStructureBuilder + .start(BCLib.makeID("test_structure"), TestStructure::new) + .adjustment(TerrainAdjustment.BEARD_THIN) + .randomPlacement(16, 8) + .step(GenerationStep.Decoration.SURFACE_STRUCTURES) + .build(); protected TestStructure(StructureSettings structureSettings) { super(structureSettings); @@ -155,35 +147,20 @@ public class TestStructure extends Structure { @Override public StructureType type() { - return TYPE; + return TEST.structureType; } public static void bootstrap(BootstapContext bootstrapContext) { BCLib.LOGGER.info("Bootstrap Structure"); - //registerBase(); - HolderSet biomes = bootstrapContext.lookup(Registries.BIOME).getOrThrow(TEST_STRUCTURE_TAG); - - bootstrapContext.register(KEY, new TestStructure(new Structure.StructureSettings( - biomes, - Map.of(), - GenerationStep.Decoration.SURFACE_STRUCTURES, - TerrainAdjustment.BEARD_THIN - ))); + TEST.register(bootstrapContext); } public static void bootstrapSet(BootstapContext bootstrapContext) { BCLib.LOGGER.info("Bootstrap StructureSet"); - var structure = bootstrapContext.lookup(Registries.STRUCTURE).getOrThrow(KEY); - bootstrapContext.register(SET_KEY, new StructureSet(structure, new RandomSpreadStructurePlacement( - 10, - 8, - RandomSpreadType.LINEAR, - 13323129 + 10 + 8 + KEY.location().toString().hashCode() % 10000 - ))); + TEST.registerSet(bootstrapContext); } public static void registerBase() { Registry.register(BuiltInRegistries.STRUCTURE_PIECE, TestStructurePiece.KEY, TestStructurePiece.INSTANCE); - Registry.register(BuiltInRegistries.STRUCTURE_TYPE, TYPE_KEY, TYPE); } }