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 }