/// <summary> /// Called when the throwable hits a block or entity. /// </summary> protected override void OnImpact(MovingObjectPosition par1MovingObjectPosition) { if (par1MovingObjectPosition.EntityHit != null) { if (!par1MovingObjectPosition.EntityHit.AttackEntityFrom(DamageSource.CauseThrownDamage(this, Thrower), 0)) { ; } } for (int i = 0; i < 32; i++) { WorldObj.SpawnParticle("portal", PosX, PosY + Rand.NextFloat() * 2, PosZ, Rand.NextGaussian(), 0.0F, Rand.NextGaussian()); } if (!WorldObj.IsRemote) { if (Thrower != null) { Thrower.SetPositionAndUpdate(PosX, PosY, PosZ); Thrower.FallDistance = 0.0F; Thrower.AttackEntityFrom(DamageSource.Fall, 5); } SetDead(); } }
/// <summary> /// Called when the throwable hits a block or entity. /// </summary> protected override void OnImpact(MovingObjectPosition par1MovingObjectPosition) { if (par1MovingObjectPosition.EntityHit != null) { sbyte byte0 = 0; if (par1MovingObjectPosition.EntityHit is EntityBlaze) { byte0 = 3; } if (!par1MovingObjectPosition.EntityHit.AttackEntityFrom(DamageSource.CauseThrownDamage(this, Thrower), byte0)) { ; } } for (int i = 0; i < 8; i++) { WorldObj.SpawnParticle("snowballpoof", PosX, PosY, PosZ, 0.0F, 0.0F, 0.0F); } if (!WorldObj.IsRemote) { SetDead(); } }
/// <summary> /// Called when the throwable hits a block or entity. /// </summary> protected override void OnImpact(MovingObjectPosition par1MovingObjectPosition) { if (par1MovingObjectPosition.EntityHit != null) { if (!par1MovingObjectPosition.EntityHit.AttackEntityFrom(DamageSource.CauseThrownDamage(this, Thrower), 0)) { ; } } if (!WorldObj.IsRemote && Rand.Next(8) == 0) { sbyte byte0 = 1; if (Rand.Next(32) == 0) { byte0 = 4; } for (int j = 0; j < byte0; j++) { EntityChicken entitychicken = new EntityChicken(WorldObj); entitychicken.SetGrowingAge(-24000); entitychicken.SetLocationAndAngles(PosX, PosY, PosZ, RotationYaw, 0.0F); WorldObj.SpawnEntityInWorld(entitychicken); } } for (int i = 0; i < 8; i++) { WorldObj.SpawnParticle("snowballpoof", PosX, PosY, PosZ, 0.0F, 0.0F, 0.0F); } if (!WorldObj.IsRemote) { SetDead(); } }