/*******************************************************************************
* AbyssalCraft
* Copyright (c) 2012 - 2017 Shinoow.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Contributors:
* Shinoow - implementation
******************************************************************************/
package com.shinoow.abyssalcraft.common.world;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.DimensionType;
import net.minecraft.world.WorldProvider;
import net.minecraft.world.biome.BiomeProviderSingle;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import com.shinoow.abyssalcraft.api.biome.ACBiomes;
import com.shinoow.abyssalcraft.client.render.sky.ACSkyRenderer;
import com.shinoow.abyssalcraft.lib.ACLib;
public class WorldProviderDarkRealm extends WorldProvider {
@Override
public IChunkGenerator createChunkGenerator() {
return new ChunkProviderDarkRealm(world, world.getSeed(), true);
}
@Override
public void init() {
biomeProvider = new BiomeProviderSingle(ACBiomes.dark_realm);
setDimension(ACLib.dark_realm_id);
hasNoSky = true;
}
@Override
public boolean canRespawnHere() {
return false;
}
@Override
protected void generateLightBrightnessTable() {
float f = 0.10F;
for (int i = 0; i <= 15; ++i) {
float f1 = 1.0F - i / 15.0F;
lightBrightnessTable[i] = (1.0F - f1) / (f1 * 3.0F + 1.0F) * (1.0F - f) + f;
}
}
@Override
@SideOnly(Side.CLIENT)
public Vec3d getFogColor(float par1, float par2)
{
int i = 10518688;
float f2 = MathHelper.cos(par1 * (float)Math.PI * 2.0F) * 2.0F + 0.5F;
if (f2 < 0.0F)
f2 = 0.0F;
if (f2 > 1.0F)
f2 = 1.0F;
float f3 = (i >> 16 & 255) / 255.0F;
float f4 = (i >> 8 & 255) / 255.0F;
float f5 = (i & 255) / 255.0F;
f3 *= f2 * 0.0F + 0.15F;
f4 *= f2 * 0.0F + 0.15F;
f5 *= f2 * 0.0F + 0.15F;
return new Vec3d(f3, f4, f5);
}
@Override
public boolean canDoRainSnowIce(Chunk chunk) {
return false;
}
@Override
public boolean isSurfaceWorld() {
return false;
}
@Override
public float calculateCelestialAngle(long par1, float par3) {
return 0.0F;
}
@Override
@SideOnly(Side.CLIENT)
public float[] calcSunriseSunsetColors(float par1, float par2) {
return null;
}
@Override
@SideOnly(Side.CLIENT)
public boolean isSkyColored() {
return true;
}
@Override
public Vec3d getSkyColor(Entity cameraEntity, float partialTicks) {
return new Vec3d(0, 0, 0);
}
@Override
@SideOnly(Side.CLIENT)
public float getCloudHeight() {
return 8.0F;
}
@Override
public String getSaveFolder() {
return "The_Dark_Realm";
}
@Override
public int getAverageGroundLevel() {
return 50;
}
@SideOnly(Side.CLIENT)
@Override
public net.minecraftforge.client.IRenderHandler getSkyRenderer()
{
return new ACSkyRenderer(new ResourceLocation("abyssalcraft:textures/environment/omothol_sky.png"), 30, 20, 30);
}
@Override
public DimensionType getDimensionType() {
return ACLib.THE_DARK_REALM;
}
}