001 package net.minecraft.client.renderer.entity; 002 003 import cpw.mods.fml.relauncher.Side; 004 import cpw.mods.fml.relauncher.SideOnly; 005 import net.minecraft.client.model.ModelMagmaCube; 006 import net.minecraft.entity.Entity; 007 import net.minecraft.entity.EntityLiving; 008 import net.minecraft.entity.monster.EntityMagmaCube; 009 import org.lwjgl.opengl.GL11; 010 011 @SideOnly(Side.CLIENT) 012 public class RenderMagmaCube extends RenderLiving 013 { 014 private int field_77120_a; 015 016 public RenderMagmaCube() 017 { 018 super(new ModelMagmaCube(), 0.25F); 019 this.field_77120_a = ((ModelMagmaCube)this.mainModel).func_78107_a(); 020 } 021 022 public void renderMagmaCube(EntityMagmaCube par1EntityMagmaCube, double par2, double par4, double par6, float par8, float par9) 023 { 024 int var10 = ((ModelMagmaCube)this.mainModel).func_78107_a(); 025 026 if (var10 != this.field_77120_a) 027 { 028 this.field_77120_a = var10; 029 this.mainModel = new ModelMagmaCube(); 030 System.out.println("new lava slime model"); 031 } 032 033 super.doRenderLiving(par1EntityMagmaCube, par2, par4, par6, par8, par9); 034 } 035 036 protected void scaleMagmaCube(EntityMagmaCube par1EntityMagmaCube, float par2) 037 { 038 int var3 = par1EntityMagmaCube.getSlimeSize(); 039 float var4 = (par1EntityMagmaCube.field_70812_c + (par1EntityMagmaCube.field_70811_b - par1EntityMagmaCube.field_70812_c) * par2) / ((float)var3 * 0.5F + 1.0F); 040 float var5 = 1.0F / (var4 + 1.0F); 041 float var6 = (float)var3; 042 GL11.glScalef(var5 * var6, 1.0F / var5 * var6, var5 * var6); 043 } 044 045 /** 046 * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: 047 * entityLiving, partialTickTime 048 */ 049 protected void preRenderCallback(EntityLiving par1EntityLiving, float par2) 050 { 051 this.scaleMagmaCube((EntityMagmaCube)par1EntityLiving, par2); 052 } 053 054 public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) 055 { 056 this.renderMagmaCube((EntityMagmaCube)par1EntityLiving, par2, par4, par6, par8, par9); 057 } 058 059 /** 060 * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then 061 * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic 062 * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, 063 * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. 064 */ 065 public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) 066 { 067 this.renderMagmaCube((EntityMagmaCube)par1Entity, par2, par4, par6, par8, par9); 068 } 069 }