From 5c7ac126ed02ea5082e6071ba41ecc45b79a8384 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 3 Dec 2022 13:25:59 +0100 Subject: [PATCH] Use ResourceKey as an alternative to Holders --- .../api/v2/levelgen/biomes/BCLBiome.java | 15 ++++++++ .../v2/levelgen/biomes/BCLBiomeBuilder.java | 38 ++++++++++++++----- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiome.java b/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiome.java index 8d82fe5a..f33f65df 100644 --- a/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiome.java +++ b/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiome.java @@ -224,6 +224,21 @@ public class BCLBiome extends BCLBiomeSettings implements BiomeData { } } + /** + * Create a new Biome + * + * @param biomeID {@link ResourceLocation} of the wrapped Biome + * @param defaults The Settings for this Biome or null if you want to apply the defaults + */ + protected BCLBiome(ResourceLocation biomeID, BCLBiomeSettings defaults) { + this.biomeID = biomeID; + this.biomeKey = ResourceKey.create(Registries.BIOME, biomeID); + + if (defaults != null) { + defaults.applyWithDefaults(this); + } + } + /** * Changes the intended Type for this Biome * diff --git a/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiomeBuilder.java b/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiomeBuilder.java index 70038350..321949de 100644 --- a/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiomeBuilder.java +++ b/src/main/java/org/betterx/bclib/api/v2/levelgen/biomes/BCLBiomeBuilder.java @@ -606,6 +606,19 @@ public class BCLBiomeBuilder { return this; } + /** + * Adds new feature to the biome. + * + * @param decoration {@link Decoration} feature step. + * @param feature {@link PlacedFeature}. + * @return same {@link BCLBiomeBuilder} instance. + */ + public BCLBiomeBuilder feature(Decoration decoration, ResourceKey feature) { + featureSupliers.add(gen -> gen.addFeature(decoration, feature)); + return this; + } + + /** * Adds vanilla Mushrooms. * @@ -674,17 +687,24 @@ public class BCLBiomeBuilder { * @param carver {@link ConfiguredWorldCarver} to add. * @return same {@link BCLBiomeBuilder} instance. */ - public BCLBiomeBuilder carver(GenerationStep.Carving step, Holder> carver) { - final ResourceLocation immutableID = biomeID; - var oKey = carver.unwrapKey(); + public BCLBiomeBuilder carver(GenerationStep.Carving step, Holder> carver) { + final Optional>> oKey = carver.unwrapKey(); if (oKey.isPresent()) { - BiomeModifications.addCarver( - ctx -> ctx.getBiomeKey().location().equals(immutableID), - step, - (ResourceKey>) oKey.get() - ); + return carver(step, oKey.get()); } - //carvers.add(new Pair<>(step, carver)); + + return this; + } + + public BCLBiomeBuilder carver( + GenerationStep.Carving step, + ResourceKey> carverKey + ) { + BiomeModifications.addCarver( + ctx -> ctx.getBiomeKey().location().equals(biomeID), + step, + carverKey + ); return this; }