commit aeeaa83745c784743a1e47851e7320989e161993 Author: tenkuma Date: Wed Mar 19 06:42:38 2025 -0300 First. diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..b902d9c --- /dev/null +++ b/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..c1b32af --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + GhostsAndStuff + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..acdbf9c --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class b/bin/gd/rf/adrianvictor/stuff/GhostsAndStuff.class new file mode 100644 index 0000000..1110fa0 Binary files /dev/null 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 new file mode 100644 index 0000000..4e344ef Binary files /dev/null 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 new file mode 100644 index 0000000..4f86252 Binary files /dev/null and b/bin/gd/rf/adrianvictor/stuff/SkibidiBlocker.class differ diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..609576c --- /dev/null +++ b/config.yml @@ -0,0 +1,6 @@ + +# Strikes a lightning to the player who says specific words +skibidiBlocker: true +skibidiBlockerCaseSensitive: false +skibidiBlockerWords: + - 'skibidi' diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..090c47f --- /dev/null +++ b/plugin.yml @@ -0,0 +1,6 @@ +author: tenkuma +database: false +main: gd.rf.adrianvictor.stuff.GhostsAndStuff +name: GhostsAndStuff +url: https://adrianvictor.rf.gd +version: '1.0' \ No newline at end of file diff --git a/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java b/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java new file mode 100644 index 0000000..5fbdded --- /dev/null +++ b/src/gd/rf/adrianvictor/stuff/GhostsAndStuff.java @@ -0,0 +1,49 @@ +package gd.rf.adrianvictor.stuff; + +import gd.rf.adrianvictor.lib.ConfigurationEx; +import gd.rf.adrianvictor.lib.Log; +import org.bukkit.event.Event.Priority; +import org.bukkit.event.Event.Type; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; +import java.util.List; + +public class GhostsAndStuff extends JavaPlugin { + ConfigurationEx config; + PluginManager pm; + Log logger; + + @Override + public void onDisable() { + logger.info("is being disabled."); + } + + @Override + public void onEnable() { + logger = new Log(this); + pm = this.getServer().getPluginManager(); + config = new ConfigurationEx(this, "config.yml", logger); + config.loadConfig(); + loadModules(); + logger.info("is starting."); + } + + public void loadModules() { + PlayerListener rainbowChat = new RainbowChat(this); + logger.info("Loading module RainbowChat"); + pm.registerEvent(Type.PLAYER_CHAT, rainbowChat, Priority.High, this); + + 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."); + } else { + PlayerListener verboseWorldChange = new SkibidiBlocker(this, logger); + pm.registerEvent(Type.PLAYER_CHAT, verboseWorldChange, Priority.High, this); + } + } + } +} diff --git a/src/gd/rf/adrianvictor/stuff/RainbowChat.java b/src/gd/rf/adrianvictor/stuff/RainbowChat.java new file mode 100644 index 0000000..1d6e0fd --- /dev/null +++ b/src/gd/rf/adrianvictor/stuff/RainbowChat.java @@ -0,0 +1,42 @@ +package gd.rf.adrianvictor.stuff; + +import org.bukkit.event.player.PlayerChatEvent; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.plugin.java.JavaPlugin; + +import gd.rf.adrianvictor.lib.Color; + +public class RainbowChat extends PlayerListener { + JavaPlugin plugin; + + public RainbowChat(JavaPlugin _plugin) { + plugin = _plugin; + } + + public void onPlayerChat(PlayerChatEvent event) { + StringBuilder result = new StringBuilder(); + String message = Color.formatColors(event.getMessage()); + int index = 0; + + while (index < message.length()) { + int startIndex = message.indexOf("§z", index); + if (startIndex == -1) { + result.append(message.substring(index)); + break; + } + + result.append(message, index, startIndex); + int endIndex = startIndex + 2; + + while (endIndex < message.length() && message.charAt(endIndex) != '§') { + endIndex++; + } + + String textToColor = message.substring(startIndex + 2, endIndex); + result.append(Color.rainbow(textToColor)); + + index = endIndex; + } + event.setMessage(result.toString()); +} +} diff --git a/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java b/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java new file mode 100644 index 0000000..7d5e97c --- /dev/null +++ b/src/gd/rf/adrianvictor/stuff/SkibidiBlocker.java @@ -0,0 +1,49 @@ +package gd.rf.adrianvictor.stuff; + +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.Log; + +public class SkibidiBlocker extends PlayerListener { + JavaPlugin plugin; + Log logger; + + public SkibidiBlocker(JavaPlugin _plugin, Log _logger) { + plugin = _plugin; + logger = _logger; + } + + public void onPlayerChat(PlayerChatEvent event) { + String message = event.getMessage(); + List blockedWords = plugin.getConfiguration().getStringList("skibidiBlockerWords", null); + + if (blockedWords == null) { + logger.warning("Blocked words list is null!"); + return; + } + if (blockedWords.isEmpty()) { + logger.warning("Blocked words list is empty!"); + return; + } + + boolean caseSensitive = plugin.getConfiguration().getBoolean("skibidiBlockerCaseSensitive", true); + + for (String blockedWord : blockedWords) { + 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; + } + } + } + } +}