package micdoodle8.mods.galacticraft.core.dimension;
import micdoodle8.mods.galacticraft.api.galaxies.CelestialBody;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.WorldProviderSpace;
import micdoodle8.mods.galacticraft.api.vector.Vector3;
import micdoodle8.mods.galacticraft.api.world.IGalacticraftWorldProvider;
import micdoodle8.mods.galacticraft.api.world.ISolarLevel;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.GalacticraftCore;
import micdoodle8.mods.galacticraft.core.event.EventHandlerGC;
import micdoodle8.mods.galacticraft.core.world.gen.ChunkProviderMoon;
import micdoodle8.mods.galacticraft.core.world.gen.WorldChunkManagerMoon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.biome.WorldChunkManager;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class WorldProviderMoon extends WorldProviderSpace implements IGalacticraftWorldProvider, ISolarLevel
{
@Override
public Vector3 getFogColor()
{
return new Vector3(0, 0, 0);
}
@Override
public Vector3 getSkyColor()
{
return new Vector3(0, 0, 0);
}
@Override
public boolean hasSunset()
{
return false;
}
@Override
public long getDayLength()
{
return 192000L;
}
@Override
public Class<? extends IChunkProvider> getChunkProviderClass()
{
return ChunkProviderMoon.class;
}
@Override
public Class<? extends WorldChunkManager> getWorldChunkManagerClass()
{
return WorldChunkManagerMoon.class;
}
@Override
@SideOnly(Side.CLIENT)
public float getStarBrightness(float par1)
{
final float var2 = this.worldObj.getCelestialAngle(par1);
float var3 = 1.0F - (MathHelper.cos(var2 * Constants.twoPI) * 2.0F + 0.25F);
if (var3 < 0.0F)
{
var3 = 0.0F;
}
if (var3 > 1.0F)
{
var3 = 1.0F;
}
return var3 * var3 * 0.5F + 0.3F;
}
@Override
public boolean isSkyColored()
{
return false;
}
@Override
public double getHorizon()
{
return 44.0D;
}
@Override
public int getAverageGroundLevel()
{
return 68;
}
@Override
public boolean canCoordinateBeSpawn(int var1, int var2)
{
return true;
}
//Overriding so that beds do not explode on Moon
@Override
public boolean canRespawnHere()
{
if (EventHandlerGC.bedActivated)
{
EventHandlerGC.bedActivated = false;
return true;
}
return false;
}
@Override
public float getGravity()
{
return 0.062F;
}
@Override
public double getMeteorFrequency()
{
return 7.0D;
}
@Override
public double getFuelUsageMultiplier()
{
return 0.7D;
}
@Override
public double getSolarEnergyMultiplier()
{
return 1.4D;
}
@Override
public boolean canSpaceshipTierPass(int tier)
{
return tier > 0;
}
@Override
public float getFallDamageModifier()
{
return 0.18F;
}
@Override
public CelestialBody getCelestialBody()
{
return GalacticraftCore.moonMoon;
}
@Override
public String getInternalNameSuffix()
{
return "_moon";
}
@Override
public int getDungeonSpacing()
{
return 704;
}
}