From b0d84cf5e4202ef4df83aad3bb03b21f0091582e Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 18 Sep 2022 02:22:11 +0200 Subject: [PATCH] Hopefully fixed sending one plugin message per player online on the server the plugin message originated from --- .../com/alttd/datalock/EventListener.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/com/alttd/datalock/EventListener.java b/src/main/java/com/alttd/datalock/EventListener.java index 0be0d7f..5688252 100644 --- a/src/main/java/com/alttd/datalock/EventListener.java +++ b/src/main/java/com/alttd/datalock/EventListener.java @@ -129,6 +129,9 @@ public class EventListener { return; } + if (!isValid(channel.toLowerCase(), data)) + return; + if (Config.DEBUG) Logger.info("Plugin message channel: [%]", channel.toLowerCase()); @@ -139,6 +142,23 @@ public class EventListener { } } + private final HashMap validMap = new HashMap<>(); + private synchronized boolean isValid(String channel, String data) { + String key = channel + data; + long currentTime = new Date().getTime(); + if (validMap.containsKey(key)) { + Long time = validMap.get(key); + if (time < (currentTime - 1000)) { + validMap.remove(key); + return true; + } + return false; + } else { + validMap.put(key, currentTime); + return true; + } + } + private void tryLock(ChannelIdentifier identifier, HashSet lockSet, String data, ServerConnection serverConnection) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF("try-lock-result");