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.ModelBiped; 006 import net.minecraft.client.model.ModelZombie; 007 import net.minecraft.client.model.ModelZombieVillager; 008 import net.minecraft.entity.Entity; 009 import net.minecraft.entity.EntityLiving; 010 import net.minecraft.entity.monster.EntityZombie; 011 012 @SideOnly(Side.CLIENT) 013 public class RenderZombie extends RenderBiped 014 { 015 private ModelBiped field_82434_o; 016 private ModelZombieVillager field_82432_p; 017 protected ModelBiped field_82437_k; 018 protected ModelBiped field_82435_l; 019 protected ModelBiped field_82436_m; 020 protected ModelBiped field_82433_n; 021 private int field_82431_q = 1; 022 023 public RenderZombie() 024 { 025 super(new ModelZombie(), 0.5F, 1.0F); 026 this.field_82434_o = this.modelBipedMain; 027 this.field_82432_p = new ModelZombieVillager(); 028 } 029 030 protected void func_82421_b() 031 { 032 this.field_82423_g = new ModelZombie(1.0F, true); 033 this.field_82425_h = new ModelZombie(0.5F, true); 034 this.field_82437_k = this.field_82423_g; 035 this.field_82435_l = this.field_82425_h; 036 this.field_82436_m = new ModelZombieVillager(1.0F, 0.0F, true); 037 this.field_82433_n = new ModelZombieVillager(0.5F, 0.0F, true); 038 } 039 040 protected int func_82429_a(EntityZombie par1EntityZombie, int par2, float par3) 041 { 042 this.func_82427_a(par1EntityZombie); 043 return super.shouldRenderPass(par1EntityZombie, par2, par3); 044 } 045 046 public void func_82426_a(EntityZombie par1EntityZombie, double par2, double par4, double par6, float par8, float par9) 047 { 048 this.func_82427_a(par1EntityZombie); 049 super.doRenderLiving(par1EntityZombie, par2, par4, par6, par8, par9); 050 } 051 052 protected void func_82428_a(EntityZombie par1EntityZombie, float par2) 053 { 054 this.func_82427_a(par1EntityZombie); 055 super.renderEquippedItems(par1EntityZombie, par2); 056 } 057 058 private void func_82427_a(EntityZombie par1EntityZombie) 059 { 060 if (par1EntityZombie.isVillager()) 061 { 062 if (this.field_82431_q != this.field_82432_p.func_82897_a()) 063 { 064 this.field_82432_p = new ModelZombieVillager(); 065 this.field_82431_q = this.field_82432_p.func_82897_a(); 066 this.field_82436_m = new ModelZombieVillager(1.0F, 0.0F, true); 067 this.field_82433_n = new ModelZombieVillager(0.5F, 0.0F, true); 068 } 069 070 this.mainModel = this.field_82432_p; 071 this.field_82423_g = this.field_82436_m; 072 this.field_82425_h = this.field_82433_n; 073 } 074 else 075 { 076 this.mainModel = this.field_82434_o; 077 this.field_82423_g = this.field_82437_k; 078 this.field_82425_h = this.field_82435_l; 079 } 080 081 this.modelBipedMain = (ModelBiped)this.mainModel; 082 } 083 084 protected void func_82430_a(EntityZombie par1EntityZombie, float par2, float par3, float par4) 085 { 086 if (par1EntityZombie.func_82230_o()) 087 { 088 par3 += (float)(Math.cos((double)par1EntityZombie.ticksExisted * 3.25D) * Math.PI * 0.25D); 089 } 090 091 super.rotateCorpse(par1EntityZombie, par2, par3, par4); 092 } 093 094 protected void renderEquippedItems(EntityLiving par1EntityLiving, float par2) 095 { 096 this.func_82428_a((EntityZombie)par1EntityLiving, par2); 097 } 098 099 public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) 100 { 101 this.func_82426_a((EntityZombie)par1EntityLiving, par2, par4, par6, par8, par9); 102 } 103 104 /** 105 * Queries whether should render the specified pass or not. 106 */ 107 protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3) 108 { 109 return this.func_82429_a((EntityZombie)par1EntityLiving, par2, par3); 110 } 111 112 protected void rotateCorpse(EntityLiving par1EntityLiving, float par2, float par3, float par4) 113 { 114 this.func_82430_a((EntityZombie)par1EntityLiving, par2, par3, par4); 115 } 116 117 /** 118 * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then 119 * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic 120 * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, 121 * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. 122 */ 123 public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) 124 { 125 this.func_82426_a((EntityZombie)par1Entity, par2, par4, par6, par8, par9); 126 } 127 }