diff --git a/.classpath b/.classpath index b902d9c..3fd8cf9 100644 --- a/.classpath +++ b/.classpath @@ -7,6 +7,6 @@ - + diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..9b3a425 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/gd/ diff --git a/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class b/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class index 1110fa0..700fdea 100644 Binary files a/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class and b/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class differ diff --git a/bin/gd/rf/adrianvictor/stuff/RainbowChat.class b/bin/gd/rf/adrianvictor/stuff/RainbowChat.class index 4e344ef..3928dfb 100644 Binary files a/bin/gd/rf/adrianvictor/stuff/RainbowChat.class and b/bin/gd/rf/adrianvictor/stuff/RainbowChat.class differ diff --git a/bin/gd/rf/adrianvictor/stuff/SkibidiBlocker.class b/bin/gd/rf/adrianvictor/stuff/SkibidiBlocker.class index 4f86252..e823fc3 100644 Binary files a/bin/gd/rf/adrianvictor/stuff/SkibidiBlocker.class and b/bin/gd/rf/adrianvictor/stuff/SkibidiBlocker.class differ diff --git a/config.yml b/config.yml index 609576c..9f52537 100644 --- a/config.yml +++ b/config.yml @@ -1,6 +1,15 @@ +# Blocks duplicated messages +antiSpam: true +antiSpamLightning: false + +# Adds color code for rainbow +rainbowChat: true +rainbowChatModifier: 'z' # Single word you need to put after & to use the rainbow # Strikes a lightning to the player who says specific words skibidiBlocker: true skibidiBlockerCaseSensitive: false +skibidiBlockerVerbose: true +skibidiBlockerVerboseMessage: "This is a bad word." skibidiBlockerWords: - 'skibidi' diff --git a/plugin.yml b/plugin.yml index 090c47f..070a198 100644 --- a/plugin.yml +++ b/plugin.yml @@ -3,4 +3,4 @@ database: false main: gd.rf.adrianvictor.stuff.GhostsAndStuff name: GhostsAndStuff url: https://adrianvictor.rf.gd -version: '1.0' \ No newline at end of file +version: '1.1' \ No newline at end of file diff --git a/src/gd/rf/adrianvictor/stuff/AntiSpam.java b/src/gd/rf/adrianvictor/stuff/AntiSpam.java new file mode 100644 index 0000000..34a94a9 --- /dev/null +++ b/src/gd/rf/adrianvictor/stuff/AntiSpam.java @@ -0,0 +1,30 @@ +package gd.rf.adrianvictor.stuff; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.bukkit.event.player.PlayerChatEvent; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.plugin.java.JavaPlugin; + +import gd.rf.adrianvictor.lib.PlayerEx; + +public class AntiSpam extends PlayerListener { + private final Map lastMessages = new HashMap<>(); + private JavaPlugin plugin; + + public AntiSpam(JavaPlugin plugin) { + this.plugin = plugin; + } + + public void onPlayerChat(PlayerChatEvent event) { + if (lastMessages.containsKey(event.getPlayer().getUniqueId()) && lastMessages.get(event.getPlayer().getUniqueId()).contains(event.getMessage())) { + event.setCancelled(true); + event.getPlayer().sendMessage("Stop spamming."); + + if (plugin.getConfiguration().getBoolean("antiSpamLightning", false)) PlayerEx.strikeLightning(event.getPlayer()); + } + lastMessages.put(event.getPlayer().getUniqueId(), event.getMessage()); + } +} diff --git a/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java b/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java index 5fbdded..c003638 100644 --- a/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java +++ b/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java @@ -28,15 +28,24 @@ public class GhostsAndStuff extends JavaPlugin { loadModules(); logger.info("is starting."); } - public void loadModules() { - PlayerListener rainbowChat = new RainbowChat(this); + + // AntiSpam + if (this.getConfiguration().getBoolean("antiSpam", true)) { + PlayerListener antiSpam = new AntiSpam(this); + pm.registerEvent(Type.PLAYER_CHAT, antiSpam, Priority.High, this); + } + + // RainbowChat + if (this.getConfiguration().getBoolean("rainbowChat", true)) { + PlayerListener rainbowChat = new RainbowChat(this); logger.info("Loading module RainbowChat"); pm.registerEvent(Type.PLAYER_CHAT, rainbowChat, Priority.High, this); + } + // SkibidiBlocker if (this.getConfiguration().getBoolean("skibidiBlocker", true)) { logger.info("Loading module SkibidiBlocker"); - List words = this.getConfiguration().getStringList("skibidiBlockerWords", null); if (words == null || words.isEmpty()) { logger.warning("SkibidiBlocker is enabled, but no words were provided. Disabling."); diff --git a/src/gd/rf/adrianvictor/stuff/RainbowChat.java b/src/gd/rf/adrianvictor/stuff/RainbowChat.java index 1d6e0fd..7746e97 100644 --- a/src/gd/rf/adrianvictor/stuff/RainbowChat.java +++ b/src/gd/rf/adrianvictor/stuff/RainbowChat.java @@ -19,7 +19,7 @@ public class RainbowChat extends PlayerListener { int index = 0; while (index < message.length()) { - int startIndex = message.indexOf("§z", index); + int startIndex = message.indexOf("§" + plugin.getConfiguration().getString("rainbowChatModifier", "z"), index); if (startIndex == -1) { result.append(message.substring(index)); break; diff --git a/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java b/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java index 7d5e97c..081bd33 100644 --- a/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java +++ b/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java @@ -4,6 +4,8 @@ import java.util.List; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerListener; import org.bukkit.plugin.java.JavaPlugin; + +import gd.rf.adrianvictor.lib.Color; import gd.rf.adrianvictor.lib.Log; public class SkibidiBlocker extends PlayerListener { @@ -29,20 +31,18 @@ public class SkibidiBlocker extends PlayerListener { } boolean caseSensitive = plugin.getConfiguration().getBoolean("skibidiBlockerCaseSensitive", true); - for (String blockedWord : blockedWords) { + String finalMessage; if (!caseSensitive) { - if (message.toLowerCase().contains(blockedWord.toLowerCase())) { - logger.info(event.getPlayer().getDisplayName() + " said a blocked word (case insensitive)."); - event.getPlayer().getWorld().strikeLightning(event.getPlayer().getLocation()); // Ensure it works - return; - } - } else { - if (message.contains(blockedWord)) { - logger.info(event.getPlayer().getDisplayName() + " said a blocked word (case sensitive)."); - event.getPlayer().getWorld().strikeLightning(event.getPlayer().getLocation()); - return; - } + finalMessage = message.toLowerCase(); + } else { + finalMessage = message; + } + if (message.contains(blockedWord.toLowerCase())) { + if (plugin.getConfiguration().getBoolean("skibidiBlockerVerbose", true)) { + event.getPlayer().sendMessage(Color.formatColors(plugin.getConfiguration().getString("skibidiBlockerVerboseMessage", "This is a bad word."))); + } + event.getPlayer().getWorld().strikeLightning(event.getPlayer().getLocation()); } } }