001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import org.lwjgl.opengl.GL11;
006
007 @SideOnly(Side.CLIENT)
008 public class RenderWither extends RenderLiving
009 {
010 private int field_82419_a;
011
012 public RenderWither()
013 {
014 super(new ModelWither(), 1.0F);
015 this.field_82419_a = ((ModelWither)this.mainModel).func_82903_a();
016 }
017
018 public void func_82418_a(EntityWither par1EntityWither, double par2, double par4, double par6, float par8, float par9)
019 {
020 BossStatus.func_82824_a(par1EntityWither, true);
021 int var10 = ((ModelWither)this.mainModel).func_82903_a();
022
023 if (var10 != this.field_82419_a)
024 {
025 this.field_82419_a = var10;
026 this.mainModel = new ModelWither();
027 }
028
029 super.doRenderLiving(par1EntityWither, par2, par4, par6, par8, par9);
030 }
031
032 protected void func_82415_a(EntityWither par1EntityWither, float par2)
033 {
034 int var3 = par1EntityWither.func_82212_n();
035
036 if (var3 > 0)
037 {
038 float var4 = 2.0F - ((float)var3 - par2) / 220.0F * 0.5F;
039 GL11.glScalef(var4, var4, var4);
040 }
041 else
042 {
043 GL11.glScalef(2.0F, 2.0F, 2.0F);
044 }
045 }
046
047 protected int func_82417_a(EntityWither par1EntityWither, int par2, float par3)
048 {
049 if (par1EntityWither.isArmored())
050 {
051 if (par1EntityWither.func_82150_aj())
052 {
053 GL11.glDepthMask(false);
054 }
055 else
056 {
057 GL11.glDepthMask(true);
058 }
059
060 if (par2 == 1)
061 {
062 float var4 = (float)par1EntityWither.ticksExisted + par3;
063 this.loadTexture("/armor/witherarmor.png");
064 GL11.glMatrixMode(GL11.GL_TEXTURE);
065 GL11.glLoadIdentity();
066 float var5 = MathHelper.cos(var4 * 0.02F) * 3.0F;
067 float var6 = var4 * 0.01F;
068 GL11.glTranslatef(var5, var6, 0.0F);
069 this.setRenderPassModel(this.mainModel);
070 GL11.glMatrixMode(GL11.GL_MODELVIEW);
071 GL11.glEnable(GL11.GL_BLEND);
072 float var7 = 0.5F;
073 GL11.glColor4f(var7, var7, var7, 1.0F);
074 GL11.glDisable(GL11.GL_LIGHTING);
075 GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
076 GL11.glTranslatef(0.0F, -0.01F, 0.0F);
077 GL11.glScalef(1.1F, 1.1F, 1.1F);
078 return 1;
079 }
080
081 if (par2 == 2)
082 {
083 GL11.glMatrixMode(GL11.GL_TEXTURE);
084 GL11.glLoadIdentity();
085 GL11.glMatrixMode(GL11.GL_MODELVIEW);
086 GL11.glEnable(GL11.GL_LIGHTING);
087 GL11.glDisable(GL11.GL_BLEND);
088 }
089 }
090
091 return -1;
092 }
093
094 protected int func_82416_b(EntityWither par1EntityWither, int par2, float par3)
095 {
096 return -1;
097 }
098
099 /**
100 * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
101 * entityLiving, partialTickTime
102 */
103 protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
104 {
105 this.func_82415_a((EntityWither)par1EntityLiving, par2);
106 }
107
108 /**
109 * Queries whether should render the specified pass or not.
110 */
111 protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
112 {
113 return this.func_82417_a((EntityWither)par1EntityLiving, par2, par3);
114 }
115
116 protected int inheritRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
117 {
118 return this.func_82416_b((EntityWither)par1EntityLiving, par2, par3);
119 }
120
121 public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
122 {
123 this.func_82418_a((EntityWither)par1EntityLiving, par2, par4, par6, par8, par9);
124 }
125
126 /**
127 * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
128 * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
129 * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1,
130 * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
131 */
132 public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
133 {
134 this.func_82418_a((EntityWither)par1Entity, par2, par4, par6, par8, par9);
135 }
136 }