package net.tropicraft.client.entity.render;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import net.tropicraft.client.entity.model.ModelSeaTurtle;
import net.tropicraft.entity.underdasea.EntityAmphibian;
import net.tropicraft.util.TropicraftUtils;
import org.lwjgl.opengl.GL11;
public class RenderSeaTurtle extends RenderLiving {
public ModelSeaTurtle turtle;
public RenderSeaTurtle(ModelBase modelbase, float f) {
super(modelbase, f);
turtle = (ModelSeaTurtle) modelbase;
}
public void renderTurtle(EntityAmphibian entityTurtle, double d, double d1, double d2,
float f, float f1) {
turtle.inWater = entityTurtle.isInWater();
GL11.glPushMatrix();
GL11.glDisable(2884 /*GL_CULL_FACE*/);
mainModel.onGround = renderSwingProgress(entityTurtle, f1);
if (renderPassModel != null) {
renderPassModel.onGround = mainModel.onGround;
}
mainModel.isRiding = entityTurtle.isRiding();
if (renderPassModel != null) {
renderPassModel.isRiding = mainModel.isRiding;
}
mainModel.isChild = entityTurtle.isChild();
if (renderPassModel != null) {
renderPassModel.isChild = mainModel.isChild;
}
try {
float f2 = entityTurtle.prevRenderYawOffset + (entityTurtle.renderYawOffset - entityTurtle.prevRenderYawOffset) * f1;
float f3 = entityTurtle.prevRotationYaw + (entityTurtle.rotationYaw - entityTurtle.prevRotationYaw) * f1;
float f4 = entityTurtle.prevRotationPitch + (entityTurtle.rotationPitch - entityTurtle.prevRotationPitch) * f1;
renderLivingAt(entityTurtle, d, d1, d2);
float f5 = handleRotationFloat(entityTurtle, f1);
rotateCorpse(entityTurtle, f5, f2, f1);
if (entityTurtle.isInWater()) {
GL11.glRotatef(f4, 1.0F, 0.0F, 0.0F);
}
float f6 = 0.0625F;
GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/);
GL11.glScalef(-1F, -1F, 1.0F);
preRenderCallback(entityTurtle, f1);
GL11.glTranslatef(0.0F, -24F * f6 - 0.0078125F, 0.0F);
float f7 = entityTurtle.prevLimbSwingAmount + (entityTurtle.limbSwingAmount - entityTurtle.prevLimbSwingAmount) * f1;
float f8 = entityTurtle.limbSwing - entityTurtle.limbSwingAmount * (1.0F - f1);
if (entityTurtle.isChild()) {
f8 *= 3F;
}
if (f7 > 1.0F) {
f7 = 1.0F;
}
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
mainModel.setLivingAnimations(entityTurtle, f8, f7, f1);
renderModel(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
for (int i = 0; i < 4; i++) {
int j = shouldRenderPass(entityTurtle, i, f1);
if (j <= 0) {
continue;
}
renderPassModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
if (j == 15) {
float f10 = (float) entityTurtle.ticksExisted + f1;
//loadTexture("%blur%/misc/glint.png");
GL11.glEnable(3042 /*GL_BLEND*/);
float f12 = 0.5F;
GL11.glColor4f(f12, f12, f12, 1.0F);
GL11.glDepthFunc(514);
GL11.glDepthMask(false);
for (int i1 = 0; i1 < 2; i1++) {
GL11.glDisable(2896 /*GL_LIGHTING*/);
float f15 = 0.76F;
GL11.glColor4f(0.5F * f15, 0.25F * f15, 0.8F * f15, 1.0F);
GL11.glBlendFunc(768, 1);
GL11.glMatrixMode(5890 /*GL_TEXTURE*/);
GL11.glLoadIdentity();
float f17 = f10 * (0.001F + (float) i1 * 0.003F) * 20F;
float f18 = 0.3333333F;
GL11.glScalef(f18, f18, f18);
GL11.glRotatef(30F - (float) i1 * 60F, 0.0F, 0.0F, 1.0F);
GL11.glTranslatef(0.0F, f17, 0.0F);
GL11.glMatrixMode(5888 /*GL_MODELVIEW0_ARB*/);
renderPassModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glMatrixMode(5890 /*GL_TEXTURE*/);
GL11.glDepthMask(true);
GL11.glLoadIdentity();
GL11.glMatrixMode(5888 /*GL_MODELVIEW0_ARB*/);
GL11.glEnable(2896 /*GL_LIGHTING*/);
GL11.glDisable(3042 /*GL_BLEND*/);
GL11.glDepthFunc(515);
}
GL11.glDisable(3042 /*GL_BLEND*/);
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
}
renderEquippedItems(entityTurtle, f1);
float f9 = entityTurtle.getBrightness(f1);
int k = getColorMultiplier(entityTurtle, f9, f1);
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
GL11.glDisable(GL11.GL_TEXTURE_2D);
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
if ((k >> 24 & 0xff) > 0 || entityTurtle.hurtTime > 0 || entityTurtle.deathTime > 0) {
GL11.glDisable(3553 /*GL_TEXTURE_2D*/);
GL11.glDisable(3008 /*GL_ALPHA_TEST*/);
GL11.glEnable(3042 /*GL_BLEND*/);
GL11.glBlendFunc(770, 771);
GL11.glDepthFunc(514);
if (entityTurtle.hurtTime > 0 || entityTurtle.deathTime > 0) {
GL11.glColor4f(f9, 0.0F, 0.0F, 0.4F);
mainModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
for (int l = 0; l < 4; l++) {
if (inheritRenderPass(entityTurtle, l, f1) >= 0) {
GL11.glColor4f(f9, 0.0F, 0.0F, 0.4F);
renderPassModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
}
}
}
if ((k >> 24 & 0xff) > 0) {
float f11 = (float) (k >> 16 & 0xff) / 255F;
float f13 = (float) (k >> 8 & 0xff) / 255F;
float f14 = (float) (k & 0xff) / 255F;
float f16 = (float) (k >> 24 & 0xff) / 255F;
GL11.glColor4f(f11, f13, f14, f16);
mainModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
for (int j1 = 0; j1 < 4; j1++) {
if (inheritRenderPass(entityTurtle, j1, f1) >= 0) {
GL11.glColor4f(f11, f13, f14, f16);
renderPassModel.render(entityTurtle, f8, f7, f5, f3 - f2, f4, f6);
}
}
}
GL11.glDepthFunc(515);
GL11.glDisable(3042 /*GL_BLEND*/);
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
GL11.glEnable(3553 /*GL_TEXTURE_2D*/);
}
GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/);
} catch (Exception exception) {
exception.printStackTrace();
}
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
GL11.glEnable(GL11.GL_TEXTURE_2D);
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
GL11.glEnable(2884 /*GL_CULL_FACE*/);
GL11.glPopMatrix();
passSpecialRender(entityTurtle, d, d1, d2);
}
@Override
protected void preRenderCallback(EntityLivingBase entityliving, float f) {
preRenderScale((EntityAmphibian) entityliving, f);
}
protected void preRenderScale(EntityAmphibian entitymarlin, float f) {
float f1 = (float) (Math.log(entitymarlin.getAge() + 1.75)) - 0.25F;
GL11.glScalef(f1, f1, f1);
}
@Override
public void doRender(EntityLiving entityTurtle, double d, double d1, double d2,
float f, float f1) {
renderTurtle((EntityAmphibian) entityTurtle, d, d1, d2, f, f1);
}
@Override
public void doRender(Entity entity, double d, double d1, double d2,
float f, float f1) {
renderTurtle((EntityAmphibian) entity, d, d1, d2, f, f1);
}
@Override
protected ResourceLocation getEntityTexture(Entity entity) {
return TropicraftUtils.bindTextureEntity("turtle/seaTurtle");
}
}