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 }