001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import org.lwjgl.opengl.GL11;
006    
007    @SideOnly(Side.CLIENT)
008    public class RenderBat extends RenderLiving
009    {
010        private int field_82446_a;
011    
012        public RenderBat()
013        {
014            super(new ModelBat(), 0.25F);
015            this.field_82446_a = ((ModelBat)this.mainModel).func_82889_a();
016        }
017    
018        public void func_82443_a(EntityBat par1EntityBat, double par2, double par4, double par6, float par8, float par9)
019        {
020            int var10 = ((ModelBat)this.mainModel).func_82889_a();
021    
022            if (var10 != this.field_82446_a)
023            {
024                this.field_82446_a = var10;
025                this.mainModel = new ModelBat();
026            }
027    
028            super.doRenderLiving(par1EntityBat, par2, par4, par6, par8, par9);
029        }
030    
031        protected void func_82442_a(EntityBat par1EntityBat, float par2)
032        {
033            GL11.glScalef(0.35F, 0.35F, 0.35F);
034        }
035    
036        protected void func_82445_a(EntityBat par1EntityBat, double par2, double par4, double par6)
037        {
038            super.renderLivingAt(par1EntityBat, par2, par4, par6);
039        }
040    
041        protected void func_82444_a(EntityBat par1EntityBat, float par2, float par3, float par4)
042        {
043            if (!par1EntityBat.func_82235_h())
044            {
045                GL11.glTranslatef(0.0F, MathHelper.cos(par2 * 0.3F) * 0.1F, 0.0F);
046            }
047            else
048            {
049                GL11.glTranslatef(0.0F, -0.1F, 0.0F);
050            }
051    
052            super.rotateCorpse(par1EntityBat, par2, par3, par4);
053        }
054    
055        /**
056         * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
057         * entityLiving, partialTickTime
058         */
059        protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
060        {
061            this.func_82442_a((EntityBat)par1EntityLiving, par2);
062        }
063    
064        protected void rotateCorpse(EntityLiving par1EntityLiving, float par2, float par3, float par4)
065        {
066            this.func_82444_a((EntityBat)par1EntityLiving, par2, par3, par4);
067        }
068    
069        /**
070         * Sets a simple glTranslate on a LivingEntity.
071         */
072        protected void renderLivingAt(EntityLiving par1EntityLiving, double par2, double par4, double par6)
073        {
074            this.func_82445_a((EntityBat)par1EntityLiving, par2, par4, par6);
075        }
076    
077        public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
078        {
079            this.func_82443_a((EntityBat)par1EntityLiving, par2, par4, par6, par8, par9);
080        }
081    
082        /**
083         * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
084         * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
085         * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1,
086         * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
087         */
088        public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
089        {
090            this.func_82443_a((EntityBat)par1Entity, par2, par4, par6, par8, par9);
091        }
092    }