From ac3ff4590edc8b69a53ba0842c896c58e5f52eba Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Fri, 6 Sep 2013 11:35:07 +0200 Subject: [PATCH] Make recipient event work for console. Add in some more debug in mstore. --- README.md | 2 +- .../massivecraft/mcore/InternalListener.java | 28 +++++++++++++++---- src/com/massivecraft/mcore/store/Coll.java | 15 +++++++++- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 31e4cb26..14a7c30a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ ![MCore Logotype](https://raw.github.com/MassiveCraft/mcore/master/media/logo300.png)
-http://massivecraft.com/mcore
\ No newline at end of file +http://massivecraft.com/mcore diff --git a/src/com/massivecraft/mcore/InternalListener.java b/src/com/massivecraft/mcore/InternalListener.java index c15a00b6..f308a412 100644 --- a/src/com/massivecraft/mcore/InternalListener.java +++ b/src/com/massivecraft/mcore/InternalListener.java @@ -68,11 +68,11 @@ public class InternalListener implements Listener for (CommandSender recipient : recipients) { // Run the event for this unique recipient - MCorePlayerToRecipientChatEvent event = new MCorePlayerToRecipientChatEvent(sender, recipient, message, format); - event.run(); + MCorePlayerToRecipientChatEvent recipientEvent = new MCorePlayerToRecipientChatEvent(sender, recipient, message, format); + recipientEvent.run(); // Format and send with the format and message from this recipient's own event. - String recipientMessage = String.format(event.getFormat(), sender.getDisplayName(), event.getMessage()); + String recipientMessage = String.format(recipientEvent.getFormat(), sender.getDisplayName(), recipientEvent.getMessage()); recipient.sendMessage(recipientMessage); } } @@ -84,16 +84,32 @@ public class InternalListener implements Listener if (!MCoreConf.get().isUsingRecipientChatEvent()) return; // Prepare vars + MCorePlayerToRecipientChatEvent recipientEvent; final Player sender = event.getPlayer(); String message = event.getMessage(); String format = event.getFormat(); // Pick the recipients to avoid the message getting sent without canceling the event. - Set recipients = new HashSet(event.getRecipients()); + Set players = new HashSet(event.getRecipients()); event.getRecipients().clear(); - // Do it! - recipientChat(sender, message, format, recipients); + // For each of the players + for (Player recipient : players) + { + // Run the event for this unique recipient + recipientEvent = new MCorePlayerToRecipientChatEvent(sender, recipient, message, format); + recipientEvent.run(); + + // Format and send with the format and message from this recipient's own event. + String recipientMessage = String.format(recipientEvent.getFormat(), sender.getDisplayName(), recipientEvent.getMessage()); + recipient.sendMessage(recipientMessage); + } + + // For the console + recipientEvent = new MCorePlayerToRecipientChatEvent(sender, Bukkit.getConsoleSender(), message, format); + recipientEvent.run(); + event.setMessage(recipientEvent.getMessage()); + event.setFormat(recipientEvent.getFormat()); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore/store/Coll.java b/src/com/massivecraft/mcore/store/Coll.java index 0a93d1a9..71dd9426 100644 --- a/src/com/massivecraft/mcore/store/Coll.java +++ b/src/com/massivecraft/mcore/store/Coll.java @@ -609,7 +609,20 @@ public class Coll implements CollInterface protected boolean examineHasLocalAlter(String id, E entity) { JsonElement lastRaw = this.lastRaw.get(id); - JsonElement currentRaw = this.getGson().toJsonTree(entity, this.getEntityClass()); + JsonElement currentRaw = null; + + try + { + currentRaw = this.getGson().toJsonTree(entity, this.getEntityClass()); + } + catch (Exception e) + { + MCore.get().log(Txt.parse("Database examineHasLocalAlter failed convert current entity to JSON tree.")); + MCore.get().log(Txt.parse("Error: %s", e.getMessage())); + MCore.get().log(Txt.parse("Entity: %s", id)); + MCore.get().log(Txt.parse("Collection: %s", this.getName())); + throw e; + } return !MStore.equal(lastRaw, currentRaw); }