001 package net.minecraft.world; 002 003 import cpw.mods.fml.relauncher.Side; 004 import cpw.mods.fml.relauncher.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 }