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    }