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