diff options
author | ementalo <ementalodev@gmx.co.uk> | 2012-07-17 12:26:55 +0100 |
---|---|---|
committer | ementalo <ementalodev@gmx.co.uk> | 2012-07-17 14:21:03 +0100 |
commit | a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3 (patch) | |
tree | 2aa10b6300f6c8d3cb2b298c124180fade74857a /EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java | |
parent | 3c385e69271dfe8530fadc3f67e13ee495e4b0e1 (diff) | |
parent | 9f05e43ecf8e6e1a8fcaef757678e762f0d82573 (diff) | |
download | Essentials-a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3.tar Essentials-a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3.tar.gz Essentials-a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3.tar.lz Essentials-a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3.tar.xz Essentials-a661bce7b3de3f53e2b7b79c1283f0affa6fe9c3.zip |
Merge of server-layer branch
Diffstat (limited to 'EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java')
-rw-r--r-- | EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java b/EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java new file mode 100644 index 000000000..be7b20ba6 --- /dev/null +++ b/EssentialsChat/src/net/ess3/chat/EssentialsLocalChatEventListener.java @@ -0,0 +1,70 @@ +package net.ess3.chat; + +import static net.ess3.I18n._; +import net.ess3.api.IEssentials; +import net.ess3.api.IUser; +import net.ess3.permissions.Permissions; +import java.util.logging.Logger; +import org.bukkit.Location; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + + +public class EssentialsLocalChatEventListener 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; + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onLocalChat(final EssentialsLocalChatEvent event) + { + final Player sender = event.getPlayer(); + final Location loc = sender.getLocation(); + final World world = loc.getWorld(); + + for (Player onlinePlayer : server.getOnlinePlayers()) + { + String type = _("chatTypeLocal"); + final IUser user = ess.getUser(onlinePlayer); + if (user.isIgnoringPlayer(ess.getUser(sender))) + { + continue; + } + if (!user.equals(sender)) + { + boolean abort = false; + final Location playerLoc = user.getLocation(); + if (playerLoc.getWorld() != world) + { + abort = true; + } + final double delta = playerLoc.distanceSquared(loc); + + if (delta > event.getRadius()) + { + abort = true; + } + + if (abort) + { + if (ChatPermissions.getPermission("spy").isAuthorized(user)) + { + type = type.concat(_("chatTypeSpy")); + } + } + } + final String message = type.concat(String.format(event.getFormat(), sender.getDisplayName(), event.getMessage())); + user.sendMessage(message); + } + } +}
\ No newline at end of file |