From 1e29ad14367a0236f593dbc6f17bb127902cb21c Mon Sep 17 00:00:00 2001 From: PikaMug Date: Wed, 31 Jul 2019 12:46:31 -0400 Subject: [PATCH] Check for Citizens prior to player death, fixes #886 --- .../main/java/me/blackvein/quests/Quests.java | 11 ++++++++++ .../quests/listeners/PlayerListener.java | 21 ++++++++++--------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/main/src/main/java/me/blackvein/quests/Quests.java b/main/src/main/java/me/blackvein/quests/Quests.java index e32204ed7..d7ae845a0 100644 --- a/main/src/main/java/me/blackvein/quests/Quests.java +++ b/main/src/main/java/me/blackvein/quests/Quests.java @@ -3280,11 +3280,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener return false; } + /** + * Checks if player can use Quests + * + * @param uuid the entity UUID to be checked + * @return {@code true} if entity is a Player that has permission + */ + public boolean canUseQuests(UUID uuid) { + return !checkQuester(uuid); + } + /** * Checks if player CANNOT use Quests * * @param uuid the entity UUID to be checked * @return {@code true} if entity has no permission or is not a player + * @deprecated Use #canUseQuests */ public boolean checkQuester(UUID uuid) { if (!(Bukkit.getPlayer(uuid) instanceof Player)) { diff --git a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java index 6a76814c3..38830ec09 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java @@ -703,7 +703,7 @@ public class PlayerListener implements Listener { } /** - * Checks if damager is blacklisted. Ensures damager is Player and not NPC. Kills target Player if objective exists + * Checks if damager is blacklisted. Ensures damager and target are Player and not NPC. Kills target Player if objective exists * * @param damager the attacking entity * @param target the entity being attacked @@ -713,15 +713,16 @@ public class PlayerListener implements Listener { if (plugin.checkQuester(damager.getUniqueId()) == true) { return; } - //Ensure damager is player AND not an NPC - if (damager instanceof Player && !CitizensAPI.getNPCRegistry().isNPC(damager)) { - //If target is player AND not an NPC... - if (target instanceof Player && !CitizensAPI.getNPCRegistry().isNPC(target)) { - Quester quester = plugin.getQuester(damager.getUniqueId()); - for (Quest quest : quester.getCurrentQuests().keySet()) { - if (quester.containsObjective(quest, "killPlayer")) { - quester.killPlayer(quest, (Player)target); - } + if (damager instanceof Player && target instanceof Player) { + if (plugin.getDependencies().getCitizens() != null) { + if (CitizensAPI.getNPCRegistry().isNPC(damager) && CitizensAPI.getNPCRegistry().isNPC(target)) { + return; + } + } + Quester quester = plugin.getQuester(damager.getUniqueId()); + for (Quest quest : quester.getCurrentQuests().keySet()) { + if (quester.containsObjective(quest, "killPlayer")) { + quester.killPlayer(quest, (Player)target); } } }