diff options
author | KHobbits <rob@khobbits.co.uk> | 2011-12-17 17:40:47 +0000 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2011-12-17 17:40:47 +0000 |
commit | 556c990eff34a4848fe92afa43f27cd81505f05a (patch) | |
tree | 699abebb1d2eb5cc338c39eb0b2ce17514f11af6 /EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java | |
parent | 618f58c3f38115d9d9bdc790190f8bff8b85c4da (diff) | |
download | Essentials-556c990eff34a4848fe92afa43f27cd81505f05a.tar Essentials-556c990eff34a4848fe92afa43f27cd81505f05a.tar.gz Essentials-556c990eff34a4848fe92afa43f27cd81505f05a.tar.lz Essentials-556c990eff34a4848fe92afa43f27cd81505f05a.tar.xz Essentials-556c990eff34a4848fe92afa43f27cd81505f05a.zip |
EssentialsChat cleaning.
Diffstat (limited to 'EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java')
-rw-r--r-- | EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java new file mode 100644 index 000000000..df3c959f4 --- /dev/null +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsLocalChatEventListener.java @@ -0,0 +1,78 @@ +package com.earth2me.essentials.chat; + +import com.earth2me.essentials.api.IEssentials; +import com.earth2me.essentials.api.IUser; +import com.earth2me.essentials.chat.EssentialsLocalChatEvent; +import org.bukkit.Location; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.event.CustomEventListener; +import org.bukkit.event.Event; +import org.bukkit.event.Listener; + +public class EssentialsLocalChatEventListener extends CustomEventListener implements Listener { + + + protected transient IEssentials ess; + protected final transient Server server; + + public EssentialsLocalChatEventListener(final Server server, final IEssentials ess) + { + this.ess = ess; + this.server = server; + } + + public void onLocalChat(final EssentialsLocalChatEvent event) { + final Player sender = event.getPlayer(); + if (event.getRadius() < 1) + { + return; + } + event.setCancelled(true); + final Location loc = sender.getLocation(); + final World world = loc.getWorld(); + + for (Player onlinePlayer : server.getOnlinePlayers()) + { + String type = "[L]"; + final IUser user = ess.getUser(onlinePlayer); + //TODO: remove reference to op + if (user.isIgnoringPlayer(sender.getName()) && !sender.isOp()) + { + continue; + } + if (!user.equals(sender)) + { + final Location playerLoc = user.getLocation(); + if (playerLoc.getWorld() != world) + { + continue; + } + final double delta = playerLoc.distanceSquared(loc); + + if (delta > event.getRadius()) + { + if (user.isAuthorized("essentials.chat.spy")) + { + type = type.concat("[Spy]"); + } + else + { + continue; + } + } + } + + final String message = String.format(event.getFormat(), type.concat(sender.getDisplayName()), event.getMessage()); + user.sendMessage(message); + } + } + + @Override + public void onCustomEvent(final Event event) { + if (event instanceof EssentialsLocalChatEvent) { + onLocalChat((EssentialsLocalChatEvent) event); + } + } +}
\ No newline at end of file |