From 2a7755d2a7d4fb7869d2b758f3c182a40972ca46 Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Thu, 16 Jul 2015 21:00:53 -0700 Subject: [PATCH] Don't eavesdrop when target can eavesdrop. --- .../GriefPrevention/PlayerEventHandler.java | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 163ceed..3e64713 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -454,31 +454,37 @@ class PlayerEventHandler implements Listener //if a whisper if(GriefPrevention.instance.config_eavesdrop_whisperCommands.contains(command) && args.length > 1) { - //if eavesdrop enabled, eavesdrop - if(GriefPrevention.instance.config_whisperNotifications && !event.getPlayer().hasPermission("griefprevention.eavesdrop")) + //determine target player, might be NULL + Player targetPlayer = GriefPrevention.instance.getServer().getPlayer(args[1]); + + //if eavesdrop enabled and sender doesn't have the eavesdrop permission, eavesdrop + if(GriefPrevention.instance.config_whisperNotifications && !player.hasPermission("griefprevention.eavesdrop")) { - StringBuilder logMessageBuilder = new StringBuilder(); - logMessageBuilder.append("[[").append(event.getPlayer().getName()).append("]] "); - - for(int i = 1; i < args.length; i++) - { - logMessageBuilder.append(args[i]).append(" "); - } - - String logMessage = logMessageBuilder.toString(); - - Collection players = (Collection)GriefPrevention.instance.getServer().getOnlinePlayers(); - for(Player onlinePlayer : players) - { - if(onlinePlayer.hasPermission("griefprevention.eavesdrop") && !onlinePlayer.getName().equalsIgnoreCase(args[1])) - { - onlinePlayer.sendMessage(ChatColor.GRAY + logMessage); - } - } + //except for when the recipient has eavesdrop permission + if(targetPlayer == null || targetPlayer.hasPermission("griefprevention.eavesdrop")) + { + StringBuilder logMessageBuilder = new StringBuilder(); + logMessageBuilder.append("[[").append(event.getPlayer().getName()).append("]] "); + + for(int i = 1; i < args.length; i++) + { + logMessageBuilder.append(args[i]).append(" "); + } + + String logMessage = logMessageBuilder.toString(); + + Collection players = (Collection)GriefPrevention.instance.getServer().getOnlinePlayers(); + for(Player onlinePlayer : players) + { + if(onlinePlayer.hasPermission("griefprevention.eavesdrop") && !onlinePlayer.equals(targetPlayer)) + { + onlinePlayer.sendMessage(ChatColor.GRAY + logMessage); + } + } + } } - //determine target player - Player targetPlayer = GriefPrevention.instance.getServer().getPlayer(args[1]); + //ignore feature if(targetPlayer != null && targetPlayer.isOnline()) { //if either is ignoring the other, cancel this command