001package net.minecraft.client.renderer.entity;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.client.model.ModelSpider;
006import net.minecraft.client.renderer.OpenGlHelper;
007import net.minecraft.entity.EntityLiving;
008import net.minecraft.entity.monster.EntitySpider;
009import org.lwjgl.opengl.GL11;
010
011@SideOnly(Side.CLIENT)
012public class RenderSpider extends RenderLiving
013{
014    public RenderSpider()
015    {
016        super(new ModelSpider(), 1.0F);
017        this.setRenderPassModel(new ModelSpider());
018    }
019
020    protected float setSpiderDeathMaxRotation(EntitySpider par1EntitySpider)
021    {
022        return 180.0F;
023    }
024
025    /**
026     * Sets the spider's glowing eyes
027     */
028    protected int setSpiderEyeBrightness(EntitySpider par1EntitySpider, int par2, float par3)
029    {
030        if (par2 != 0)
031        {
032            return -1;
033        }
034        else
035        {
036            this.loadTexture("/mob/spider_eyes.png");
037            float f1 = 1.0F;
038            GL11.glEnable(GL11.GL_BLEND);
039            GL11.glDisable(GL11.GL_ALPHA_TEST);
040            GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
041
042            if (par1EntitySpider.getHasActivePotion())
043            {
044                GL11.glDepthMask(false);
045            }
046            else
047            {
048                GL11.glDepthMask(true);
049            }
050
051            char c0 = 61680;
052            int j = c0 % 65536;
053            int k = c0 / 65536;
054            OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F);
055            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
056            GL11.glColor4f(1.0F, 1.0F, 1.0F, f1);
057            return 1;
058        }
059    }
060
061    protected void scaleSpider(EntitySpider par1EntitySpider, float par2)
062    {
063        float f1 = par1EntitySpider.spiderScaleAmount();
064        GL11.glScalef(f1, f1, f1);
065    }
066
067    /**
068     * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
069     * entityLiving, partialTickTime
070     */
071    protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
072    {
073        this.scaleSpider((EntitySpider)par1EntityLiving, par2);
074    }
075
076    protected float getDeathMaxRotation(EntityLiving par1EntityLiving)
077    {
078        return this.setSpiderDeathMaxRotation((EntitySpider)par1EntityLiving);
079    }
080
081    /**
082     * Queries whether should render the specified pass or not.
083     */
084    protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
085    {
086        return this.setSpiderEyeBrightness((EntitySpider)par1EntityLiving, par2, par3);
087    }
088}