Forráskód Böngészése

Reduce code duplication. Also verify that our target is alive before trying to damage them.

Fixes #1403
GJ 11 éve
szülő
commit
73d0b377ae

+ 9 - 16
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -348,18 +348,7 @@ public final class CombatUtils {
      * @param damage Amount of damage to attempt to do
      */
     public static void dealDamage(LivingEntity target, double damage) {
-        if (Config.getInstance().getEventCallbackEnabled()) {
-            EntityDamageEvent ede = new FakeEntityDamageEvent(target, DamageCause.CUSTOM, damage);
-            mcMMO.p.getServer().getPluginManager().callEvent(ede);
-
-            if (ede.isCancelled()) {
-                return;
-            }
-
-            damage = ede.getDamage();
-        }
-
-        target.damage(damage);
+        dealDamage(target, damage, DamageCause.CUSTOM, null);
     }
 
     /**
@@ -381,15 +370,19 @@ public final class CombatUtils {
      * @param attacker Player to pass to event as damager
      */
     public static void dealDamage(LivingEntity target, double damage, DamageCause cause, Entity attacker) {
+        if (target.isDead()) {
+            return;
+        }
+
         if (Config.getInstance().getEventCallbackEnabled()) {
-            EntityDamageEvent ede = new FakeEntityDamageByEntityEvent(attacker, target, cause, damage);
-            mcMMO.p.getServer().getPluginManager().callEvent(ede);
+            EntityDamageEvent damageEvent = attacker == null ? new FakeEntityDamageEvent(target, cause, damage) : new FakeEntityDamageByEntityEvent(attacker, target, cause, damage);
+            mcMMO.p.getServer().getPluginManager().callEvent(damageEvent);
 
-            if (ede.isCancelled()) {
+            if (damageEvent.isCancelled()) {
                 return;
             }
 
-            damage = ede.getDamage();
+            damage = damageEvent.getDamage();
         }
 
         target.damage(damage);