001    package net.minecraft.src;
002    
003    public class EntityExpBottle extends EntityThrowable
004    {
005        public EntityExpBottle(World par1World)
006        {
007            super(par1World);
008        }
009    
010        public EntityExpBottle(World par1World, EntityLiving par2EntityLiving)
011        {
012            super(par1World, par2EntityLiving);
013        }
014    
015        public EntityExpBottle(World par1World, double par2, double par4, double par6)
016        {
017            super(par1World, par2, par4, par6);
018        }
019    
020        /**
021         * Gets the amount of gravity to apply to the thrown entity with each tick.
022         */
023        protected float getGravityVelocity()
024        {
025            return 0.07F;
026        }
027    
028        protected float func_70182_d()
029        {
030            return 0.7F;
031        }
032    
033        protected float func_70183_g()
034        {
035            return -20.0F;
036        }
037    
038        /**
039         * Called when this EntityThrowable hits a block or entity.
040         */
041        protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
042        {
043            if (!this.worldObj.isRemote)
044            {
045                this.worldObj.playAuxSFX(2002, (int)Math.round(this.posX), (int)Math.round(this.posY), (int)Math.round(this.posZ), 0);
046                int var2 = 3 + this.worldObj.rand.nextInt(5) + this.worldObj.rand.nextInt(5);
047    
048                while (var2 > 0)
049                {
050                    int var3 = EntityXPOrb.getXPSplit(var2);
051                    var2 -= var3;
052                    this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, var3));
053                }
054    
055                this.setDead();
056            }
057        }
058    }