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 RenderSpider extends RenderLiving
009    {
010        public RenderSpider()
011        {
012            super(new ModelSpider(), 1.0F);
013            this.setRenderPassModel(new ModelSpider());
014        }
015    
016        protected float setSpiderDeathMaxRotation(EntitySpider par1EntitySpider)
017        {
018            return 180.0F;
019        }
020    
021        /**
022         * Sets the spider's glowing eyes
023         */
024        protected int setSpiderEyeBrightness(EntitySpider par1EntitySpider, int par2, float par3)
025        {
026            if (par2 != 0)
027            {
028                return -1;
029            }
030            else
031            {
032                this.loadTexture("/mob/spider_eyes.png");
033                float var4 = 1.0F;
034                GL11.glEnable(GL11.GL_BLEND);
035                GL11.glDisable(GL11.GL_ALPHA_TEST);
036                GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
037    
038                if (par1EntitySpider.func_82150_aj())
039                {
040                    GL11.glDepthMask(false);
041                }
042                else
043                {
044                    GL11.glDepthMask(true);
045                }
046    
047                char var5 = 61680;
048                int var6 = var5 % 65536;
049                int var7 = var5 / 65536;
050                OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)var6 / 1.0F, (float)var7 / 1.0F);
051                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
052                GL11.glColor4f(1.0F, 1.0F, 1.0F, var4);
053                return 1;
054            }
055        }
056    
057        protected void scaleSpider(EntitySpider par1EntitySpider, float par2)
058        {
059            float var3 = par1EntitySpider.spiderScaleAmount();
060            GL11.glScalef(var3, var3, var3);
061        }
062    
063        /**
064         * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
065         * entityLiving, partialTickTime
066         */
067        protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
068        {
069            this.scaleSpider((EntitySpider)par1EntityLiving, par2);
070        }
071    
072        protected float getDeathMaxRotation(EntityLiving par1EntityLiving)
073        {
074            return this.setSpiderDeathMaxRotation((EntitySpider)par1EntityLiving);
075        }
076    
077        /**
078         * Queries whether should render the specified pass or not.
079         */
080        protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
081        {
082            return this.setSpiderEyeBrightness((EntitySpider)par1EntityLiving, par2, par3);
083        }
084    }