001    package net.minecraft.client.model;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.entity.Entity;
006    import net.minecraft.entity.EntityLiving;
007    import net.minecraft.entity.monster.EntityMagmaCube;
008    
009    @SideOnly(Side.CLIENT)
010    public class ModelMagmaCube extends ModelBase
011    {
012        ModelRenderer[] field_78109_a = new ModelRenderer[8];
013        ModelRenderer field_78108_b;
014    
015        public ModelMagmaCube()
016        {
017            for (int var1 = 0; var1 < this.field_78109_a.length; ++var1)
018            {
019                byte var2 = 0;
020                int var3 = var1;
021    
022                if (var1 == 2)
023                {
024                    var2 = 24;
025                    var3 = 10;
026                }
027                else if (var1 == 3)
028                {
029                    var2 = 24;
030                    var3 = 19;
031                }
032    
033                this.field_78109_a[var1] = new ModelRenderer(this, var2, var3);
034                this.field_78109_a[var1].addBox(-4.0F, (float)(16 + var1), -4.0F, 8, 1, 8);
035            }
036    
037            this.field_78108_b = new ModelRenderer(this, 0, 16);
038            this.field_78108_b.addBox(-2.0F, 18.0F, -2.0F, 4, 4, 4);
039        }
040    
041        public int func_78107_a()
042        {
043            return 5;
044        }
045    
046        /**
047         * Used for easily adding entity-dependent animations. The second and third float params here are the same second
048         * and third as in the setRotationAngles method.
049         */
050        public void setLivingAnimations(EntityLiving par1EntityLiving, float par2, float par3, float par4)
051        {
052            EntityMagmaCube var5 = (EntityMagmaCube)par1EntityLiving;
053            float var6 = var5.field_70812_c + (var5.field_70811_b - var5.field_70812_c) * par4;
054    
055            if (var6 < 0.0F)
056            {
057                var6 = 0.0F;
058            }
059    
060            for (int var7 = 0; var7 < this.field_78109_a.length; ++var7)
061            {
062                this.field_78109_a[var7].rotationPointY = (float)(-(4 - var7)) * var6 * 1.7F;
063            }
064        }
065    
066        /**
067         * Sets the models various rotation angles then renders the model.
068         */
069        public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
070        {
071            this.setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
072            this.field_78108_b.render(par7);
073    
074            for (int var8 = 0; var8 < this.field_78109_a.length; ++var8)
075            {
076                this.field_78109_a[var8].render(par7);
077            }
078        }
079    }