Browse Source

Fix splash potions not properly affecting the player that threw them.

GJ 12 years ago
parent
commit
d9aad67ca5

+ 11 - 3
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -108,15 +108,23 @@ public class EntityListener implements Listener {
         if (defender instanceof Player) {
             Player defendingPlayer = (Player) defender;
 
+            // TODO: Is this even possible?
             if (!defendingPlayer.isOnline()) {
                 return;
             }
 
-            if (attacker instanceof Player && PartyManager.inSameParty(defendingPlayer, (Player) attacker)) {
-                if (!(Permissions.friendlyFire((Player) attacker) && Permissions.friendlyFire(defendingPlayer))) {
-                    event.setCancelled(true);
+            if (attacker instanceof Player) {
+                Player attackingPlayer = (Player) attacker;
+
+                if (defendingPlayer == attackingPlayer) {
                     return;
                 }
+                else if (PartyManager.inSameParty(defendingPlayer, attackingPlayer)) {
+                    if (!(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) {
+                        event.setCancelled(true);
+                        return;
+                    }
+                }
             }
         }
 

+ 4 - 8
src/main/java/com/gmail/nossr50/skills/utilities/CombatTools.java

@@ -223,9 +223,7 @@ public final class CombatTools {
                         tamingManager.gore(event);
                     }
 
-                    if (target != master) {
-                        startGainXp(mcMMOPlayer, target, SkillType.TAMING);
-                    }
+                    startGainXp(mcMMOPlayer, target, SkillType.TAMING);
                 }
             }
 
@@ -322,10 +320,8 @@ public final class CombatTools {
                 archeryManager.trackArrows(target);
             }
 
-            if (target != shooter) {
-                archeryManager.distanceXpBonus(target);
-                startGainXp(mcMMOPlayer, target, SkillType.ARCHERY);
-            }
+            archeryManager.distanceXpBonus(target);
+            startGainXp(mcMMOPlayer, target, SkillType.ARCHERY);
         }
     }
 
@@ -402,7 +398,7 @@ public final class CombatTools {
         }
 
         for (Entity entity : target.getNearbyEntities(2.5, 2.5, 2.5)) {
-            if ((entity instanceof Player && Misc.isNPCPlayer((Player) entity)) || !(entity instanceof LivingEntity) || !shouldBeAffected(attacker, entity)) {
+            if (Misc.isNPCEntity(entity) || !(entity instanceof LivingEntity) || !shouldBeAffected(attacker, entity)) {
                 continue;
             }