    001    package net.minecraft.src;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005
    006    public class EntityEnderPearl extends EntityThrowable
    007    {
    008        public EntityEnderPearl(World par1World)
    009        {
    010            super(par1World);
    011        }
    012
    013        public EntityEnderPearl(World par1World, EntityLiving par2EntityLiving)
    014        {
    015            super(par1World, par2EntityLiving);
    016        }
    017
    018        @SideOnly(Side.CLIENT)
    019        public EntityEnderPearl(World par1World, double par2, double par4, double par6)
    020        {
    021            super(par1World, par2, par4, par6);
    022        }
    023
    024        /**
    025         * Called when this EntityThrowable hits a block or entity.
    026         */
    027        protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
    028        {
    029            if (par1MovingObjectPosition.entityHit != null)
    030            {
    031                par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.thrower), 0);
    032            }
    033
    034            for (int var2 = 0; var2 < 32; ++var2)
    035            {
    036                this.worldObj.spawnParticle("portal", this.posX, this.posY + this.rand.nextDouble() * 2.0D, this.posZ, this.rand.nextGaussian(), 0.0D, this.rand.nextGaussian());
    037            }
    038
    039            if (!this.worldObj.isRemote)
    040            {
    041                if (this.thrower != null && this.thrower instanceof EntityPlayerMP)
    042                {
    043                    EntityPlayerMP var3 = (EntityPlayerMP)this.thrower;
    044
    045                    if (!var3.playerNetServerHandler.connectionClosed && var3.worldObj == this.worldObj)
    046                    {
    047                        this.thrower.setPositionAndUpdate(this.posX, this.posY, this.posZ);
    048                        this.thrower.fallDistance = 0.0F;
    049                        this.thrower.attackEntityFrom(DamageSource.fall, 5);
    050                    }
    051                }
    052
    053                this.setDead();
    054            }
    055        }
    056    }