001    package net.minecraft.entity.projectile;
002    
003    import net.minecraft.entity.EntityLiving;
004    import net.minecraft.entity.monster.EntityBlaze;
005    import net.minecraft.util.DamageSource;
006    import net.minecraft.util.MovingObjectPosition;
007    import net.minecraft.world.World;
008    
009    public class EntitySnowball extends EntityThrowable
010    {
011        public EntitySnowball(World par1World)
012        {
013            super(par1World);
014        }
015    
016        public EntitySnowball(World par1World, EntityLiving par2EntityLiving)
017        {
018            super(par1World, par2EntityLiving);
019        }
020    
021        public EntitySnowball(World par1World, double par2, double par4, double par6)
022        {
023            super(par1World, par2, par4, par6);
024        }
025    
026        /**
027         * Called when this EntityThrowable hits a block or entity.
028         */
029        protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
030        {
031            if (par1MovingObjectPosition.entityHit != null)
032            {
033                byte var2 = 0;
034    
035                if (par1MovingObjectPosition.entityHit instanceof EntityBlaze)
036                {
037                    var2 = 3;
038                }
039    
040                par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), var2);
041            }
042    
043            for (int var3 = 0; var3 < 8; ++var3)
044            {
045                this.worldObj.spawnParticle("snowballpoof", this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D);
046            }
047    
048            if (!this.worldObj.isRemote)
049            {
050                this.setDead();
051            }
052        }
053    }