    001package net.minecraft.world;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.util.Vec3;
    006import net.minecraft.world.biome.BiomeGenBase;
    007import net.minecraft.world.biome.WorldChunkManagerHell;
    008import net.minecraft.world.chunk.IChunkProvider;
    009import net.minecraft.world.gen.ChunkProviderHell;
    010
    011public 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 f = 0.1F;
    040
    041        for (int i = 0; i <= 15; ++i)
    042        {
    043            float f1 = 1.0F - (float)i / 15.0F;
    044            this.lightBrightnessTable[i] = (1.0F - f1) / (f1 * 3.0F + 1.0F) * (1.0F - f) + f;
    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}