package net.tropicraft.client.entity.render;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.tropicraft.client.entity.model.ModelTropiCreeper;
import net.tropicraft.entity.hostile.EntityTropiCreeper;
import net.tropicraft.util.TropicraftUtils;
import org.lwjgl.opengl.GL11;
public class RenderTropiCreeper extends RenderLiving {
private ModelBase field_27008_a = new ModelTropiCreeper();
private static final ResourceLocation armoredCreeperTextures = new ResourceLocation("textures/entity/creeper/creeper_armor.png");
public RenderTropiCreeper() {
super(new ModelTropiCreeper(), 0.5F);
}
/**
* Updates creeper scale in prerender callback
*/
protected void updateCreeperScale(EntityTropiCreeper par1EntityVolleyballCreeper, float par2) {
float var4 = par1EntityVolleyballCreeper.getCreeperFlashIntensity(par2);
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;
float var6 = (1.0F + var4 * 0.4F) * var5;
float var7 = (1.0F + var4 * 0.1F) / var5;
GL11.glScalef(var6, var7, var6);
}
/**
* Updates color multiplier based on creeper state called by
* getColorMultiplier
*/
protected int updateCreeperColorMultiplier(EntityTropiCreeper par1EntityVolleyballCreeper, float par2, float par3) {
float var5 = par1EntityVolleyballCreeper.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;
}
short var7 = 255;
short var8 = 255;
short var9 = 255;
return var6 << 24 | var7 << 16 | var8 << 8 | var9;
}
}
protected int func_27006_a(EntityTropiCreeper par1EntityVolleyballCreeper, int par2, float par3) {
if (par1EntityVolleyballCreeper.getPowered()) {
if (par2 == 1) {
float var4 = (float) par1EntityVolleyballCreeper.ticksExisted + par3;
this.renderManager.renderEngine.bindTexture(armoredCreeperTextures);
//this.loadTexture("/armor/power.png");
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
float var5 = var4 * 0.01F;
float var6 = var4 * 0.01F;
GL11.glTranslatef(var5, var6, 0.0F);
this.setRenderPassModel(this.field_27008_a);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_BLEND);
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 -1;
}
protected int func_27007_b(EntityTropiCreeper par1EntityVolleyballCreeper, int par2, float par3) {
return -1;
}
/**
* Allows the render to do any OpenGL state modifications necessary before
* the model is rendered. Args: entityLiving, partialTickTime
*/
@Override
protected void preRenderCallback(EntityLivingBase par1EntityLiving, float par2) {
this.updateCreeperScale((EntityTropiCreeper) par1EntityLiving, par2);
}
/**
* Returns an ARGB int color back. Args: entityLiving, lightBrightness,
* partialTickTime
*/
@Override
protected int getColorMultiplier(EntityLivingBase par1EntityLiving, float par2, float par3) {
return this.updateCreeperColorMultiplier((EntityTropiCreeper) par1EntityLiving, par2, par3);
}
/**
* Queries whether should render the specified pass or not.
*/
@Override
protected int shouldRenderPass(EntityLivingBase par1EntityLiving, int par2, float par3) {
return this.func_27006_a((EntityTropiCreeper) par1EntityLiving, par2, par3);
}
@Override
protected int inheritRenderPass(EntityLivingBase par1EntityLiving, int par2, float par3) {
return this.func_27007_b((EntityTropiCreeper) par1EntityLiving, par2, par3);
}
@Override
/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(Entity entity) {
return TropicraftUtils.bindTextureEntity("creeper");
}
}