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 RenderVillager extends RenderLiving
009    {
010        /** Model of the villager. */
011        protected ModelVillager villagerModel;
012    
013        public RenderVillager()
014        {
015            super(new ModelVillager(0.0F), 0.5F);
016            this.villagerModel = (ModelVillager)this.mainModel;
017        }
018    
019        /**
020         * Determines wether Villager Render pass or not.
021         */
022        protected int shouldVillagerRenderPass(EntityVillager par1EntityVillager, int par2, float par3)
023        {
024            return -1;
025        }
026    
027        public void renderVillager(EntityVillager par1EntityVillager, double par2, double par4, double par6, float par8, float par9)
028        {
029            super.doRenderLiving(par1EntityVillager, par2, par4, par6, par8, par9);
030        }
031    
032        /**
033         * Passes the Villager special render.
034         */
035        protected void passVillagerSpecialRender(EntityVillager par1EntityVillager, double par2, double par4, double par6) {}
036    
037        protected void renderVillagerEquipedItems(EntityVillager par1EntityVillager, float par2)
038        {
039            super.renderEquippedItems(par1EntityVillager, par2);
040        }
041    
042        protected void preRenderVillager(EntityVillager par1EntityVillager, float par2)
043        {
044            float var3 = 0.9375F;
045    
046            if (par1EntityVillager.getGrowingAge() < 0)
047            {
048                var3 = (float)((double)var3 * 0.5D);
049                this.shadowSize = 0.25F;
050            }
051            else
052            {
053                this.shadowSize = 0.5F;
054            }
055    
056            GL11.glScalef(var3, var3, var3);
057        }
058    
059        /**
060         * Passes the specialRender and renders it
061         */
062        protected void passSpecialRender(EntityLiving par1EntityLiving, double par2, double par4, double par6)
063        {
064            this.passVillagerSpecialRender((EntityVillager)par1EntityLiving, par2, par4, par6);
065        }
066    
067        /**
068         * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
069         * entityLiving, partialTickTime
070         */
071        protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
072        {
073            this.preRenderVillager((EntityVillager)par1EntityLiving, par2);
074        }
075    
076        /**
077         * Queries whether should render the specified pass or not.
078         */
079        protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
080        {
081            return this.shouldVillagerRenderPass((EntityVillager)par1EntityLiving, par2, par3);
082        }
083    
084        protected void renderEquippedItems(EntityLiving par1EntityLiving, float par2)
085        {
086            this.renderVillagerEquipedItems((EntityVillager)par1EntityLiving, par2);
087        }
088    
089        public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
090        {
091            this.renderVillager((EntityVillager)par1EntityLiving, par2, par4, par6, par8, par9);
092        }
093    
094        /**
095         * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
096         * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
097         * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1,
098         * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
099         */
100        public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
101        {
102            this.renderVillager((EntityVillager)par1Entity, par2, par4, par6, par8, par9);
103        }
104    }