diff options
author | snowleo <schneeleo@gmail.com> | 2012-08-07 16:03:12 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2012-08-07 16:03:39 +0200 |
commit | a1080e8487ef72833cb40c8f4cb3bc39c3b5c543 (patch) | |
tree | 83c80c71398dc0f6f58e5ebb202e1dd9772889d9 /EssentialsChat | |
parent | 3c87d91186677e3742005b9ee22e662721731649 (diff) | |
download | Essentials-a1080e8487ef72833cb40c8f4cb3bc39c3b5c543.tar Essentials-a1080e8487ef72833cb40c8f4cb3bc39c3b5c543.tar.gz Essentials-a1080e8487ef72833cb40c8f4cb3bc39c3b5c543.tar.lz Essentials-a1080e8487ef72833cb40c8f4cb3bc39c3b5c543.tar.xz Essentials-a1080e8487ef72833cb40c8f4cb3bc39c3b5c543.zip |
Prevent errors in listeners affecting EssentialsChat
Diffstat (limited to 'EssentialsChat')
-rw-r--r-- | EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java index 9dce1169c..1ebb6389c 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java @@ -6,6 +6,7 @@ import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import java.util.Map; +import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Location; import org.bukkit.Server; @@ -46,11 +47,25 @@ public abstract class EssentialsChatPlayer implements Listener } synchronized (listeners) { - for (IEssentialsChatListener listener : listeners.values()) + for (Map.Entry<String, IEssentialsChatListener> listener : listeners.entrySet()) { - if (listener.shouldHandleThisChat(event)) + try { - return true; + if (listener.getValue().shouldHandleThisChat(event)) + { + return true; + } + } + catch (Throwable t) + { + if (ess.getSettings().isDebug()) + { + logger.log(Level.WARNING, "Error with EssentialsChat listener of " + listener.getKey() + ": " + t.getMessage(), t); + } + else + { + logger.log(Level.WARNING, "Error with EssentialsChat listener of " + listener.getKey() + ": " + t.getMessage()); + } } } } @@ -160,9 +175,23 @@ public abstract class EssentialsChatPlayer implements Listener String message = String.format(event.getFormat(), type.concat(sender.getDisplayName()), event.getMessage()); synchronized (listeners) { - for (IEssentialsChatListener listener : listeners.values()) + for (Map.Entry<String, IEssentialsChatListener> listener : listeners.entrySet()) { - message = listener.modifyMessage(event, onlinePlayer, message); + try + { + message = listener.getValue().modifyMessage(event, onlinePlayer, message); + } + catch (Throwable t) + { + if (ess.getSettings().isDebug()) + { + logger.log(Level.WARNING, "Error with EssentialsChat listener of " + listener.getKey() + ": " + t.getMessage(), t); + } + else + { + logger.log(Level.WARNING, "Error with EssentialsChat listener of " + listener.getKey() + ": " + t.getMessage()); + } + } } } onlineUser.sendMessage(message); |