diff --git a/build.gradle b/build.gradle index 6c19e3e..7331481 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'com.zerohighdef' -version = '0.2.0' +version = '0.2.1' sourceCompatibility = '8' diff --git a/src/main/java/com/zerohighdef/hush/Hush.java b/src/main/java/com/zerohighdef/hush/Hush.java index 6bba441..76092da 100644 --- a/src/main/java/com/zerohighdef/hush/Hush.java +++ b/src/main/java/com/zerohighdef/hush/Hush.java @@ -3,17 +3,17 @@ package com.zerohighdef.hush; import com.zerohighdef.hush.commands.MainCommand; import com.zerohighdef.hush.listeners.HushAsyncChatListener; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.time.OffsetDateTime; +import java.util.*; import java.util.logging.Logger; public final class Hush extends JavaPlugin { private final Logger log = Logger.getLogger("Minecraft"); private HashMap> watchLists; + private final HashMap cooldowns = new HashMap<>(); @Override public void onEnable() { @@ -57,4 +57,17 @@ public final class Hush extends JavaPlugin { public Map> getWatchLists() { return watchLists; } + + public void addCoolDown(Player player) { + cooldowns.put(player.getUniqueId(), OffsetDateTime.now()); + } + + public boolean isInCoolDown(Player player) { + if (cooldowns.containsKey(player.getUniqueId())) { + int cooldownTime = getConfig().getInt("cooldown", 5); + OffsetDateTime now = OffsetDateTime.now(); + return now.minusMinutes(cooldownTime).compareTo(cooldowns.get(player.getUniqueId())) < 0; + } + return false; + } } diff --git a/src/main/java/com/zerohighdef/hush/listeners/HushAsyncChatListener.java b/src/main/java/com/zerohighdef/hush/listeners/HushAsyncChatListener.java index 6db6651..86a484a 100644 --- a/src/main/java/com/zerohighdef/hush/listeners/HushAsyncChatListener.java +++ b/src/main/java/com/zerohighdef/hush/listeners/HushAsyncChatListener.java @@ -54,7 +54,10 @@ public class HushAsyncChatListener implements Listener { runCommand(command.replace("{player}", playerName)); } - if (webhookURL != null) { + plugin.log(String.format("%s matched filter in %s.%s", playerName, watchList, category.getCategoryName())); + + if (webhookURL != null && !plugin.isInCoolDown(player)) { + plugin.addCoolDown(player); chatMessage = match.replaceAll("**$0**"); String message = Javacord.escapeFormat(playerName) + " said: " + chatMessage; Embed embed = new Embed() diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e2d7644..797ffa7 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,7 @@ # Discord webhook webhook: "" +# Webhook cool down in minutes +cooldown: 5 watch_lists: # Permission to check diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 690427c..26b5699 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Hush -version: 0.2.0 +version: 0.2.1 main: com.zerohighdef.hush.Hush api-version: "1.16" authors: [ZeroHighDef]