diff --git a/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java b/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java index db84b68..26db535 100644 --- a/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java @@ -211,7 +211,7 @@ public class FlatFileDataStore extends DataStore } catch(Exception ex) { - GriefPrevention.AddLogEntry("Failed to look up UUID for player " + ownerName + "."); + GriefPrevention.AddLogEntry("Error - this is not a valid UUID: " + ownerName + "."); GriefPrevention.AddLogEntry(" Converted land claim to administrative @ " + lesserBoundaryCorner.toString()); } } diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 3e1a436..c62aeb6 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -93,6 +93,12 @@ class PlayerEventHandler implements Listener event.setCancelled(this.handlePlayerChat(player, message, event)); } + //last chat message shown, regardless of who sent it + private String lastChatMessage = ""; + + //number of identical messages in a row + private int duplicateMessageCount = 0; + //returns true if the message should be sent, false if it should be muted private boolean handlePlayerChat(Player player, String message, PlayerEvent event) { @@ -144,6 +150,19 @@ class PlayerEventHandler implements Listener } } + //always mute an exact match to the last chat message + if(message.equals(this.lastChatMessage)) + { + playerData.spamCount += ++this.duplicateMessageCount; + spam = true; + muted = true; + } + else + { + this.lastChatMessage = message; + this.duplicateMessageCount = 0; + } + //where other types of spam are concerned, casing isn't significant message = message.toLowerCase();