/**
* Copyright (c) 22/Feb/2015 Davide Cossu & Matthew Albrecht.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see <http://www.gnu.org/licenses>.
*/
package com.minestellar.moon.world;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
import net.minecraft.util.Vec3;
import net.minecraft.world.WorldProvider;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.client.IRenderHandler;
import com.minestellar.moon.util.ConfigManagerMoon;
import com.minestellar.moon.world.gen.ChunkProviderMoon;
import com.minestellar.moon.world.gen.WorldChunkManagerMoon;
import com.minestellar.utils.vector.Vector3;
import com.minestellar.utils.world.IMinestellarWorldProvider;
public class WorldProviderMoon extends WorldProvider implements IMinestellarWorldProvider {
@Override
public IChunkProvider createChunkGenerator() {
return new ChunkProviderMoon(this.worldObj, this.worldObj.getSeed(), true);
}
@Override
public void registerWorldChunkManager() {
this.worldChunkMgr = new WorldChunkManagerMoon();
this.dimensionId = ConfigManagerMoon.idDimensionMoon;
}
@Override
public IRenderHandler getSkyRenderer() {
return new SkyRendererMoon(null);
}
@Override
public String getSaveFolder() {
return "DIM" + ConfigManagerMoon.idDimensionMoon;
}
@Override
public String getDimensionName() {
return "Moon";
}
@Override
@SideOnly(Side.CLIENT)
public float getStarBrightness(float par1) {
final float var2 = this.worldObj.getCelestialAngle(par1);
float var3 = 0.0F;
return var3 * var3 * 0.5F + 0.3F;
}
@Override
@SideOnly(Side.CLIENT)
public Vec3 getSkyColor(Entity cameraEntity, float partialTicks) {
return Vec3.createVectorHelper(0.01F, 0.01F, 0.01F);
}
@Override
@SideOnly(Side.CLIENT)
public Vec3 getFogColor(float par1, float par2) {
return Vec3.createVectorHelper(0.0F, 0.0F, 0.0F);
}
@Override
@SideOnly(Side.CLIENT)
public float[] calcSunriseSunsetColors(float p_76560_1_, float p_76560_2_) {
float[] sunriseColors = new float[4];
sunriseColors[0] = 0.0F;
sunriseColors[1] = 0.0F;
sunriseColors[2] = 0.0F;
sunriseColors[3] = 0.0F;
return sunriseColors;
}
@SideOnly(Side.CLIENT)
public boolean renderVoidFog() {
return true;
}
@Override
public boolean canRespawnHere() {
return false;
}
@Override
public boolean isSurfaceWorld() {
return true;
}
@Override
protected void generateLightBrightnessTable() {
final float var1 = 0.0F;
for (int var2 = 0; var2 <= 15; ++var2) {
final float var3 = 1.0F - var2 / 15.0F;
this.lightBrightnessTable[var2] = (1.0F - var3) / (var3 * 3.0F + 1.0F) * (1.0F - var1) + var1;
}
}
@Override
public Vector3 getSkyColor() {
return null;
}
@Override
public Vector3 getFogColor() {
return null;
}
@Override
public float getGravity() {
return 0.062F;
}
@Override
public boolean hasAtmosphere() {
return false;
}
@Override
public long getDayLength() {
return 655200L;
}
@Override
public float getHeatLevelsDay() {
return 100F;
}
@Override
public float getHeatLevelsNight() {
return -173F;
}
@Override
public float getAirPressure() {
return 0F;
}
}