From 54133cd75e53d67e431a36669f164eabd3b80c81 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 7 Aug 2012 16:03:12 +0200 Subject: Prevent errors in listeners affecting EssentialsChat --- .../essentials/chat/EssentialsChatPlayer.java | 39 +++++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) (limited to 'EssentialsChat/src') 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 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 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); -- cgit v1.2.3