From df205d7d3f48dcf8712c6c4756cd31dc68ba808a Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 9 Jun 2012 10:27:24 -0400 Subject: [PATCH] Fix up biome handling for client and server --- fml/client/cpw/mods/fml/client/FMLClientHandler.java | 8 ++++++++ fml/client/net/minecraft/src/ClientRegistry.java | 5 +++-- fml/common/cpw/mods/fml/common/registry/FMLRegistry.java | 5 +++++ .../cpw/mods/fml/common/registry/IMinecraftRegistry.java | 2 ++ fml/server/net/minecraft/src/ModLoader.java | 2 +- fml/server/net/minecraft/src/ServerRegistry.java | 9 ++++++++- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/fml/client/cpw/mods/fml/client/FMLClientHandler.java b/fml/client/cpw/mods/fml/client/FMLClientHandler.java index d0ed0af514..bf5cdc9e69 100644 --- a/fml/client/cpw/mods/fml/client/FMLClientHandler.java +++ b/fml/client/cpw/mods/fml/client/FMLClientHandler.java @@ -1091,4 +1091,12 @@ public class FMLClientHandler implements IFMLSidedHandler } return null; } + + /** + * @param biome + */ + public void removeBiomeFromDefaultWorldGenerator(BiomeGenBase biome) + { + WorldType.field_48635_b.removeBiome(biome); + } } diff --git a/fml/client/net/minecraft/src/ClientRegistry.java b/fml/client/net/minecraft/src/ClientRegistry.java index 71b52f7e59..2f237d1322 100644 --- a/fml/client/net/minecraft/src/ClientRegistry.java +++ b/fml/client/net/minecraft/src/ClientRegistry.java @@ -3,6 +3,7 @@ package net.minecraft.src; import java.util.Collections; import java.util.List; +import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.registry.FMLRegistry; import cpw.mods.fml.common.registry.IMinecraftRegistry; @@ -79,7 +80,7 @@ public class ClientRegistry implements IMinecraftRegistry @Override public void addBiome(BiomeGenBase biome) { - //NOOP because the implementation idea is broken. Creating a BiomeGenBase adds the biome already. + FMLClientHandler.instance().addBiomeToDefaultWorldGenerator(biome); } @Override @@ -121,7 +122,7 @@ public class ClientRegistry implements IMinecraftRegistry @Override public void removeBiome(BiomeGenBase biome) { - // NOOP because broken + FMLClientHandler.instance().removeBiomeFromDefaultWorldGenerator(biome); } @Override diff --git a/fml/common/cpw/mods/fml/common/registry/FMLRegistry.java b/fml/common/cpw/mods/fml/common/registry/FMLRegistry.java index af097c775f..8eb768f8d4 100644 --- a/fml/common/cpw/mods/fml/common/registry/FMLRegistry.java +++ b/fml/common/cpw/mods/fml/common/registry/FMLRegistry.java @@ -92,6 +92,11 @@ public class FMLRegistry instance.addSpawn(entityName, weightedProb, min, max, spawnList, biomes); } + public static void removeBiome(BiomeGenBase biome) + { + instance.removeBiome(biome); + } + public static void removeSpawn(Class entityClass, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) { instance.removeSpawn(entityClass, typeOfCreature, biomes); diff --git a/fml/common/cpw/mods/fml/common/registry/IMinecraftRegistry.java b/fml/common/cpw/mods/fml/common/registry/IMinecraftRegistry.java index fe646fbbba..5a12723513 100644 --- a/fml/common/cpw/mods/fml/common/registry/IMinecraftRegistry.java +++ b/fml/common/cpw/mods/fml/common/registry/IMinecraftRegistry.java @@ -16,6 +16,8 @@ public interface IMinecraftRegistry public abstract void removeSpawn(Class entityClass, EnumCreatureType typeOfCreature, BiomeGenBase... biomes); + public abstract void removeBiome(BiomeGenBase biome); + public abstract void addSpawn(String entityName, int weightedProb, int min, int max, EnumCreatureType spawnList, BiomeGenBase... biomes); public abstract void addSpawn(Class entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes); diff --git a/fml/server/net/minecraft/src/ModLoader.java b/fml/server/net/minecraft/src/ModLoader.java index cdd2ad28b1..3b6403f4b3 100644 --- a/fml/server/net/minecraft/src/ModLoader.java +++ b/fml/server/net/minecraft/src/ModLoader.java @@ -83,7 +83,7 @@ public class ModLoader */ public static void addBiome(BiomeGenBase biome) { - FMLServerHandler.instance().addBiomeToDefaultWorldGenerator(biome); + FMLRegistry.addBiome(biome); } /** diff --git a/fml/server/net/minecraft/src/ServerRegistry.java b/fml/server/net/minecraft/src/ServerRegistry.java index cc6266b03d..b22d006780 100644 --- a/fml/server/net/minecraft/src/ServerRegistry.java +++ b/fml/server/net/minecraft/src/ServerRegistry.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.List; import cpw.mods.fml.common.registry.IMinecraftRegistry; +import cpw.mods.fml.server.FMLServerHandler; public class ServerRegistry implements IMinecraftRegistry { @@ -69,7 +70,7 @@ public class ServerRegistry implements IMinecraftRegistry @Override public void addBiome(BiomeGenBase biome) { - //NOOP because the implementation idea is broken. Creating a BiomeGenBase adds the biome already. + FMLServerHandler.instance().addBiomeToDefaultWorldGenerator(biome); } @Override @@ -108,6 +109,12 @@ public class ServerRegistry implements IMinecraftRegistry } } + @Override + public void removeBiome(BiomeGenBase biome) + { + FMLServerHandler.instance().removeBiomeFromDefaultWorldGenerator(biome); + } + @Override public void removeSpawn(Class entityClass, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) {