From e6eb4a416bcc7c4ca66988d163a7a2fe3d8ef141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Sat, 12 Nov 2022 05:14:07 +0100 Subject: [PATCH] Add chat cool-down feature --- .../java/wtf/beatrice/limbomanager/Cache.java | 4 +++ .../beatrice/limbomanager/LimboManager.java | 1 + .../listeners/PlayerChatManager.java | 33 +++++++++++++++++++ src/main/resources/config.yml | 4 ++- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/main/java/wtf/beatrice/limbomanager/listeners/PlayerChatManager.java diff --git a/src/main/java/wtf/beatrice/limbomanager/Cache.java b/src/main/java/wtf/beatrice/limbomanager/Cache.java index 5a2e020..fd67f83 100644 --- a/src/main/java/wtf/beatrice/limbomanager/Cache.java +++ b/src/main/java/wtf/beatrice/limbomanager/Cache.java @@ -2,14 +2,18 @@ package wtf.beatrice.limbomanager; import org.bukkit.World; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; import wtf.beatrice.limbomanager.objects.Coordinates; import wtf.beatrice.limbomanager.objects.LocationCheckRunnable; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; public class Cache { + public static List chatCooldown = new ArrayList<>(); public static final String worldName = "limbo"; public static World limboWorld; public static final Coordinates baseCoords = new Coordinates(1000, 1000); diff --git a/src/main/java/wtf/beatrice/limbomanager/LimboManager.java b/src/main/java/wtf/beatrice/limbomanager/LimboManager.java index 1d45395..43cf60a 100644 --- a/src/main/java/wtf/beatrice/limbomanager/LimboManager.java +++ b/src/main/java/wtf/beatrice/limbomanager/LimboManager.java @@ -35,6 +35,7 @@ public class LimboManager extends JavaPlugin { pluginManager.registerEvents(new CommandCanceller(), this); pluginManager.registerEvents(new RiskyBlocksHandler(), this); pluginManager.registerEvents(new WorldLoadHandler(), this); + pluginManager.registerEvents(new PlayerChatManager(), this); // no need to check if folder exists, it will just skip creation. getDataFolder().mkdirs(); diff --git a/src/main/java/wtf/beatrice/limbomanager/listeners/PlayerChatManager.java b/src/main/java/wtf/beatrice/limbomanager/listeners/PlayerChatManager.java new file mode 100644 index 0000000..53d67fd --- /dev/null +++ b/src/main/java/wtf/beatrice/limbomanager/listeners/PlayerChatManager.java @@ -0,0 +1,33 @@ +package wtf.beatrice.limbomanager.listeners; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import wtf.beatrice.limbomanager.Cache; +import wtf.beatrice.limbomanager.LimboManager; + +public class PlayerChatManager implements Listener +{ + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + + int coolDown = Cache.getConfiguration().getInt("chat.cool-down", 3); + if(coolDown < 1) return; // disable this feature if cooldown is 0 or negative. + + Player player = event.getPlayer(); + + if(Cache.chatCooldown.contains(player)) + { + player.sendMessage("Chat is limited in this server. Please wait."); + event.setCancelled(true); + return; + } + + Cache.chatCooldown.add(player); + Bukkit.getScheduler().runTaskLater(LimboManager.getInstance(), () -> Cache.chatCooldown.remove(player), 20L * coolDown); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 2062ac2..c1c507a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,4 +8,6 @@ island: y: 20.0 z: 0.0 yaw: 0.0 - pitch: 0.0 \ No newline at end of file + pitch: 0.0 +chat: + cool-down: 3 \ No newline at end of file