Merge pull request #890 from bloodmc/master

Refactored BiomeManager stronghold add/remove methods to support new MapGenStronghold dynamic biome changes.
This commit is contained in:
LexManos 2013-12-22 15:52:37 -08:00
commit 1d556a5668
8 changed files with 66 additions and 33 deletions

View file

@ -154,7 +154,7 @@
p_150812_4_.field_145849_e = this.zPosition * 16 + p_150812_3_;
- if (this.func_150810_a(p_150812_1_, p_150812_2_, p_150812_3_) instanceof ITileEntityProvider)
+ int metadata = getBlockMetadata( p_150812_4_.field_145851_c, p_150812_4_.field_145848_d, p_150812_4_.field_145849_e);
+ int metadata = getBlockMetadata(p_150812_1_, p_150812_2_, p_150812_3_);
+ if (this.func_150810_a(p_150812_1_, p_150812_2_, p_150812_3_).hasTileEntity(metadata))
{
if (this.field_150816_i.containsKey(chunkposition))

View file

@ -16,13 +16,13 @@
this.noiseGen4 = new NoiseGeneratorOctaves(this.endRNG, 10);
this.noiseGen5 = new NoiseGeneratorOctaves(this.endRNG, 16);
+
+ NoiseGeneratorOctaves[] noiseGens = {noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5};
+ NoiseGenerator[] noiseGens = {noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5};
+ noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.endRNG, noiseGens);
+ this.noiseGen1 = noiseGens[0];
+ this.noiseGen2 = noiseGens[1];
+ this.noiseGen3 = noiseGens[2];
+ this.noiseGen4 = noiseGens[3];
+ this.noiseGen5 = noiseGens[4];
+ this.noiseGen1 = (NoiseGeneratorOctaves)noiseGens[0];
+ this.noiseGen2 = (NoiseGeneratorOctaves)noiseGens[1];
+ this.noiseGen3 = (NoiseGeneratorOctaves)noiseGens[2];
+ this.noiseGen4 = (NoiseGeneratorOctaves)noiseGens[3];
+ this.noiseGen5 = (NoiseGeneratorOctaves)noiseGens[4];
}
public void func_147420_a(int p_147420_1_, int p_147420_2_, Block[] p_147420_3_, BiomeGenBase[] p_147420_4_)

View file

@ -34,15 +34,15 @@
}
}
+
+ NoiseGeneratorOctaves[] noiseGens = {field_147431_j, field_147432_k, field_147429_l, field_147430_m, noiseGen5, noiseGen6, mobSpawnerNoise};
+ NoiseGenerator[] noiseGens = {field_147431_j, field_147432_k, field_147429_l, field_147430_m, noiseGen5, noiseGen6, mobSpawnerNoise};
+ noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.rand, noiseGens);
+ this.field_147431_j = noiseGens[0];
+ this.field_147432_k = noiseGens[1];
+ this.field_147429_l = noiseGens[2];
+ this.field_147430_m = noiseGens[3];
+ this.noiseGen5 = noiseGens[4];
+ this.noiseGen6 = noiseGens[5];
+ this.mobSpawnerNoise = noiseGens[6];
+ this.field_147431_j = (NoiseGeneratorOctaves)noiseGens[0];
+ this.field_147432_k = (NoiseGeneratorOctaves)noiseGens[1];
+ this.field_147429_l = (NoiseGeneratorOctaves)noiseGens[2];
+ this.field_147430_m = (NoiseGeneratorPerlin)noiseGens[3];
+ this.noiseGen5 = (NoiseGeneratorOctaves)noiseGens[4];
+ this.noiseGen6 = (NoiseGeneratorOctaves)noiseGens[5];
+ this.mobSpawnerNoise = (NoiseGeneratorOctaves)noiseGens[6];
}
public void func_147424_a(int p_147424_1_, int p_147424_2_, Block[] p_147424_3_)

View file

@ -32,15 +32,15 @@
this.netherNoiseGen6 = new NoiseGeneratorOctaves(this.hellRNG, 10);
this.netherNoiseGen7 = new NoiseGeneratorOctaves(this.hellRNG, 16);
+
+ NoiseGeneratorOctaves[] noiseGens = {netherNoiseGen1, netherNoiseGen2, netherNoiseGen3, slowsandGravelNoiseGen, netherrackExculsivityNoiseGen, netherNoiseGen6, netherNoiseGen7};
+ NoiseGenerator[] noiseGens = {netherNoiseGen1, netherNoiseGen2, netherNoiseGen3, slowsandGravelNoiseGen, netherrackExculsivityNoiseGen, netherNoiseGen6, netherNoiseGen7};
+ noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.hellRNG, noiseGens);
+ this.netherNoiseGen1 = noiseGens[0];
+ this.netherNoiseGen2 = noiseGens[1];
+ this.netherNoiseGen3 = noiseGens[2];
+ this.slowsandGravelNoiseGen = noiseGens[3];
+ this.netherrackExculsivityNoiseGen = noiseGens[4];
+ this.netherNoiseGen6 = noiseGens[5];
+ this.netherNoiseGen7 = noiseGens[6];
+ this.netherNoiseGen1 = (NoiseGeneratorOctaves)noiseGens[0];
+ this.netherNoiseGen2 = (NoiseGeneratorOctaves)noiseGens[1];
+ this.netherNoiseGen3 = (NoiseGeneratorOctaves)noiseGens[2];
+ this.slowsandGravelNoiseGen = (NoiseGeneratorOctaves)noiseGens[3];
+ this.netherrackExculsivityNoiseGen = (NoiseGeneratorOctaves)noiseGens[4];
+ this.netherNoiseGen6 = (NoiseGeneratorOctaves)noiseGens[5];
+ this.netherNoiseGen7 = (NoiseGeneratorOctaves)noiseGens[6];
}
public void func_147419_a(int p_147419_1_, int p_147419_2_, Block[] p_147419_3_)

View file

@ -0,0 +1,30 @@
--- ../src-base/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.java
+++ ../src-work/minecraft/net/minecraft/world/gen/structure/MapGenStronghold.java
@@ -11,6 +11,7 @@
import net.minecraft.world.ChunkPosition;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraftforge.common.BiomeManager;
public class MapGenStronghold extends MapGenStructure
{
@@ -35,11 +36,18 @@
{
BiomeGenBase biomegenbase = abiomegenbase[j];
- if (biomegenbase != null && biomegenbase.minHeight > 0.0F)
+ if (biomegenbase != null && biomegenbase.minHeight > 0.0F && !BiomeManager.strongHoldBiomesBlackList.contains(biomegenbase))
{
this.field_151546_e.add(biomegenbase);
}
}
+ for (BiomeGenBase biome : BiomeManager.strongHoldBiomes)
+ {
+ if (!this.field_151546_e.contains(biome))
+ {
+ this.field_151546_e.add(biome);
+ }
+ }
}
public MapGenStronghold(Map par1Map)

View file

@ -16,6 +16,9 @@ import com.google.common.collect.Lists;
public class BiomeManager
{
public static ArrayList<BiomeGenBase> strongHoldBiomes = new ArrayList<BiomeGenBase>();
public static ArrayList<BiomeGenBase> strongHoldBiomesBlackList = new ArrayList<BiomeGenBase>();
public static void addVillageBiome(BiomeGenBase biome, boolean canSpawn)
{
if (!MapGenVillage.villageSpawnBiomes.contains(biome))
@ -38,17 +41,17 @@ public class BiomeManager
public static void addStrongholdBiome(BiomeGenBase biome)
{
if (!MapGenStronghold.field_151546_e.contains(biome))
if (!strongHoldBiomes.contains(biome))
{
MapGenStronghold.field_151546_e.add(biome);
strongHoldBiomes.add(biome);
}
}
public static void removeStrongholdBiome(BiomeGenBase biome)
{
if (MapGenStronghold.field_151546_e.contains(biome))
if (!strongHoldBiomesBlackList.contains(biome))
{
MapGenStronghold.field_151546_e.remove(biome);
strongHoldBiomesBlackList.add(biome);
}
}

View file

@ -3,16 +3,16 @@ package net.minecraftforge.event.terraingen;
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorOctaves;
import net.minecraft.world.gen.NoiseGenerator;
import net.minecraftforge.event.world.*;
public class InitNoiseGensEvent extends WorldEvent
{
public final Random rand;
public final NoiseGeneratorOctaves[] originalNoiseGens;
public NoiseGeneratorOctaves[] newNoiseGens;
public final NoiseGenerator[] originalNoiseGens;
public NoiseGenerator[] newNoiseGens;
public InitNoiseGensEvent(World world, Random rand, NoiseGeneratorOctaves[] original)
public InitNoiseGensEvent(World world, Random rand, NoiseGenerator[] original)
{
super(world);
this.rand = rand;

View file

@ -7,7 +7,7 @@ import cpw.mods.fml.common.eventhandler.Event.*;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.MapGenBase;
import net.minecraft.world.gen.NoiseGeneratorOctaves;
import net.minecraft.world.gen.NoiseGenerator;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.common.*;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent.*;
@ -17,7 +17,7 @@ import net.minecraftforge.event.terraingen.PopulateChunkEvent.*;
public abstract class TerrainGen
{
public static NoiseGeneratorOctaves[] getModdedNoiseGenerators(World world, Random rand, NoiseGeneratorOctaves[] original)
public static NoiseGenerator[] getModdedNoiseGenerators(World world, Random rand, NoiseGenerator[] original)
{
InitNoiseGensEvent event = new InitNoiseGensEvent(world, rand, original);
MinecraftForge.TERRAIN_GEN_BUS.post(event);