From ffc04154db783714027b124679461bace1ee3211 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Tue, 9 Feb 2016 12:26:45 +1100 Subject: [PATCH] Added support for custom beaches for vanilla biomes --- src/main/java/biomesoplenty/api/biome/BOPBiome.java | 6 ++++++ .../biomesoplenty/api/biome/ExtendedBiomeWrapper.java | 10 ++++++++++ .../java/biomesoplenty/api/biome/IExtendedBiome.java | 2 ++ .../common/world/layer/GenLayerShoreBOP.java | 8 +++++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiome.java b/src/main/java/biomesoplenty/api/biome/BOPBiome.java index efced7cef..5aabc9be4 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiome.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiome.java @@ -363,6 +363,12 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome } } } + + @Override + public int getBeachId() + { + return this.beachBiomeId; + } @Override public BiomeGenBase getBaseBiome() diff --git a/src/main/java/biomesoplenty/api/biome/ExtendedBiomeWrapper.java b/src/main/java/biomesoplenty/api/biome/ExtendedBiomeWrapper.java index 47f695a4f..e91eb91e4 100644 --- a/src/main/java/biomesoplenty/api/biome/ExtendedBiomeWrapper.java +++ b/src/main/java/biomesoplenty/api/biome/ExtendedBiomeWrapper.java @@ -19,6 +19,8 @@ public class ExtendedBiomeWrapper implements IExtendedBiome private GenerationManager generationManager = new GenerationManager(); private Map weightMap = new HashMap(); + public int beachBiomeId = BiomeGenBase.beach.biomeID; + public ExtendedBiomeWrapper(BiomeGenBase biome) { this.biome = biome; @@ -33,6 +35,8 @@ public class ExtendedBiomeWrapper implements IExtendedBiome @Override public void configure(IConfigObj conf) { + this.beachBiomeId = conf.getInt("beachBiomeId", this.beachBiomeId); + // Allow generators to be configured IConfigObj confGenerators = conf.getObject("generators"); if (confGenerators != null) @@ -89,6 +93,12 @@ public class ExtendedBiomeWrapper implements IExtendedBiome { this.weightMap.clear(); } + + @Override + public int getBeachId() + { + return this.beachBiomeId; + } @Override public BiomeGenBase getBaseBiome() diff --git a/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java b/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java index 888019c71..6a1616c95 100644 --- a/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java +++ b/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java @@ -30,6 +30,8 @@ public interface IExtendedBiome public void clearWeights(); public void addWeight(BOPClimates climate, int weight); + public int getBeachId(); + /**Get the base biome associated with this extension**/ public BiomeGenBase getBaseBiome(); } diff --git a/src/main/java/biomesoplenty/common/world/layer/GenLayerShoreBOP.java b/src/main/java/biomesoplenty/common/world/layer/GenLayerShoreBOP.java index 7d2f0445c..94ca8ff17 100644 --- a/src/main/java/biomesoplenty/common/world/layer/GenLayerShoreBOP.java +++ b/src/main/java/biomesoplenty/common/world/layer/GenLayerShoreBOP.java @@ -10,6 +10,8 @@ package biomesoplenty.common.world.layer; import com.google.common.base.Predicate; import biomesoplenty.api.biome.BOPBiome; +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.biome.IExtendedBiome; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenJungle; import net.minecraft.world.biome.BiomeGenMesa; @@ -71,10 +73,10 @@ public class GenLayerShoreBOP extends BOPGenLayer if (biomeId != BiomeGenBase.ocean.biomeID && biomeId != BiomeGenBase.deepOcean.biomeID && biomeId != BiomeGenBase.river.biomeID && biomeId != BiomeGenBase.swampland.biomeID) { //Generate custom beaches for our biomes - if (biome != null && biome instanceof BOPBiome) + if (biome != null && BOPBiomes.REG_INSTANCE.getExtendedBiome(biome) != null) { - BOPBiome bopBiome = (BOPBiome)biome; - setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, bopBiome.beachBiomeId, OCEANIC_PREDICATE); + IExtendedBiome extBiome = BOPBiomes.REG_INSTANCE.getExtendedBiome(biome); + setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, extBiome.getBeachId(), OCEANIC_PREDICATE); } else {