From 820d61d56dd83282f60f2ee0f8dbe279bda7bb50 Mon Sep 17 00:00:00 2001 From: LexManos Date: Sun, 28 Oct 2012 07:38:38 -0700 Subject: [PATCH] Added Stonghold, Village, and Spawn biome management helpers for PR 207 --- common/forge_at.cfg | 6 +- .../minecraftforge/common/BiomeManager.java | 70 +++++++++++++++++++ .../minecraft/src/MapGenStronghold.java.patch | 36 ++++++++++ .../src/WorldChunkManager.java.patch | 32 +++++++++ 4 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 common/net/minecraftforge/common/BiomeManager.java create mode 100644 patches/common/net/minecraft/src/MapGenStronghold.java.patch create mode 100644 patches/common/net/minecraft/src/WorldChunkManager.java.patch diff --git a/common/forge_at.cfg b/common/forge_at.cfg index 181de9dd0f..b9fb01b816 100644 --- a/common/forge_at.cfg +++ b/common/forge_at.cfg @@ -88,4 +88,8 @@ public xe.H # World/field_72993_I activeChunkSet public ln.bc # EntityLiving/field_70728_aV experienceValue # GuiFlatPresets public asr.a(Ljava/lang/String;ILxz;Ljava/util/List;[Labm;)V # GuiFlatPresets/func_82294_a -public asr.a(Ljava/lang/String;ILxz;[Labm;)V # GuiFlatPresets/func_82297_a \ No newline at end of file +public asr.a(Ljava/lang/String;ILxz;[Labm;)V # GuiFlatPresets/func_82297_a +# BiomeGenBase +public xz.*() # Everything protected->public +# MapGenVillage +public-f aea.e # MapGenVillage/field_75055_e villageSpawnBiomes \ No newline at end of file diff --git a/common/net/minecraftforge/common/BiomeManager.java b/common/net/minecraftforge/common/BiomeManager.java new file mode 100644 index 0000000000..ccf6bdfc3d --- /dev/null +++ b/common/net/minecraftforge/common/BiomeManager.java @@ -0,0 +1,70 @@ +package net.minecraftforge.common; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.src.BiomeGenBase; +import net.minecraft.src.ChunkProviderGenerate; +import net.minecraft.src.IChunkProvider; +import net.minecraft.src.MapGenStronghold; +import net.minecraft.src.MapGenVillage; +import net.minecraft.src.WorldChunkManager; + +import com.google.common.collect.Lists; + +public class BiomeManager +{ + public static void addVillageBiome(BiomeGenBase biome, boolean canSpawn) + { + if (!MapGenVillage.villageSpawnBiomes.contains(biome)) + { + ArrayList biomes = new ArrayList(MapGenVillage.villageSpawnBiomes); + biomes.add(biome); + MapGenVillage.villageSpawnBiomes = biomes; + } + } + + public static void removeVillageBiome(BiomeGenBase biome) + { + if (MapGenVillage.villageSpawnBiomes.contains(biome)) + { + ArrayList biomes = new ArrayList(MapGenVillage.villageSpawnBiomes); + biomes.remove(biome); + MapGenVillage.villageSpawnBiomes = biomes; + } + } + + public static void addStrongholdBiome(BiomeGenBase biome) + { + if (!MapGenStronghold.allowedBiomes.contains(biome)) + { + MapGenStronghold.allowedBiomes.add(biome); + } + } + + public static void removeStrongholdBiome(BiomeGenBase biome) + { + if (MapGenStronghold.allowedBiomes.contains(biome)) + { + MapGenStronghold.allowedBiomes.remove(biome); + } + } + + public static void addSpawnBiome(BiomeGenBase biome) + { + if (!WorldChunkManager.allowedBiomes.contains(biome)) + { + WorldChunkManager.allowedBiomes.add(biome); + } + } + + public static void removeSpawnBiome(BiomeGenBase biome) + { + if (WorldChunkManager.allowedBiomes.contains(biome)) + { + WorldChunkManager.allowedBiomes.remove(biome); + } + } +} \ No newline at end of file diff --git a/patches/common/net/minecraft/src/MapGenStronghold.java.patch b/patches/common/net/minecraft/src/MapGenStronghold.java.patch new file mode 100644 index 0000000000..0837f33c1e --- /dev/null +++ b/patches/common/net/minecraft/src/MapGenStronghold.java.patch @@ -0,0 +1,36 @@ +--- ../src_base/common/net/minecraft/src/MapGenStronghold.java ++++ ../src_work/common/net/minecraft/src/MapGenStronghold.java +@@ -1,6 +1,7 @@ + package net.minecraft.src; + + import java.util.ArrayList; ++import java.util.Arrays; + import java.util.Collections; + import java.util.Iterator; + import java.util.List; +@@ -10,6 +11,7 @@ + + public class MapGenStronghold extends MapGenStructure + { ++ public static ArrayList allowedBiomes = new ArrayList(Arrays.asList(BiomeGenBase.desert, BiomeGenBase.forest, BiomeGenBase.extremeHills, BiomeGenBase.swampland, BiomeGenBase.taiga, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills)); + public BiomeGenBase[] allowedBiomeGenBases; + + /** +@@ -22,7 +24,7 @@ + + public MapGenStronghold() + { +- this.allowedBiomeGenBases = new BiomeGenBase[] {BiomeGenBase.desert, BiomeGenBase.forest, BiomeGenBase.extremeHills, BiomeGenBase.swampland, BiomeGenBase.taiga, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills}; ++ this.allowedBiomeGenBases = allowedBiomes.toArray(new BiomeGenBase[0]); + this.structureCoords = new ChunkCoordIntPair[3]; + this.field_82671_h = 32.0D; + this.field_82672_i = 3; +@@ -30,7 +32,7 @@ + + public MapGenStronghold(Map par1Map) + { +- this.allowedBiomeGenBases = new BiomeGenBase[] {BiomeGenBase.desert, BiomeGenBase.forest, BiomeGenBase.extremeHills, BiomeGenBase.swampland, BiomeGenBase.taiga, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills}; ++ this.allowedBiomeGenBases = allowedBiomes.toArray(new BiomeGenBase[0]); + this.structureCoords = new ChunkCoordIntPair[3]; + this.field_82671_h = 32.0D; + this.field_82672_i = 3; diff --git a/patches/common/net/minecraft/src/WorldChunkManager.java.patch b/patches/common/net/minecraft/src/WorldChunkManager.java.patch new file mode 100644 index 0000000000..429a2d5a0a --- /dev/null +++ b/patches/common/net/minecraft/src/WorldChunkManager.java.patch @@ -0,0 +1,32 @@ +--- ../src_base/common/net/minecraft/src/WorldChunkManager.java ++++ ../src_work/common/net/minecraft/src/WorldChunkManager.java +@@ -3,11 +3,14 @@ + import cpw.mods.fml.common.Side; + import cpw.mods.fml.common.asm.SideOnly; + import java.util.ArrayList; ++import java.util.Arrays; + import java.util.List; + import java.util.Random; ++import static net.minecraft.src.BiomeGenBase.*; + + public class WorldChunkManager + { ++ public static ArrayList allowedBiomes = new ArrayList(Arrays.asList(forest, plains, taiga, taigaHills, forestHills, jungle. jungleHills)); + private GenLayer genBiomes; + + /** A GenLayer containing the indices into BiomeGenBase.biomeList[] */ +@@ -23,13 +26,7 @@ + { + this.biomeCache = new BiomeCache(this); + this.biomesToSpawnIn = new ArrayList(); +- this.biomesToSpawnIn.add(BiomeGenBase.forest); +- this.biomesToSpawnIn.add(BiomeGenBase.plains); +- this.biomesToSpawnIn.add(BiomeGenBase.taiga); +- this.biomesToSpawnIn.add(BiomeGenBase.taigaHills); +- this.biomesToSpawnIn.add(BiomeGenBase.forestHills); +- this.biomesToSpawnIn.add(BiomeGenBase.jungle); +- this.biomesToSpawnIn.add(BiomeGenBase.jungleHills); ++ this.biomesToSpawnIn.addAll(allowedBiomes); + } + + public WorldChunkManager(long par1, WorldType par3WorldType)