Refactor EntityDamageEvents. Adds BUKKIT-1944 & BUKKIT-3684

This commit is contained in:
feildmaster
2013-04-09 22:25:06 -05:00
parent 535a85a5b0
commit 77d1524b3d
8 changed files with 116 additions and 155 deletions

View File

@@ -322,17 +322,9 @@ public abstract class EntityLiving extends Entity {
this.aR();
}
// CraftBukkit start
if (this.isAlive() && this.inBlock() && !(this instanceof EntityEnderDragon)) { // EnderDragon's don't suffocate.
EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.SUFFOCATION, 1);
this.world.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
event.getEntity().setLastDamageCause(event);
this.damageEntity(DamageSource.STUCK, event.getDamage());
}
if (this.isAlive() && this.inBlock()) {
this.damageEntity(DamageSource.STUCK, 1);
}
// CraftBukkit end
if (this.isFireproof() || this.world.isStatic) {
this.extinguish();
@@ -353,15 +345,7 @@ public abstract class EntityLiving extends Entity {
this.world.addParticle("bubble", this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, this.motX, this.motY, this.motZ);
}
// CraftBukkit start
EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.DROWNING, 2);
this.world.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
event.getEntity().setLastDamageCause(event);
this.damageEntity(DamageSource.DROWN, event.getDamage());
}
// CraftBukkit end
this.damageEntity(DamageSource.DROWN, 2);
}
this.extinguish();
@@ -690,8 +674,8 @@ public abstract class EntityLiving extends Entity {
boolean flag = true;
// CraftBukkit start
if (damagesource instanceof EntityDamageSource) {
EntityDamageEvent event = CraftEventFactory.handleEntityDamageEvent(this, damagesource, i);
EntityDamageEvent event = CraftEventFactory.handleEntityDamageEvent(this, damagesource, i);
if (event != null) {
if (event.isCancelled()) {
return false;
}
@@ -970,25 +954,26 @@ public abstract class EntityLiving extends Entity {
super.a(f);
int i = MathHelper.f(f - 3.0F);
// CraftBukkit start
if (i > 0) {
// CraftBukkit start
EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.FALL, i);
this.world.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
EntityDamageEvent event = CraftEventFactory.callEntityDamageEvent(null, this, EntityDamageEvent.DamageCause.FALL, i);
if (!event.isCancelled()) {
i = event.getDamage();
if (i > 4) {
this.makeSound("damage.fallbig", 1.0F, 1.0F);
} else {
this.makeSound("damage.fallsmall", 1.0F, 1.0F);
if (i > 0) {
this.getBukkitEntity().setLastDamageCause(event);
}
this.getBukkitEntity().setLastDamageCause(event);
this.damageEntity(DamageSource.FALL, i);
}
// CraftBukkit end
}
// CraftBukkit end
if (i > 0) {
if (i > 4) {
this.makeSound("damage.fallbig", 1.0F, 1.0F);
} else {
this.makeSound("damage.fallsmall", 1.0F, 1.0F);
}
this.damageEntity(DamageSource.FALL, i);
int j = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height), MathHelper.floor(this.locZ));
if (j > 0) {
@@ -1633,17 +1618,7 @@ public abstract class EntityLiving extends Entity {
}
protected void B() {
// CraftBukkit start
EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(null, this.getBukkitEntity(), EntityDamageEvent.DamageCause.VOID, 4);
this.world.getServer().getPluginManager().callEvent(event);
if (event.isCancelled() || event.getDamage() == 0) {
return;
}
event.getEntity().setLastDamageCause(event);
this.damageEntity(DamageSource.OUT_OF_WORLD, event.getDamage());
// CraftBukkit end
this.damageEntity(DamageSource.OUT_OF_WORLD, 4);
}
public Vec3D Y() {