Hbm-s-Nuclear-Tech-GIT/src/main/java/com/hbm/world/WorldProviderNTM.java

144 lines
4.4 KiB
Java

package com.hbm.world;
import com.hbm.handler.ImpactWorldHandler;
import com.hbm.main.MainRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.WorldProviderSurface;
public class WorldProviderNTM extends WorldProviderSurface {
private float[] colorsSunriseSunset = new float[4];
public WorldProviderNTM() {
}
@Override
public float calculateCelestialAngle(long worldTime, float partialTicks) {
return super.calculateCelestialAngle(worldTime, partialTicks);
}
@Override
@SideOnly(Side.CLIENT)
public float[] calcSunriseSunsetColors(float par1, float par2) {
float f2 = 0.4F;
float f3 = MathHelper.cos(par1 * (float) Math.PI * 2.0F) - 0.0F;
float f4 = -0.0F;
float dust = MainRegistry.proxy.getImpactDust(worldObj);
if(f3 >= f4 - f2 && f3 <= f4 + f2) {
float f5 = (f3 - f4) / f2 * 0.5F + 0.5F;
float f6 = 1.0F - (1.0F - MathHelper.sin(f5 * (float) Math.PI)) * 0.99F;
f6 *= f6;
this.colorsSunriseSunset[0] = (f5 * 0.3F + 0.7F) * (1 - dust);
this.colorsSunriseSunset[1] = (f5 * f5 * 0.7F + 0.2F) * (1 - dust);
this.colorsSunriseSunset[2] = (f5 * f5 * 0.0F + 0.2F) * (1 - dust);
this.colorsSunriseSunset[3] = f6 * (1 - dust);
return this.colorsSunriseSunset;
} else {
return null;
}
}
@Override
@SideOnly(Side.CLIENT)
public float getStarBrightness(float par1) {
float starBr = worldObj.getStarBrightnessBody(par1);
float dust = MainRegistry.proxy.getImpactDust(worldObj);
float f1 = worldObj.getCelestialAngle(par1);
float f2 = 1.0F - (MathHelper.cos(f1 * (float) Math.PI * 2.0F) * 2.0F + 0.25F);
if(f2 < 0.0F) {
f2 = 0.0F;
}
if(f2 > 1.0F) {
f2 = 1.0F;
}
return starBr * (1 - dust);
}
@Override
@SideOnly(Side.CLIENT)
public float getSunBrightness(float par1) {
float dust = ImpactWorldHandler.getDustForClient(MainRegistry.proxy.me().worldObj);
float sunBr = worldObj.getSunBrightnessFactor(par1);
return (sunBr * 0.8F + 0.2F) * (1 - dust);
}
@Override
public boolean isDaytime() {
float dust = MainRegistry.proxy.getImpactDust(worldObj);
if(dust >= 0.75F) {
return false;
}
return super.isDaytime();
}
@Override
public float getSunBrightnessFactor(float par1) {
float dust = MainRegistry.proxy.getImpactDust(worldObj);
float sunBr = worldObj.getSunBrightnessFactor(par1);
float dimSun = sunBr * (1 - dust);
return dimSun;
}
/**
* Return Vec3D with biome specific fog color
*/
@SideOnly(Side.CLIENT)
@Override
public Vec3 getFogColor(float p_76562_1_, float p_76562_2_) {
Vec3 fog = super.getFogColor(p_76562_1_, p_76562_2_);
float dust = MainRegistry.proxy.getImpactDust(worldObj);
float fire = MainRegistry.proxy.getImpactFire(worldObj);
float f3 = (float) fog.xCoord;
float f4 = (float) fog.yCoord * (1 - (dust * 0.5F));
float f5 = (float) fog.zCoord * (1 - dust);
if(fire > 0) {
return Vec3.createVectorHelper((double) f3 * (Math.max((1 - (dust * 2)), 0)), (double) f4 * (Math.max((1 - (dust * 2)), 0)), (double) f5 * (Math.max((1 - (dust * 2)), 0)));
}
return Vec3.createVectorHelper((double) f3 * (1 - dust), (double) f4 * (1 - dust), (double) f5 * (1 - dust));
}
@Override
@SideOnly(Side.CLIENT)
public Vec3 getSkyColor(Entity cameraEntity, float partialTicks) {
Vec3 sky = super.getSkyColor(cameraEntity, partialTicks);
float dust = MainRegistry.proxy.getImpactDust(worldObj);
float fire = MainRegistry.proxy.getImpactFire(worldObj);
float f4;
float f5;
float f6;
if(fire > 0) {
f4 = (float) (sky.xCoord * 1.3f);
f5 = (float) sky.yCoord * ((Math.max((1 - (dust * 1.4f)), 0)));
f6 = (float) sky.zCoord * ((Math.max((1 - (dust * 4)), 0)));
} else {
f4 = (float) sky.xCoord;
f5 = (float) sky.yCoord * (1 - (dust * 0.5F));
f6 = (float) sky.zCoord * (1 - dust);
}
return Vec3.createVectorHelper((double) f4 * (fire + (1 - dust)), (double) f5 * (fire + (1 - dust)), (double) f6 * (fire + (1 - dust)));
}
@SideOnly(Side.CLIENT)
public Vec3 drawClouds(float partialTicks) {
Vec3 clouds = super.drawClouds(partialTicks);
float dust = MainRegistry.proxy.getImpactDust(worldObj);;
float f3 = (float) clouds.xCoord;
float f4 = (float) clouds.yCoord;
float f5 = (float) clouds.zCoord;
return Vec3.createVectorHelper((double) f3 * (1 - dust), (double) f4 * (1 - dust), (double) f5 * (1 - dust));
}
}