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 }