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 }