    001    package net.minecraft.entity.projectile;
    002
    003    import net.minecraft.block.Block;
    004    import net.minecraft.entity.EntityLiving;
    005    import net.minecraft.util.DamageSource;
    006    import net.minecraft.util.MovingObjectPosition;
    007    import net.minecraft.world.World;
    008
    009    public class EntitySmallFireball extends EntityFireball
    010    {
    011        public EntitySmallFireball(World par1World)
    012        {
    013            super(par1World);
    014            this.setSize(0.3125F, 0.3125F);
    015        }
    016
    017        public EntitySmallFireball(World par1World, EntityLiving par2EntityLiving, double par3, double par5, double par7)
    018        {
    019            super(par1World, par2EntityLiving, par3, par5, par7);
    020            this.setSize(0.3125F, 0.3125F);
    021        }
    022
    023        public EntitySmallFireball(World par1World, double par2, double par4, double par6, double par8, double par10, double par12)
    024        {
    025            super(par1World, par2, par4, par6, par8, par10, par12);
    026            this.setSize(0.3125F, 0.3125F);
    027        }
    028
    029        /**
    030         * Called when this EntityFireball hits a block or entity.
    031         */
    032        protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
    033        {
    034            if (!this.worldObj.isRemote)
    035            {
    036                if (par1MovingObjectPosition.entityHit != null)
    037                {
    038                    if (!par1MovingObjectPosition.entityHit.isImmuneToFire() && par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeFireballDamage(this, this.shootingEntity), 5))
    039                    {
    040                        par1MovingObjectPosition.entityHit.setFire(5);
    041                    }
    042                }
    043                else
    044                {
    045                    int var2 = par1MovingObjectPosition.blockX;
    046                    int var3 = par1MovingObjectPosition.blockY;
    047                    int var4 = par1MovingObjectPosition.blockZ;
    048
    049                    switch (par1MovingObjectPosition.sideHit)
    050                    {
    051                        case 0:
    052                            --var3;
    053                            break;
    054                        case 1:
    055                            ++var3;
    056                            break;
    057                        case 2:
    058                            --var4;
    059                            break;
    060                        case 3:
    061                            ++var4;
    062                            break;
    063                        case 4:
    064                            --var2;
    065                            break;
    066                        case 5:
    067                            ++var2;
    068                    }
    069
    070                    if (this.worldObj.isAirBlock(var2, var3, var4))
    071                    {
    072                        this.worldObj.setBlockWithNotify(var2, var3, var4, Block.fire.blockID);
    073                    }
    074                }
    075
    076                this.setDead();
    077            }
    078        }
    079
    080        /**
    081         * Returns true if other Entities should be prevented from moving through this Entity.
    082         */
    083        public boolean canBeCollidedWith()
    084        {
    085            return false;
    086        }
    087
    088        /**
    089         * Called when the entity is attacked.
    090         */
    091        public boolean attackEntityFrom(DamageSource par1DamageSource, int par2)
    092        {
    093            return false;
    094        }
    095    }