From ea0500c222ffa895625ae3a8b80bf33645ea952b Mon Sep 17 00:00:00 2001 From: Adubbz Date: Sun, 29 Mar 2015 12:09:24 +1100 Subject: [PATCH] Biome weights for BoP biomes are now configurable --- .../biomesoplenty/api/biome/BOPBiome.java | 25 ++++++++++++++++- .../api/biome/IExtendedBiome.java | 6 +++++ .../common/biome/ExtendedBiomeRegistry.java | 22 ++++++++++++++- .../common/biome/overworld/BiomeGenAlps.java | 3 +++ .../config/BiomeConfigurationHandler.java | 23 ++++++++++++++++ .../common/event/BlockModelRegisterEvent.java | 27 ------------------- .../biomesoplenty/common/init/ModBiomes.java | 5 ---- .../common/util/config/JsonBiome.java | 3 +++ 8 files changed, 80 insertions(+), 34 deletions(-) delete mode 100644 src/main/java/biomesoplenty/common/event/BlockModelRegisterEvent.java diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiome.java b/src/main/java/biomesoplenty/api/biome/BOPBiome.java index 9428fa8e8..b371c566f 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiome.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiome.java @@ -8,13 +8,18 @@ package biomesoplenty.api.biome; +import java.util.HashMap; +import java.util.Map; + import biomesoplenty.common.biome.ExtendedBiomeRegistry.GenerationManager; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.BiomeManager.BiomeType; public class BOPBiome extends BiomeGenBase implements IExtendedBiome { private GenerationManager generationManager = new GenerationManager(); - + private Map weightMap = new HashMap(); + public BOPBiome() { super(-1, false); @@ -38,4 +43,22 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome { return this.generationManager; } + + @Override + public Map getWeightMap() + { + return this.weightMap; + } + + @Override + public void addWeight(BiomeType type, int weight) + { + this.weightMap.put(type, weight); + } + + @Override + public void clearWeights() + { + this.weightMap.clear(); + } } diff --git a/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java b/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java index 50eeb5e79..f33eca142 100644 --- a/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java +++ b/src/main/java/biomesoplenty/api/biome/IExtendedBiome.java @@ -8,10 +8,16 @@ package biomesoplenty.api.biome; +import java.util.Map; + +import net.minecraftforge.common.BiomeManager.BiomeType; import biomesoplenty.common.biome.ExtendedBiomeRegistry.GenerationManager; public interface IExtendedBiome { public BiomeOwner getBiomeOwner(); public GenerationManager getGenerationManager(); + public Map getWeightMap(); + public void clearWeights(); + public void addWeight(BiomeType type, int weight); } diff --git a/src/main/java/biomesoplenty/common/biome/ExtendedBiomeRegistry.java b/src/main/java/biomesoplenty/common/biome/ExtendedBiomeRegistry.java index 39cd6032c..0916b692d 100644 --- a/src/main/java/biomesoplenty/common/biome/ExtendedBiomeRegistry.java +++ b/src/main/java/biomesoplenty/common/biome/ExtendedBiomeRegistry.java @@ -16,6 +16,7 @@ import biomesoplenty.api.biome.BiomeOwner; import biomesoplenty.api.biome.IExtendedBiome; import biomesoplenty.api.biome.IGenerator; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.BiomeManager.BiomeType; import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate; public class ExtendedBiomeRegistry @@ -48,8 +49,9 @@ public class ExtendedBiomeRegistry public static class BiomeExtension implements IExtendedBiome { - public BiomeGenBase biome; + public final BiomeGenBase biome; private GenerationManager generationManager = new GenerationManager(); + private Map weightMap = new HashMap(); private BiomeExtension(BiomeGenBase biome) { @@ -67,6 +69,24 @@ public class ExtendedBiomeRegistry { return this.generationManager; } + + @Override + public Map getWeightMap() + { + return this.weightMap; + } + + @Override + public void addWeight(BiomeType type, int weight) + { + this.weightMap.put(type, weight); + } + + @Override + public void clearWeights() + { + this.weightMap.clear(); + } } public static class GenerationManager diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenAlps.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenAlps.java index fe1da3b45..c72355676 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenAlps.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenAlps.java @@ -9,6 +9,7 @@ package biomesoplenty.common.biome.overworld; import net.minecraft.init.Blocks; +import net.minecraftforge.common.BiomeManager.BiomeType; import biomesoplenty.api.biome.BOPBiome; public class BiomeGenAlps extends BOPBiome @@ -24,5 +25,7 @@ public class BiomeGenAlps extends BOPBiome this.topBlock = Blocks.snow.getDefaultState(); this.fillerBlock = Blocks.snow.getDefaultState(); + + this.addWeight(BiomeType.ICY, 5); } } diff --git a/src/main/java/biomesoplenty/common/config/BiomeConfigurationHandler.java b/src/main/java/biomesoplenty/common/config/BiomeConfigurationHandler.java index c1ba4892a..2b9aa2583 100644 --- a/src/main/java/biomesoplenty/common/config/BiomeConfigurationHandler.java +++ b/src/main/java/biomesoplenty/common/config/BiomeConfigurationHandler.java @@ -16,6 +16,9 @@ import java.util.Map.Entry; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.WorldGenCactus; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.common.BiomeManager.BiomeEntry; +import net.minecraftforge.common.BiomeManager.BiomeType; import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate; import org.apache.commons.io.FileUtils; @@ -118,6 +121,26 @@ public class BiomeConfigurationHandler } } + Map weightMap = jsonBiome.weights; + + //Removes the default weights set by us as they are about to be set from the config file + extendedBiome.clearWeights(); + + //TODO: Add a system for making Vanilla biome weights configurable. This won't necessarily be in this class, however it's worth noting. + for (Entry entry : weightMap.entrySet()) + { + if (entry != null) + { + BiomeType biomeType = entry.getKey(); + int weight = entry.getValue(); + + //Updates the biome's weights to be in line with the config file + extendedBiome.addWeight(biomeType, weight); + //TODO: Change to use our biome manager rather than Vanilla's + BiomeManager.addBiome(biomeType, new BiomeEntry(biome, weight)); + } + } + biome.biomeName = jsonBiome.biomeName; biome.topBlock = jsonBiome.topBlock; biome.fillerBlock = jsonBiome.fillerBlock; diff --git a/src/main/java/biomesoplenty/common/event/BlockModelRegisterEvent.java b/src/main/java/biomesoplenty/common/event/BlockModelRegisterEvent.java deleted file mode 100644 index ee48a3db9..000000000 --- a/src/main/java/biomesoplenty/common/event/BlockModelRegisterEvent.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright 2014, the Biomes O' Plenty Team - * - * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. - * - * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. - ******************************************************************************/ - -package biomesoplenty.common.event; - -import net.minecraft.client.renderer.BlockModelShapes; -import net.minecraftforge.fml.common.eventhandler.Event; - -/** - * Called upon the construction of BlockModelShapes after the registration of - * Vanilla blocks. This event should be used as an opportunity to register any - * custom state mappings for modded blocks. - */ -public class BlockModelRegisterEvent extends Event -{ - public final BlockModelShapes modelShapes; - - public BlockModelRegisterEvent(BlockModelShapes modelShapes) - { - this.modelShapes = modelShapes; - } -} diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index 69473cce0..c18a6da34 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -35,11 +35,6 @@ public class ModBiomes private static void registerBiomes() { alps = registerBiome(new BiomeGenAlps().setBiomeName("Alps"), "alps"); - - BiomeManager.addBiome(BiomeType.DESERT, new BiomeEntry(alps, 100)); - BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(alps, 100)); - BiomeManager.addBiome(BiomeType.COOL, new BiomeEntry(alps, 100)); - BiomeManager.addBiome(BiomeType.ICY, new BiomeEntry(alps, 100)); } private static void registerExternalBiomes() diff --git a/src/main/java/biomesoplenty/common/util/config/JsonBiome.java b/src/main/java/biomesoplenty/common/util/config/JsonBiome.java index a1c3c49fe..a17eb8620 100644 --- a/src/main/java/biomesoplenty/common/util/config/JsonBiome.java +++ b/src/main/java/biomesoplenty/common/util/config/JsonBiome.java @@ -13,6 +13,7 @@ import java.util.Map; import net.minecraft.block.state.IBlockState; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.BiomeManager.BiomeType; import biomesoplenty.api.biome.IExtendedBiome; import biomesoplenty.api.biome.IGenerator; import biomesoplenty.common.biome.ExtendedBiomeRegistry; @@ -28,6 +29,7 @@ public class JsonBiome public String biomeName; public int biomeId; + public Map weights; public IBlockState topBlock; public IBlockState fillerBlock; public float rootHeight; @@ -61,6 +63,7 @@ public class JsonBiome { GenerationManager generationManager = extendedBiome.getGenerationManager(); + biome.weights = extendedBiome.getWeightMap(); biome.decoration = generationManager.getGeneratorMap(); }