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