Finished SkibidiBlocker and added AntiSpam

This commit is contained in:
天クマ 2025-03-19 16:35:46 -03:00
commit 6fc6fb67cf
11 changed files with 67 additions and 18 deletions

View file

@ -7,6 +7,6 @@
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/tenkumaLib"/>
<classpathentry kind="lib" path="/home/adrian/Downloads/craftbukkit-1060.jar"/>
<classpathentry kind="lib" path="E:/craftbukkit-1060.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
bin/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/gd/

View file

@ -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'

View file

@ -3,4 +3,4 @@ database: false
main: gd.rf.adrianvictor.stuff.GhostsAndStuff
name: GhostsAndStuff
url: https://adrianvictor.rf.gd
version: '1.0'
version: '1.1'

View file

@ -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<UUID, String> 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());
}
}

View file

@ -28,15 +28,24 @@ public class GhostsAndStuff extends JavaPlugin {
loadModules();
logger.info("is starting.");
}
public void loadModules() {
// 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<String> words = this.getConfiguration().getStringList("skibidiBlockerWords", null);
if (words == null || words.isEmpty()) {
logger.warning("SkibidiBlocker is enabled, but no words were provided. Disabling.");

View file

@ -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;

View file

@ -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;
}
finalMessage = message.toLowerCase();
} else {
if (message.contains(blockedWord)) {
logger.info(event.getPlayer().getDisplayName() + " said a blocked word (case sensitive).");
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());
return;
}
}
}
}