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