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 }