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