001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.util.Random;
006    
007    @SideOnly(Side.CLIENT)
008    public class Particle
009    {
010        private static Random rand = new Random();
011        public double posX;
012        public double posY;
013        public double prevPosX;
014        public double prevPosY;
015        public double velocityX;
016        public double velocityY;
017        public double accelScale;
018        public boolean isDead;
019        public int timeTick;
020        public int timeLimit;
021        public double tintRed;
022        public double tintGreen;
023        public double tintBlue;
024        public double tintAlpha;
025        public double prevTintRed;
026        public double prevTintGreen;
027        public double prevTintBlue;
028        public double prevTintAlpha;
029    
030        public void update(GuiParticle par1GuiParticle)
031        {
032            this.posX += this.velocityX;
033            this.posY += this.velocityY;
034            this.velocityX *= this.accelScale;
035            this.velocityY *= this.accelScale;
036            this.velocityY += 0.1D;
037    
038            if (++this.timeTick > this.timeLimit)
039            {
040                this.setDead();
041            }
042    
043            this.tintAlpha = 2.0D - (double)this.timeTick / (double)this.timeLimit * 2.0D;
044    
045            if (this.tintAlpha > 1.0D)
046            {
047                this.tintAlpha = 1.0D;
048            }
049    
050            this.tintAlpha *= this.tintAlpha;
051            this.tintAlpha *= 0.5D;
052        }
053    
054        public void preUpdate()
055        {
056            this.prevTintRed = this.tintRed;
057            this.prevTintGreen = this.tintGreen;
058            this.prevTintBlue = this.tintBlue;
059            this.prevTintAlpha = this.tintAlpha;
060            this.prevPosX = this.posX;
061            this.prevPosY = this.posY;
062        }
063    
064        public void setDead()
065        {
066            this.isDead = true;
067        }
068    }