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    }