    001    package net.minecraft.world.biome;
    002
    003    import java.util.Arrays;
    004    import java.util.List;
    005    import java.util.Random;
    006    import net.minecraft.world.ChunkPosition;
    007
    008    public class WorldChunkManagerHell extends WorldChunkManager
    009    {
    010        /** The biome generator object. */
    011        private BiomeGenBase biomeGenerator;
    012        private float hellTemperature;
    013
    014        /** The rainfall in the world */
    015        private float rainfall;
    016
    017        public WorldChunkManagerHell(BiomeGenBase par1BiomeGenBase, float par2, float par3)
    018        {
    019            this.biomeGenerator = par1BiomeGenBase;
    020            this.hellTemperature = par2;
    021            this.rainfall = par3;
    022        }
    023
    024        /**
    025         * Returns the BiomeGenBase related to the x, z position on the world.
    026         */
    027        public BiomeGenBase getBiomeGenAt(int par1, int par2)
    028        {
    029            return this.biomeGenerator;
    030        }
    031
    032        /**
    033         * Returns an array of biomes for the location input.
    034         */
    035        public BiomeGenBase[] getBiomesForGeneration(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5)
    036        {
    037            if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5)
    038            {
    039                par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5];
    040            }
    041
    042            Arrays.fill(par1ArrayOfBiomeGenBase, 0, par4 * par5, this.biomeGenerator);
    043            return par1ArrayOfBiomeGenBase;
    044        }
    045
    046        /**
    047         * Returns a list of temperatures to use for the specified blocks.  Args: listToReuse, x, y, width, length
    048         */
    049        public float[] getTemperatures(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5)
    050        {
    051            if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5)
    052            {
    053                par1ArrayOfFloat = new float[par4 * par5];
    054            }
    055
    056            Arrays.fill(par1ArrayOfFloat, 0, par4 * par5, this.hellTemperature);
    057            return par1ArrayOfFloat;
    058        }
    059
    060        /**
    061         * Returns a list of rainfall values for the specified blocks. Args: listToReuse, x, z, width, length.
    062         */
    063        public float[] getRainfall(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5)
    064        {
    065            if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5)
    066            {
    067                par1ArrayOfFloat = new float[par4 * par5];
    068            }
    069
    070            Arrays.fill(par1ArrayOfFloat, 0, par4 * par5, this.rainfall);
    071            return par1ArrayOfFloat;
    072        }
    073
    074        /**
    075         * Returns biomes to use for the blocks and loads the other data like temperature and humidity onto the
    076         * WorldChunkManager Args: oldBiomeList, x, z, width, depth
    077         */
    078        public BiomeGenBase[] loadBlockGeneratorData(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5)
    079        {
    080            if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5)
    081            {
    082                par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5];
    083            }
    084
    085            Arrays.fill(par1ArrayOfBiomeGenBase, 0, par4 * par5, this.biomeGenerator);
    086            return par1ArrayOfBiomeGenBase;
    087        }
    088
    089        /**
    090         * Return a list of biomes for the specified blocks. Args: listToReuse, x, y, width, length, cacheFlag (if false,
    091         * don't check biomeCache to avoid infinite loop in BiomeCacheBlock)
    092         */
    093        public BiomeGenBase[] getBiomeGenAt(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5, boolean par6)
    094        {
    095            return this.loadBlockGeneratorData(par1ArrayOfBiomeGenBase, par2, par3, par4, par5);
    096        }
    097
    098        /**
    099         * Finds a valid position within a range, that is in one of the listed biomes. Searches {par1,par2} +-par3 blocks.
    100         * Strongly favors positive y positions.
    101         */
    102        public ChunkPosition findBiomePosition(int par1, int par2, int par3, List par4List, Random par5Random)
    103        {
    104            return par4List.contains(this.biomeGenerator) ? new ChunkPosition(par1 - par3 + par5Random.nextInt(par3 * 2 + 1), 0, par2 - par3 + par5Random.nextInt(par3 * 2 + 1)) : null;
    105        }
    106
    107        /**
    108         * checks given Chunk's Biomes against List of allowed ones
    109         */
    110        public boolean areBiomesViable(int par1, int par2, int par3, List par4List)
    111        {
    112            return par4List.contains(this.biomeGenerator);
    113        }
    114    }