001    package net.minecraft.client.particle;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.client.renderer.RenderEngine;
006    import net.minecraft.client.renderer.Tessellator;
007    import net.minecraft.util.MathHelper;
008    import net.minecraft.world.World;
009    import org.lwjgl.opengl.GL11;
010    
011    @SideOnly(Side.CLIENT)
012    public class EntityFootStepFX extends EntityFX
013    {
014        private int field_70576_a = 0;
015        private int field_70578_aq = 0;
016        private RenderEngine currentFootSteps;
017    
018        public EntityFootStepFX(RenderEngine par1RenderEngine, World par2World, double par3, double par5, double par7)
019        {
020            super(par2World, par3, par5, par7, 0.0D, 0.0D, 0.0D);
021            this.currentFootSteps = par1RenderEngine;
022            this.motionX = this.motionY = this.motionZ = 0.0D;
023            this.field_70578_aq = 200;
024        }
025    
026        public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7)
027        {
028            float var8 = ((float)this.field_70576_a + par2) / (float)this.field_70578_aq;
029            var8 *= var8;
030            float var9 = 2.0F - var8 * 2.0F;
031    
032            if (var9 > 1.0F)
033            {
034                var9 = 1.0F;
035            }
036    
037            var9 *= 0.2F;
038            GL11.glDisable(GL11.GL_LIGHTING);
039            float var10 = 0.125F;
040            float var11 = (float)(this.posX - interpPosX);
041            float var12 = (float)(this.posY - interpPosY);
042            float var13 = (float)(this.posZ - interpPosZ);
043            float var14 = this.worldObj.getLightBrightness(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ));
044            this.currentFootSteps.bindTexture(this.currentFootSteps.getTexture("/misc/footprint.png"));
045            GL11.glEnable(GL11.GL_BLEND);
046            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
047            par1Tessellator.startDrawingQuads();
048            par1Tessellator.setColorRGBA_F(var14, var14, var14, var9);
049            par1Tessellator.addVertexWithUV((double)(var11 - var10), (double)var12, (double)(var13 + var10), 0.0D, 1.0D);
050            par1Tessellator.addVertexWithUV((double)(var11 + var10), (double)var12, (double)(var13 + var10), 1.0D, 1.0D);
051            par1Tessellator.addVertexWithUV((double)(var11 + var10), (double)var12, (double)(var13 - var10), 1.0D, 0.0D);
052            par1Tessellator.addVertexWithUV((double)(var11 - var10), (double)var12, (double)(var13 - var10), 0.0D, 0.0D);
053            par1Tessellator.draw();
054            GL11.glDisable(GL11.GL_BLEND);
055            GL11.glEnable(GL11.GL_LIGHTING);
056        }
057    
058        /**
059         * Called to update the entity's position/logic.
060         */
061        public void onUpdate()
062        {
063            ++this.field_70576_a;
064    
065            if (this.field_70576_a == this.field_70578_aq)
066            {
067                this.setDead();
068            }
069        }
070    
071        public int getFXLayer()
072        {
073            return 3;
074        }
075    }