From 4732aa7ff894ac86c25dc8f39c3968772e4c5c85 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 9 Jul 2022 23:27:04 +0200 Subject: [PATCH] Make sure all Biomes are merged --- .../api/v2/generator/BCLibEndBiomeSource.java | 30 +++++++++++++------ .../api/v2/levelgen/biomes/BCLBiome.java | 16 ++++++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/betterx/bclib/api/v2/generator/BCLibEndBiomeSource.java b/src/main/java/org/betterx/bclib/api/v2/generator/BCLibEndBiomeSource.java index 927c3709..4a845b11 100644 --- a/src/main/java/org/betterx/bclib/api/v2/generator/BCLibEndBiomeSource.java +++ b/src/main/java/org/betterx/bclib/api/v2/generator/BCLibEndBiomeSource.java @@ -140,7 +140,8 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi } final BCLBiome bclBiome; if (!BiomeAPI.hasBiome(biomeID)) { - bclBiome = new BCLBiome(biomeID, biome.value()); + bclBiome = new BCLBiome(biomeID, biome.value(), BiomeAPI.BiomeType.END_LAND); + BiomeAPI.registerBiome(bclBiome); } else { bclBiome = BiomeAPI.getBiome(biomeID); } @@ -232,11 +233,20 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi } protected BCLBiomeSource cloneForDatapack(Set> datapackBiomes) { - datapackBiomes.addAll(getBclBiomes(this.biomeRegistry)); + datapackBiomes.addAll(getNonVanillaBiomes(this.biomeRegistry)); + datapackBiomes.addAll(possibleBiomes().stream() + .filter(h -> !h.unwrapKey() + .orElseThrow() + .location() + .getNamespace() + .equals("minecraft")) + .toList()); + return new BCLibEndBiomeSource( this.biomeRegistry, datapackBiomes.stream() - .filter(b -> b.unwrapKey().orElse(null) != BCLBiomeRegistry.EMPTY_BIOME.getBiomeKey()) + .filter(b -> b.isValidInRegistry(biomeRegistry) && b.unwrapKey() + .orElse(null) != BCLBiomeRegistry.EMPTY_BIOME.getBiomeKey()) .toList(), this.currentSeed, this.config, @@ -244,7 +254,7 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi ); } - private static List> getBclBiomes(Registry biomeRegistry) { + private static List> getNonVanillaBiomes(Registry biomeRegistry) { return getBiomes( biomeRegistry, Configs.BIOMES_CONFIG.getExcludeMatching(BiomeAPI.BiomeType.END), @@ -272,13 +282,15 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi } private static boolean isValidNonVanillaEndBiome(Holder biome, ResourceLocation location) { - if (BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.END_IGNORE)) return false; + if (BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.END_IGNORE) || biome.unwrapKey() + .orElseThrow() + .location() + .getNamespace() + .equals("minecraft")) + return false; return biome.is(BiomeTags.IS_END) || - BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.BCL_END_LAND) || - BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.BCL_END_VOID) || - BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.BCL_END_CENTER) || - BiomeAPI.wasRegisteredAs(location, BiomeAPI.BiomeType.BCL_END_BARRENS) || + BiomeAPI.wasRegisteredAsEndBiome(location) || TheEndBiomesHelper.canGenerateInEnd(biome.unwrapKey().orElse(null)); } 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 0f3bf80b..3f829d6b 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 @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.Random; import java.util.function.BiConsumer; import java.util.function.Consumer; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -242,9 +243,20 @@ public class BCLBiome extends BCLBiomeSettings implements BiomeData { * @param biomeID Teh ResoureLocation for this Biome */ @Deprecated(forRemoval = true) - //this constructor should become package private and not get removed public BCLBiome(ResourceLocation biomeID, Biome biomeToRegister) { - this(biomeID, biomeToRegister, null); + this(biomeID, biomeToRegister, (BCLBiomeSettings) null); + } + + /** + * Create wrapper for existing biome using biome instance from {@link BuiltinRegistries}. + * + * @param biomeToRegister {@link Biome} to wrap. + * @param biomeID Teh ResoureLocation for this Biome + */ + @ApiStatus.Internal + public BCLBiome(ResourceLocation biomeID, Biome biomeToRegister, BiomeAPI.BiomeType type) { + this(biomeID, biomeToRegister, (BCLBiomeSettings) null); + setIntendedType(type); } /**