From c2b08079d7e182cbad0132210ba74003ea5b07fd Mon Sep 17 00:00:00 2001 From: KHobbits Date: Wed, 18 Jan 2012 22:53:39 +0000 Subject: Reduce duplicate calls in EssentialsChat Should cut the time down a little. --- .../essentials/chat/EssentialsChatPlayer.java | 83 +++++++++++----------- 1 file changed, 43 insertions(+), 40 deletions(-) (limited to 'EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java') diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java index 432e2309c..30abe9cf8 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java @@ -22,12 +22,17 @@ public abstract class EssentialsChatPlayer extends PlayerListener protected final static Logger logger = Logger.getLogger("Minecraft"); protected final transient Map listeners; protected final transient Server server; + protected final transient Map chatStorage; - public EssentialsChatPlayer(Server server, IEssentials ess, Map listeners) + public EssentialsChatPlayer(final Server server, + final IEssentials ess, + final Map listeners, + final Map chatStorage) { this.ess = ess; this.listeners = listeners; this.server = server; + this.chatStorage = chatStorage; } public void onPlayerChat(final PlayerChatEvent event) @@ -35,11 +40,6 @@ public abstract class EssentialsChatPlayer extends PlayerListener } public boolean isAborted(final PlayerChatEvent event) - { - return isAborted(event, "chat"); - } - - public boolean isAborted(final PlayerChatEvent event, final String command) { if (event.isCancelled()) { @@ -52,13 +52,6 @@ public abstract class EssentialsChatPlayer extends PlayerListener return true; } } - - final User user = ess.getUser(event.getPlayer()); - if (!isAffordableFor(user, command)) - { - event.setCancelled(true); - return true; - } return false; } @@ -75,65 +68,75 @@ public abstract class EssentialsChatPlayer extends PlayerListener } } - protected void charge(final CommandSender sender, final String command) throws ChargeException + public ChatStore getChatStore(final PlayerChatEvent event) { - if (sender instanceof Player) - { - final Trade charge = new Trade(command, ess); - charge.charge(ess.getUser((Player)sender)); - } + return chatStorage.get(event); + } + + public void setChatStore(final PlayerChatEvent event, final ChatStore chatStore) + { + chatStorage.put(event, chatStore); + } + + public ChatStore delChatStore(final PlayerChatEvent event) + { + return chatStorage.remove(event); } - protected boolean isAffordableFor(final CommandSender sender, final String command) + protected void charge(final User user, final Trade charge) throws ChargeException { - if (sender instanceof Player) + charge.charge(user); + } + + protected boolean charge(final PlayerChatEvent event, final ChatStore chatStore) + { + try { - try - { - final Trade charge = new Trade(command, ess); - charge.isAffordableFor(ess.getUser((Player)sender)); - } - catch (ChargeException e) - { - return false; - } + charge(chatStore.getUser(), chatStore.getCharge()); } - else + catch (ChargeException e) { + ess.showError(chatStore.getUser(), e, chatStore.getLongType()); + event.setCancelled(true); return false; } - return true; } - protected void sendLocalChat(final User sender, final long radius, final PlayerChatEvent event) + protected void sendLocalChat(final PlayerChatEvent event, final ChatStore chatStore) { event.setCancelled(true); + final User sender = chatStore.getUser(); logger.info(_("localFormat", sender.getName(), event.getMessage())); final Location loc = sender.getLocation(); final World world = loc.getWorld(); + if (charge(event, chatStore) == false) + { + return; + } + for (Player onlinePlayer : server.getOnlinePlayers()) { String type = "[L]"; - final User user = ess.getUser(onlinePlayer); + final User onlineUser = ess.getUser(onlinePlayer); //TODO: remove reference to op - if (user.isIgnoredPlayer(sender.getName()) && !sender.isOp()) + if (onlineUser.isIgnoredPlayer(sender.getName()) && !sender.isOp()) { continue; } - if (!user.equals(sender)) + if (!onlineUser.equals(sender)) { - final Location playerLoc = user.getLocation(); + final Location playerLoc = onlineUser.getLocation(); if (playerLoc.getWorld() != world) { continue; } final double delta = playerLoc.distanceSquared(loc); - if (delta > radius) + if (delta > chatStore.getRadius()) { - if (user.isAuthorized("essentials.chat.spy")) + if (onlineUser.isAuthorized("essentials.chat.spy")) { type = type.concat("[Spy]"); } @@ -149,7 +152,7 @@ public abstract class EssentialsChatPlayer extends PlayerListener { message = listener.modifyMessage(event, onlinePlayer, message); } - user.sendMessage(message); + onlineUser.sendMessage(message); } } } -- cgit v1.2.3