From 9b3838b912d20caac84813ce74647979eeffab54 Mon Sep 17 00:00:00 2001 From: bm01 Date: Tue, 8 May 2012 19:39:12 +0200 Subject: [PATCH] Improved attacker and defender's party check --- .../nossr50/listeners/EntityListener.java | 21 ++++++++++++++----- .../java/com/gmail/nossr50/util/Combat.java | 12 +---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 67ee722e0..2a1a0ba90 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -1,11 +1,14 @@ package com.gmail.nossr50.listeners; import org.bukkit.Material; +import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.entity.TNTPrimed; +import org.bukkit.entity.Tameable; import org.bukkit.entity.Wolf; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -58,14 +61,22 @@ public class EntityListener implements Listener { return; } - Entity defender = event.getEntity(); Entity attacker = event.getDamager(); - if (attacker instanceof Player && defender instanceof Player) { - if (!defender.getWorld().getPVP()) { - return; - } + if (attacker instanceof Projectile) { + attacker = ((Projectile) attacker).getShooter(); + } + else if (attacker instanceof Tameable) { + AnimalTamer animalTamer = ((Tameable) attacker).getOwner(); + if (animalTamer instanceof Player) { + attacker = (Player) animalTamer; + } + } + + Entity defender = event.getEntity(); + + if (attacker instanceof Player && defender instanceof Player) { if (Party.getInstance().inSameParty((Player)defender, (Player)attacker)) { event.setCancelled(true); return; diff --git a/src/main/java/com/gmail/nossr50/util/Combat.java b/src/main/java/com/gmail/nossr50/util/Combat.java index a31310f3f..fbc28a74d 100644 --- a/src/main/java/com/gmail/nossr50/util/Combat.java +++ b/src/main/java/com/gmail/nossr50/util/Combat.java @@ -268,9 +268,7 @@ public class Combat { int damage = event.getDamage(); if (permInstance.archery(attacker) && damage > 0) { - if (permInstance.archeryBonus(attacker)) { - /*Archery needs a damage bonus to be viable in PVP*/ int skillLvl = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY); double dmgBonusPercent = ((skillLvl / 50) * 0.1D); @@ -293,16 +291,8 @@ public class Combat { startGainXp(attacker, PPa, target, SkillType.ARCHERY, pluginx); if (target instanceof Player) { - Player defender = (Player) target; - PlayerProfile PPd = Users.getProfile(defender); - - if (PPa.inParty() && PPd.inParty() && Party.getInstance().inSameParty(defender, attacker)) { - event.setCancelled(true); - return; - } - if (permInstance.daze(attacker)) { - Archery.dazeCheck(defender, attacker); + Archery.dazeCheck((Player) target, attacker); } } }