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; } }