diff --git a/src/main/generated/resources/data/minestuck/worldgen/biome/skaia.json b/src/main/generated/resources/data/minestuck/worldgen/biome/skaia.json index 236b484fac..46edffee65 100644 --- a/src/main/generated/resources/data/minestuck/worldgen/biome/skaia.json +++ b/src/main/generated/resources/data/minestuck/worldgen/biome/skaia.json @@ -13,27 +13,7 @@ [], [], [ - { - "feature": { - "type": "minestuck:rook_outpost", - "config": {} - }, - "placement": [ - { - "type": "minecraft:rarity_filter", - "chance": 120 - }, - { - "type": "minecraft:heightmap", - "heightmap": "OCEAN_FLOOR" - }, - { - "type": "minecraft:random_offset", - "xz_spread": 0, - "y_spread": -4 - } - ] - } + "minestuck:rook_outpost" ] ], "has_precipitation": false, diff --git a/src/main/generated/resources/data/minestuck/worldgen/configured_feature/rook_outpost.json b/src/main/generated/resources/data/minestuck/worldgen/configured_feature/rook_outpost.json new file mode 100644 index 0000000000..ab8178eba9 --- /dev/null +++ b/src/main/generated/resources/data/minestuck/worldgen/configured_feature/rook_outpost.json @@ -0,0 +1,4 @@ +{ + "type": "minestuck:rook_outpost", + "config": {} +} \ No newline at end of file diff --git a/src/main/generated/resources/data/minestuck/worldgen/placed_feature/rook_outpost.json b/src/main/generated/resources/data/minestuck/worldgen/placed_feature/rook_outpost.json new file mode 100644 index 0000000000..9589c3525c --- /dev/null +++ b/src/main/generated/resources/data/minestuck/worldgen/placed_feature/rook_outpost.json @@ -0,0 +1,24 @@ +{ + "feature": "minestuck:rook_outpost", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 128 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "OCEAN_FLOOR" + }, + { + "type": "minecraft:random_offset", + "xz_spread": 0, + "y_spread": -4 + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/mraof/minestuck/data/worldgen/MSBiomeProvider.java b/src/main/java/com/mraof/minestuck/data/worldgen/MSBiomeProvider.java index 5743f67673..1c10f5ba96 100644 --- a/src/main/java/com/mraof/minestuck/data/worldgen/MSBiomeProvider.java +++ b/src/main/java/com/mraof/minestuck/data/worldgen/MSBiomeProvider.java @@ -2,30 +2,25 @@ import com.mraof.minestuck.entity.MSEntityTypes; import com.mraof.minestuck.world.biome.MSBiomes; -import com.mraof.minestuck.world.gen.feature.MSFeatures; -import net.minecraft.core.Holder; +import com.mraof.minestuck.world.gen.feature.MSPlacedFeatures; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; -import net.minecraft.data.worldgen.placement.PlacementUtils; -import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeGenerationSettings; import net.minecraft.world.level.biome.BiomeSpecialEffects; import net.minecraft.world.level.biome.MobSpawnSettings; import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraft.world.level.levelgen.placement.RandomOffsetPlacement; -import net.minecraft.world.level.levelgen.placement.RarityFilter; - -import java.util.List; public final class MSBiomeProvider { public static void register(BootstapContext context) { - context.register(MSBiomes.SKAIA, skaiaBiome()); + HolderGetter features = context.lookup(Registries.PLACED_FEATURE); + + context.register(MSBiomes.SKAIA, skaiaBiome(features)); MSBiomes.DEFAULT_LAND.createForDataGen(context); MSBiomes.HIGH_HUMID_LAND.createForDataGen(context); @@ -33,7 +28,7 @@ public static void register(BootstapContext context) MSBiomes.SNOW_LAND.createForDataGen(context); } - private static Biome skaiaBiome() + private static Biome skaiaBiome(HolderGetter features) { MobSpawnSettings.Builder spawnInfo = new MobSpawnSettings.Builder(); spawnInfo.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(MSEntityTypes.DERSITE_PAWN.get(), 2, 1, 10)); @@ -48,8 +43,7 @@ private static Biome skaiaBiome() BiomeSpecialEffects.Builder ambience = new BiomeSpecialEffects.Builder().waterColor(0x3F76E4).waterFogColor(0x050533); ambience.fogColor(0xCDCDFF).skyColor(0x7AA4FF); - genSettings.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, Holder.direct(new PlacedFeature(Holder.direct(new ConfiguredFeature<>(MSFeatures.ROOK_OUTPOST.get(), FeatureConfiguration.NONE)), - List.of(RarityFilter.onAverageOnceEvery(120), PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, RandomOffsetPlacement.vertical(ConstantInt.of(-4)))))); + genSettings.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, features.getOrThrow(MSPlacedFeatures.ROOK_OUTPOST)); return new Biome.BiomeBuilder().hasPrecipitation(false).temperature(0.5F).downfall(0.5F).specialEffects(ambience.build()).mobSpawnSettings(spawnInfo.build()).generationSettings(genSettings.build()).build(); } diff --git a/src/main/java/com/mraof/minestuck/data/worldgen/MSConfiguredFeatureProvider.java b/src/main/java/com/mraof/minestuck/data/worldgen/MSConfiguredFeatureProvider.java index 2b0079718b..cf82b3222c 100644 --- a/src/main/java/com/mraof/minestuck/data/worldgen/MSConfiguredFeatureProvider.java +++ b/src/main/java/com/mraof/minestuck/data/worldgen/MSConfiguredFeatureProvider.java @@ -52,6 +52,8 @@ public static void register(BootstapContext> context) context.register(RETURN_NODE, new ConfiguredFeature<>(MSFeatures.RETURN_NODE.get(), FeatureConfiguration.NONE)); + context.register(ROOK_OUTPOST, new ConfiguredFeature<>(MSFeatures.ROOK_OUTPOST.get(), FeatureConfiguration.NONE)); + var smallCog = context.register(SMALL_COG, new ConfiguredFeature<>(MSFeatures.SIMPLE_TEMPLATE.get(), new SimpleTemplateFeature.Config(Minestuck.id("small_cog"), true, SimpleTemplateFeature.HeightQueryType.MIN.with(Heightmap.Types.WORLD_SURFACE_WG, UniformInt.of(-2, 0))))); diff --git a/src/main/java/com/mraof/minestuck/data/worldgen/MSPlacedFeatureProvider.java b/src/main/java/com/mraof/minestuck/data/worldgen/MSPlacedFeatureProvider.java index 787d62ebdc..1e316382da 100644 --- a/src/main/java/com/mraof/minestuck/data/worldgen/MSPlacedFeatureProvider.java +++ b/src/main/java/com/mraof/minestuck/data/worldgen/MSPlacedFeatureProvider.java @@ -37,6 +37,9 @@ public static void register(BootstapContext context) context.register(RETURN_NODE, placed(features, MSCFeatures.RETURN_NODE, worldGenModifiers(RarityFilter.onAverageOnceEvery(128), PlacementUtils.HEIGHTMAP))); + context.register(ROOK_OUTPOST, placed(features, MSCFeatures.ROOK_OUTPOST, + worldGenModifiers(RarityFilter.onAverageOnceEvery(128), PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, RandomOffsetPlacement.vertical(ConstantInt.of(-4))))); + context.register(COG, placed(features, MSCFeatures.COG, worldGenModifiers(RarityFilter.onAverageOnceEvery(2)))); context.register(UNCOMMON_COG, placed(features, MSCFeatures.COG, diff --git a/src/main/java/com/mraof/minestuck/world/gen/feature/MSCFeatures.java b/src/main/java/com/mraof/minestuck/world/gen/feature/MSCFeatures.java index 4df65fe4fa..3d4e520988 100644 --- a/src/main/java/com/mraof/minestuck/world/gen/feature/MSCFeatures.java +++ b/src/main/java/com/mraof/minestuck/world/gen/feature/MSCFeatures.java @@ -16,6 +16,8 @@ public final class MSCFeatures { public static final ResourceKey> RETURN_NODE = key("return_node"); + public static final ResourceKey> ROOK_OUTPOST = key("rook_outpost"); + public static final ResourceKey> SMALL_COG = key("small_cog"); public static final ResourceKey> LARGE_COG_1 = key("large_cog_1"); public static final ResourceKey> LARGE_COG_2 = key("large_cog_2"); diff --git a/src/main/java/com/mraof/minestuck/world/gen/feature/MSFeatures.java b/src/main/java/com/mraof/minestuck/world/gen/feature/MSFeatures.java index 30ff6ecc31..7b3bb09d5c 100644 --- a/src/main/java/com/mraof/minestuck/world/gen/feature/MSFeatures.java +++ b/src/main/java/com/mraof/minestuck/world/gen/feature/MSFeatures.java @@ -21,6 +21,8 @@ public final class MSFeatures public static final Supplier> RETURN_NODE = REGISTER.register("return_node", () -> new ReturnNodeFeature(NoneFeatureConfiguration.CODEC)); + public static final Supplier> ROOK_OUTPOST = REGISTER.register("rook_outpost", () -> new RookOutpostFeature(NoneFeatureConfiguration.CODEC)); + public static final Supplier> SIMPLE_TEMPLATE = REGISTER.register("simple_template", () -> new SimpleTemplateFeature(SimpleTemplateFeature.Config.CODEC)); public static final Supplier> FLOOR_COG = REGISTER.register("floor_cog", () -> new FloorCogFeature(NoneFeatureConfiguration.CODEC)); diff --git a/src/main/java/com/mraof/minestuck/world/gen/feature/MSPlacedFeatures.java b/src/main/java/com/mraof/minestuck/world/gen/feature/MSPlacedFeatures.java index c2fefb6099..b580d1143d 100644 --- a/src/main/java/com/mraof/minestuck/world/gen/feature/MSPlacedFeatures.java +++ b/src/main/java/com/mraof/minestuck/world/gen/feature/MSPlacedFeatures.java @@ -17,6 +17,8 @@ public final class MSPlacedFeatures { public static final ResourceKey RETURN_NODE = key("return_node"); + public static final ResourceKey ROOK_OUTPOST = key("rook_outpost"); + public static final ResourceKey COG = key("cog/regular"); public static final ResourceKey UNCOMMON_COG = key("cog/sparse"); public static final ResourceKey FLOOR_COG = key("cog/floor_regular");