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