package micdoodle8.mods.galacticraft.core.client.render.entities;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.client.model.ModelEvolvedCreeper;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderCreeper;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
@SideOnly(Side.CLIENT)
public class RenderEvolvedCreeper extends RenderCreeper
{
private static final ResourceLocation creeperTexture = new ResourceLocation(Constants.ASSET_PREFIX, "textures/model/creeper.png");
private static final ResourceLocation powerTexture = new ResourceLocation(Constants.ASSET_PREFIX, "textures/model/power.png");
private final ModelBase creeperModel = new ModelEvolvedCreeper(0.2F);
public RenderEvolvedCreeper(RenderManager manager)
{
super(manager);
this.mainModel = new ModelEvolvedCreeper();
}
protected ResourceLocation func_110779_a(EntityCreeper par1EntityArrow)
{
return RenderEvolvedCreeper.creeperTexture;
}
@Override
protected ResourceLocation getEntityTexture(EntityCreeper entity)
{
return this.func_110779_a(entity);
}
protected void updateCreeperScale(EntityCreeper par1GCEntityCreeper, float par2)
{
float var4 = par1GCEntityCreeper.getCreeperFlashIntensity(par2);
final float var5 = 1.0F + MathHelper.sin(var4 * 100.0F) * var4 * 0.01F;
if (var4 < 0.0F)
{
var4 = 0.0F;
}
if (var4 > 1.0F)
{
var4 = 1.0F;
}
var4 *= var4;
var4 *= var4;
final float var6 = (1.0F + var4 * 0.4F) * var5;
final float var7 = (1.0F + var4 * 0.1F) / var5;
GL11.glScalef(0.2F + var6, 0.2F + var7, 0.2F + var6);
}
protected int updateCreeperColorMultiplier(EntityCreeper par1GCEntityCreeper, float par2, float par3)
{
final float var5 = par1GCEntityCreeper.getCreeperFlashIntensity(par3);
if ((int) (var5 * 10.0F) % 2 == 0)
{
return 0;
}
else
{
int var6 = (int) (var5 * 0.2F * 255.0F);
if (var6 < 0)
{
var6 = 0;
}
if (var6 > 255)
{
var6 = 255;
}
final short var7 = 255;
final short var8 = 255;
final short var9 = 255;
return var6 << 24 | var7 << 16 | var8 << 8 | var9;
}
}
protected int func_77061_b(EntityCreeper par1GCEntityCreeper, int par2, float par3)
{
return -1;
}
@Override
protected void preRenderCallback(EntityCreeper entitylivingbaseIn, float partialTickTime)
{
this.updateCreeperScale(entitylivingbaseIn, partialTickTime);
}
@Override
protected int getColorMultiplier(EntityCreeper entitylivingbaseIn, float lightBrightness, float partialTickTime)
{
return this.updateCreeperColorMultiplier(entitylivingbaseIn, lightBrightness, partialTickTime);
}
// @Override
// protected int shouldRenderPass(EntityLivingBase par1EntityLiving, int par2, float par3)
// {
// EntityEvolvedCreeper creeper = (EntityEvolvedCreeper) par1EntityLiving;
// final Minecraft minecraft = FMLClientHandler.instance().getClient();
//
// final EntityPlayerSP player = minecraft.thePlayer;
//
// ItemStack helmetSlot = null;
//
// if (player != null && player.inventory.armorItemInSlot(3) != null)
// {
// helmetSlot = player.inventory.armorItemInSlot(3);
// }
//
// if (helmetSlot != null && helmetSlot.getItem() instanceof ItemSensorGlasses && minecraft.currentScreen == null)
// {
// if (par2 == 1)
// {
// final float var4 = creeper.ticksExisted * 2 + par3;
// this.bindTexture(RenderEvolvedCreeper.powerTexture);
// GL11.glMatrixMode(GL11.GL_TEXTURE);
// GL11.glLoadIdentity();
// final float var5 = var4 * 0.01F;
// final float var6 = var4 * 0.01F;
// GL11.glTranslatef(var5, var6, 0.0F);
// this.setRenderPassModel(this.creeperModel);
// GL11.glMatrixMode(GL11.GL_MODELVIEW);
// GL11.glEnable(GL11.GL_BLEND);
// final float var7 = 0.5F;
// GL11.glColor4f(var7, var7, var7, 1.0F);
// GL11.glDisable(GL11.GL_LIGHTING);
// GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
// return 1;
// }
//
// if (par2 == 2)
// {
// GL11.glMatrixMode(GL11.GL_TEXTURE);
// GL11.glLoadIdentity();
// GL11.glMatrixMode(GL11.GL_MODELVIEW);
// GL11.glEnable(GL11.GL_LIGHTING);
// GL11.glDisable(GL11.GL_BLEND);
// }
// }
//
// return super.shouldRenderPass(creeper, par2, par3);
// } TODO
//
// @Override
// protected int inheritRenderPass(EntityLivingBase par1EntityLiving, int par2, float par3)
// {
// return this.func_77061_b((EntityCreeper) par1EntityLiving, par2, par3);
// }
}