001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 006 public class EntityWitherSkull extends EntityFireball 007 { 008 public EntityWitherSkull(World par1World) 009 { 010 super(par1World); 011 this.setSize(0.3125F, 0.3125F); 012 } 013 014 public EntityWitherSkull(World par1World, EntityLiving par2EntityLiving, double par3, double par5, double par7) 015 { 016 super(par1World, par2EntityLiving, par3, par5, par7); 017 this.setSize(0.3125F, 0.3125F); 018 } 019 020 protected float func_82341_c() 021 { 022 return this.func_82342_d() ? 0.73F : super.func_82341_c(); 023 } 024 025 @SideOnly(Side.CLIENT) 026 public EntityWitherSkull(World par1World, double par2, double par4, double par6, double par8, double par10, double par12) 027 { 028 super(par1World, par2, par4, par6, par8, par10, par12); 029 this.setSize(0.3125F, 0.3125F); 030 } 031 032 /** 033 * Returns true if the entity is on fire. Used by render to add the fire effect on rendering. 034 */ 035 public boolean isBurning() 036 { 037 return false; 038 } 039 040 public float func_82146_a(Explosion par1Explosion, Block par2Block, int par3, int par4, int par5) 041 { 042 float var6 = super.func_82146_a(par1Explosion, par2Block, par3, par4, par5); 043 044 if (this.func_82342_d() && par2Block != Block.bedrock) 045 { 046 var6 = Math.min(0.8F, var6); 047 } 048 049 return var6; 050 } 051 052 /** 053 * Called when this EntityFireball hits a block or entity. 054 */ 055 protected void onImpact(MovingObjectPosition par1MovingObjectPosition) 056 { 057 if (!this.worldObj.isRemote) 058 { 059 if (par1MovingObjectPosition.entityHit != null) 060 { 061 if (this.shootingEntity != null) 062 { 063 if (par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeMobDamage(this.shootingEntity), 8) && !par1MovingObjectPosition.entityHit.isEntityAlive()) 064 { 065 this.shootingEntity.heal(5); 066 } 067 } 068 else 069 { 070 par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.magic, 5); 071 } 072 073 if (par1MovingObjectPosition.entityHit instanceof EntityLiving) 074 { 075 byte var2 = 0; 076 077 if (this.worldObj.difficultySetting > 1) 078 { 079 if (this.worldObj.difficultySetting == 2) 080 { 081 var2 = 10; 082 } 083 else if (this.worldObj.difficultySetting == 3) 084 { 085 var2 = 40; 086 } 087 } 088 089 if (var2 > 0) 090 { 091 ((EntityLiving)par1MovingObjectPosition.entityHit).addPotionEffect(new PotionEffect(Potion.field_82731_v.id, 20 * var2, 1)); 092 } 093 } 094 } 095 096 this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 1.0F, false, this.worldObj.func_82736_K().func_82766_b("mobGriefing")); 097 this.setDead(); 098 } 099 } 100 101 /** 102 * Returns true if other Entities should be prevented from moving through this Entity. 103 */ 104 public boolean canBeCollidedWith() 105 { 106 return false; 107 } 108 109 /** 110 * Called when the entity is attacked. 111 */ 112 public boolean attackEntityFrom(DamageSource par1DamageSource, int par2) 113 { 114 return false; 115 } 116 117 protected void entityInit() 118 { 119 this.dataWatcher.addObject(10, Byte.valueOf((byte)0)); 120 } 121 122 public boolean func_82342_d() 123 { 124 return this.dataWatcher.getWatchableObjectByte(10) == 1; 125 } 126 127 public void func_82343_e(boolean par1) 128 { 129 this.dataWatcher.updateObject(10, Byte.valueOf((byte)(par1 ? 1 : 0))); 130 } 131 }