    001package net.minecraft.client.renderer.entity;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.client.model.ModelMagmaCube;
    006import net.minecraft.entity.Entity;
    007import net.minecraft.entity.EntityLiving;
    008import net.minecraft.entity.monster.EntityMagmaCube;
    009import org.lwjgl.opengl.GL11;
    010
    011@SideOnly(Side.CLIENT)
    012public 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}