    001    package net.minecraft.world;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import net.minecraft.util.Vec3;
    006    import net.minecraft.world.biome.BiomeGenBase;
    007    import net.minecraft.world.biome.WorldChunkManagerHell;
    008    import net.minecraft.world.chunk.IChunkProvider;
    009    import net.minecraft.world.gen.ChunkProviderHell;
    010
    011    public class WorldProviderHell extends WorldProvider
    012    {
    013        /**
    014         * creates a new world chunk manager for WorldProvider
    015         */
    016        public void registerWorldChunkManager()
    017        {
    018            this.worldChunkMgr = new WorldChunkManagerHell(BiomeGenBase.hell, 1.0F, 0.0F);
    019            this.isHellWorld = true;
    020            this.hasNoSky = true;
    021            this.dimensionId = -1;
    022        }
    023
    024        @SideOnly(Side.CLIENT)
    025
    026        /**
    027         * Return Vec3D with biome specific fog color
    028         */
    029        public Vec3 getFogColor(float par1, float par2)
    030        {
    031            return this.worldObj.getWorldVec3Pool().getVecFromPool(0.20000000298023224D, 0.029999999329447746D, 0.029999999329447746D);
    032        }
    033
    034        /**
    035         * Creates the light to brightness table
    036         */
    037        protected void generateLightBrightnessTable()
    038        {
    039            float var1 = 0.1F;
    040
    041            for (int var2 = 0; var2 <= 15; ++var2)
    042            {
    043                float var3 = 1.0F - (float)var2 / 15.0F;
    044                this.lightBrightnessTable[var2] = (1.0F - var3) / (var3 * 3.0F + 1.0F) * (1.0F - var1) + var1;
    045            }
    046        }
    047
    048        /**
    049         * Returns a new chunk provider which generates chunks for this world
    050         */
    051        public IChunkProvider createChunkGenerator()
    052        {
    053            return new ChunkProviderHell(this.worldObj, this.worldObj.getSeed());
    054        }
    055
    056        /**
    057         * Returns 'true' if in the "main surface world", but 'false' if in the Nether or End dimensions.
    058         */
    059        public boolean isSurfaceWorld()
    060        {
    061            return false;
    062        }
    063
    064        /**
    065         * Will check if the x, z position specified is alright to be set as the map spawn point
    066         */
    067        public boolean canCoordinateBeSpawn(int par1, int par2)
    068        {
    069            return false;
    070        }
    071
    072        /**
    073         * Calculates the angle of sun and moon in the sky relative to a specified time (usually worldTime)
    074         */
    075        public float calculateCelestialAngle(long par1, float par3)
    076        {
    077            return 0.5F;
    078        }
    079
    080        /**
    081         * True if the player can respawn in this dimension (true = overworld, false = nether).
    082         */
    083        public boolean canRespawnHere()
    084        {
    085            return false;
    086        }
    087
    088        @SideOnly(Side.CLIENT)
    089
    090        /**
    091         * Returns true if the given X,Z coordinate should show environmental fog.
    092         */
    093        public boolean doesXZShowFog(int par1, int par2)
    094        {
    095            return true;
    096        }
    097
    098        /**
    099         * Returns the dimension's name, e.g. "The End", "Nether", or "Overworld".
    100         */
    101        public String getDimensionName()
    102        {
    103            return "Nether";
    104        }
    105    }