From 75d1254dda1c21d2e5a5f4ac0e582fe6f3fdad4e Mon Sep 17 00:00:00 2001 From: Ali Moghnieh Date: Fri, 22 Jul 2016 15:52:53 +0100 Subject: [PATCH] Implement better PM social spy. Resolves #27 --- .../messaging/SimpleMessageRecipient.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java index 9f3654cc0..27ebf3adc 100644 --- a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java +++ b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java @@ -76,6 +76,20 @@ public class SimpleMessageRecipient implements IMessageRecipient { } default: sendMessage(tl("msgFormat", tl("me"), recipient.getDisplayName(), message)); + + // Better Social Spy + User senderUser = getUser(); + if (senderUser != null // not null if player. + && !senderUser.isAuthorized("essentials.chat.spy.exempt")) { + for (User onlineUser : ess.getOnlineUsers()) { + if (onlineUser.isSocialSpyEnabled() + // Don't send socialspy messages to message sender/receiver to prevent spam + && !onlineUser.equals(senderUser) + && !onlineUser.equals(recipient)) { + onlineUser.sendMessage(tl("msgFormat", getDisplayName(), recipient.getDisplayName(), message)); + } + } + } } // If the message was a success, set this sender's reply-recipient to the current recipient. if (messageResponse.isSuccess()) { @@ -90,7 +104,7 @@ public class SimpleMessageRecipient implements IMessageRecipient { return MessageResponse.UNREACHABLE; } - User user = this.parent instanceof User ? (User) this.parent : null; + User user = getUser(); boolean afk = false; if (user != null) { if (user.isIgnoreMsg() @@ -120,6 +134,10 @@ public class SimpleMessageRecipient implements IMessageRecipient { this.lastMessageMs = System.currentTimeMillis(); return afk ? MessageResponse.SUCCESS_BUT_AFK : MessageResponse.SUCCESS; } + + protected User getUser() { + return this.parent instanceof User ? (User) this.parent : null; + } @Override public boolean isReachable() { return this.parent.isReachable();