summaryrefslogtreecommitdiffstats
path: root/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2012-01-18 22:53:39 +0000
committerKHobbits <rob@khobbits.co.uk>2012-01-18 22:53:39 +0000
commitcd8cc631134de1ece1aab89c0b01d5a63dda1cfd (patch)
tree2a66d7070b71ed0d22e2f0681e4eff2517891cff /EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
parent947bee98a0eae2da2448923d450ebd4ca7d81157 (diff)
downloadEssentials-cd8cc631134de1ece1aab89c0b01d5a63dda1cfd.tar
Essentials-cd8cc631134de1ece1aab89c0b01d5a63dda1cfd.tar.gz
Essentials-cd8cc631134de1ece1aab89c0b01d5a63dda1cfd.tar.lz
Essentials-cd8cc631134de1ece1aab89c0b01d5a63dda1cfd.tar.xz
Essentials-cd8cc631134de1ece1aab89c0b01d5a63dda1cfd.zip
Reduce duplicate calls in EssentialsChat
Should cut the time down a little.
Diffstat (limited to 'EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java')
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java83
1 files changed, 43 insertions, 40 deletions
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<String, IEssentialsChatListener> listeners;
protected final transient Server server;
+ protected final transient Map<PlayerChatEvent, ChatStore> chatStorage;
- public EssentialsChatPlayer(Server server, IEssentials ess, Map<String, IEssentialsChatListener> listeners)
+ public EssentialsChatPlayer(final Server server,
+ final IEssentials ess,
+ final Map<String, IEssentialsChatListener> listeners,
+ final Map<PlayerChatEvent, ChatStore> chatStorage)
{
this.ess = ess;
this.listeners = listeners;
this.server = server;
+ this.chatStorage = chatStorage;
}
public void onPlayerChat(final PlayerChatEvent event)
@@ -36,11 +41,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())
{
return true;
@@ -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);
}
}
}