From c042d00c23ba329fc88a1a7315bbdc236285a4a7 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 3 Jul 2022 14:57:19 +0200 Subject: [PATCH] [Features] End Source has fallbacks if barrens/voids or center Biomes are missing --- .../api/v2/generator/BCLibEndBiomeSource.java | 20 ++++++++++++++++--- .../bclib/api/v2/generator/BiomePicker.java | 4 ++++ 2 files changed, 21 insertions(+), 3 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 6520216e..be97e203 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 @@ -62,9 +62,9 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi private BiomeMap mapBarrens; private final BiomePicker endLandBiomePicker; - private final BiomePicker endVoidBiomePicker; - private final BiomePicker endCenterBiomePicker; - private final BiomePicker endBarrensBiomePicker; + private BiomePicker endVoidBiomePicker; + private BiomePicker endCenterBiomePicker; + private BiomePicker endBarrensBiomePicker; private BCLEndBiomeSourceConfig config; @@ -171,6 +171,20 @@ public class BCLibEndBiomeSource extends BCLBiomeSource implements BiomeSourceWi endBarrensBiomePicker.rebuild(); endCenterBiomePicker.rebuild(); + if (endVoidBiomePicker.isEmpty()) { + BCLib.LOGGER.info("No Void Biomes found. Disabling by using barrens"); + endVoidBiomePicker = endBarrensBiomePicker; + } + if (endBarrensBiomePicker.isEmpty()) { + BCLib.LOGGER.info("No Barrens Biomes found. Disabling by using land Biomes"); + endBarrensBiomePicker = endLandBiomePicker; + endVoidBiomePicker = endLandBiomePicker; + } + if (endCenterBiomePicker.isEmpty()) { + BCLib.LOGGER.warning("No Center Island Biomes found. Forcing use of vanilla center."); + endCenterBiomePicker.addBiome(BiomeAPI.THE_END); + } + this.endLandFunction = GeneratorOptions.getEndLandFunction(); this.pos = new Point(); diff --git a/src/main/java/org/betterx/bclib/api/v2/generator/BiomePicker.java b/src/main/java/org/betterx/bclib/api/v2/generator/BiomePicker.java index 134ab6a4..7721a3be 100644 --- a/src/main/java/org/betterx/bclib/api/v2/generator/BiomePicker.java +++ b/src/main/java/org/betterx/bclib/api/v2/generator/BiomePicker.java @@ -62,6 +62,10 @@ public class BiomePicker { return biomes.isEmpty() ? fallbackBiome : tree.get(random); } + public boolean isEmpty() { + return biomes.isEmpty(); + } + public void rebuild() { WeightedList list = new WeightedList<>();