From 6eca460fc9114de646c506cb1a7008d0463981b3 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Wed, 1 Apr 2026 10:15:15 +0000 Subject: [PATCH] Upload via Git Manager GUI - CommandBlockerModule.java --- .../commandblocker/CommandBlockerModule.java | 360 +++++++++--------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/src/main/java/net/viper/status/modules/commandblocker/CommandBlockerModule.java b/src/main/java/net/viper/status/modules/commandblocker/CommandBlockerModule.java index 68408c7..26e9399 100644 --- a/src/main/java/net/viper/status/modules/commandblocker/CommandBlockerModule.java +++ b/src/main/java/net/viper/status/modules/commandblocker/CommandBlockerModule.java @@ -1,180 +1,180 @@ -package net.viper.status.modules.commandblocker; - -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.CommandSender; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.api.event.ChatEvent; -import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.api.plugin.Plugin; -import net.md_5.bungee.event.EventHandler; -import net.viper.status.StatusAPI; -import net.viper.status.module.Module; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.util.*; -import org.yaml.snakeyaml.Yaml; - -@SuppressWarnings({"unchecked", "rawtypes"}) -public class CommandBlockerModule implements Module, Listener { - - private StatusAPI plugin; - private boolean enabled = true; // Standardmäßig aktiv - private String bypassPermission = "commandblocker.bypass"; // Standard Permission - - private File file; - private Set blocked = new HashSet<>(); - - @Override - public String getName() { - return "CommandBlockerModule"; - } - - @Override - public void onEnable(Plugin plugin) { - if (!(plugin instanceof StatusAPI)) return; // Sicherheit - this.plugin = (StatusAPI) plugin; - - // Datei laden - file = new File(this.plugin.getDataFolder(), "blocked-commands.yml"); - loadFile(); - - // Listener registrieren - ProxyServer.getInstance().getPluginManager().registerListener(this.plugin, this); - - // /cb Befehl registrieren - ProxyServer.getInstance().getPluginManager().registerCommand(this.plugin, - new net.md_5.bungee.api.plugin.Command("cb", "commandblocker.admin") { - @Override - public void execute(CommandSender sender, String[] args) { - handleCommand(sender, args); - } - }); - - this.plugin.getLogger().info("[CommandBlocker] aktiviert (" + blocked.size() + " Commands)."); - } - - - @Override - public void onDisable(Plugin plugin) { - blocked.clear(); - } - - @EventHandler - public void onCommand(ChatEvent event) { - if (!enabled || !event.isCommand()) return; - - if (!(event.getSender() instanceof ProxiedPlayer)) return; - ProxiedPlayer player = (ProxiedPlayer) event.getSender(); - - if (player.hasPermission(bypassPermission)) return; - - String msg = event.getMessage(); - if (msg == null || msg.length() <= 1) return; - - String cmd = msg.substring(1).toLowerCase(Locale.ROOT); - String base = cmd.split(" ")[0]; - - if (blocked.contains(base)) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + "Dieser Befehl ist auf diesem Netzwerk blockiert."); - } - } - - private void handleCommand(CommandSender sender, String[] args) { - if (args == null || args.length == 0) { - sender.sendMessage(ChatColor.YELLOW + "/cb add "); - sender.sendMessage(ChatColor.YELLOW + "/cb remove "); - sender.sendMessage(ChatColor.YELLOW + "/cb list"); - sender.sendMessage(ChatColor.YELLOW + "/cb reload"); - return; - } - - String action = args[0].toLowerCase(); - - switch (action) { - case "add": - if (args.length < 2) break; - blocked.add(args[1].toLowerCase()); - saveFile(); - sender.sendMessage(ChatColor.GREEN + "Command blockiert: " + args[1]); - break; - case "remove": - if (args.length < 2) break; - blocked.remove(args[1].toLowerCase()); - saveFile(); - sender.sendMessage(ChatColor.GREEN + "Command freigegeben: " + args[1]); - break; - case "list": - sender.sendMessage(ChatColor.GOLD + "Blockierte Commands:"); - for (String c : blocked) { - sender.sendMessage(ChatColor.RED + "- " + c); - } - break; - case "reload": - loadFile(); - sender.sendMessage(ChatColor.GREEN + "CommandBlocker neu geladen."); - break; - default: - sender.sendMessage(ChatColor.RED + "Unbekannter Unterbefehl."); - break; - } - } - - private void loadFile() { - try { - if (!file.exists()) { - File parent = file.getParentFile(); - if (parent != null && !parent.exists()) parent.mkdirs(); - file.createNewFile(); - saveFile(); - } - - Yaml yaml = new Yaml(); - Map data = null; - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - data = yaml.loadAs(fis, Map.class); - } finally { - if (fis != null) try { fis.close(); } catch (IOException ignored) {} - } - - blocked.clear(); - if (data != null && data.containsKey("blocked")) { - Object obj = data.get("blocked"); - if (obj instanceof List) { - List list = (List) obj; - for (Object o : list) { - if (o != null) blocked.add(String.valueOf(o).toLowerCase()); - } - } - } - - } catch (Exception e) { - if (plugin != null) plugin.getLogger().severe("[CommandBlocker] Fehler beim Laden: " + e.getMessage()); - else System.err.println("[CommandBlocker] Fehler beim Laden: " + e.getMessage()); - } - } - - private void saveFile() { - try { - Yaml yaml = new Yaml(); - Map out = new LinkedHashMap<>(); - out.put("blocked", new ArrayList<>(blocked)); - FileWriter fw = null; - try { - fw = new FileWriter(file); - yaml.dump(out, fw); - } finally { - if (fw != null) try { fw.close(); } catch (IOException ignored) {} - } - } catch (IOException e) { - if (plugin != null) plugin.getLogger().severe("[CommandBlocker] Fehler beim Speichern: " + e.getMessage()); - else System.err.println("[CommandBlocker] Fehler beim Speichern: " + e.getMessage()); - } - } -} +package net.viper.status.modules.commandblocker; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.ChatEvent; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.event.EventHandler; +import net.viper.status.StatusAPI; +import net.viper.status.module.Module; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.util.*; +import org.yaml.snakeyaml.Yaml; + +@SuppressWarnings({"unchecked", "rawtypes"}) +public class CommandBlockerModule implements Module, Listener { + + private StatusAPI plugin; + private boolean enabled = true; // Standardmäßig aktiv + private String bypassPermission = "commandblocker.bypass"; // Standard Permission + + private File file; + private Set blocked = new HashSet<>(); + + @Override + public String getName() { + return "CommandBlockerModule"; + } + + @Override + public void onEnable(Plugin plugin) { + if (!(plugin instanceof StatusAPI)) return; // Sicherheit + this.plugin = (StatusAPI) plugin; + + // Datei laden + file = new File(this.plugin.getDataFolder(), "blocked-commands.yml"); + loadFile(); + + // Listener registrieren + ProxyServer.getInstance().getPluginManager().registerListener(this.plugin, this); + + // /cb Befehl registrieren + ProxyServer.getInstance().getPluginManager().registerCommand(this.plugin, + new net.md_5.bungee.api.plugin.Command("cb", "commandblocker.admin") { + @Override + public void execute(CommandSender sender, String[] args) { + handleCommand(sender, args); + } + }); + + this.plugin.getLogger().info("[CommandBlocker] aktiviert (" + blocked.size() + " Commands)."); + } + + + @Override + public void onDisable(Plugin plugin) { + blocked.clear(); + } + + @EventHandler + public void onCommand(ChatEvent event) { + if (!enabled || !event.isCommand()) return; + + if (!(event.getSender() instanceof ProxiedPlayer)) return; + ProxiedPlayer player = (ProxiedPlayer) event.getSender(); + + if (player.hasPermission(bypassPermission)) return; + + String msg = event.getMessage(); + if (msg == null || msg.length() <= 1) return; + + String cmd = msg.substring(1).toLowerCase(Locale.ROOT); + String base = cmd.split(" ")[0]; + + if (blocked.contains(base)) { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + "Dieser Befehl ist auf diesem Netzwerk blockiert."); + } + } + + private void handleCommand(CommandSender sender, String[] args) { + if (args == null || args.length == 0) { + sender.sendMessage(ChatColor.YELLOW + "/cb add "); + sender.sendMessage(ChatColor.YELLOW + "/cb remove "); + sender.sendMessage(ChatColor.YELLOW + "/cb list"); + sender.sendMessage(ChatColor.YELLOW + "/cb reload"); + return; + } + + String action = args[0].toLowerCase(); + + switch (action) { + case "add": + if (args.length < 2) break; + blocked.add(args[1].toLowerCase()); + saveFile(); + sender.sendMessage(ChatColor.GREEN + "Command blockiert: " + args[1]); + break; + case "remove": + if (args.length < 2) break; + blocked.remove(args[1].toLowerCase()); + saveFile(); + sender.sendMessage(ChatColor.GREEN + "Command freigegeben: " + args[1]); + break; + case "list": + sender.sendMessage(ChatColor.GOLD + "Blockierte Commands:"); + for (String c : blocked) { + sender.sendMessage(ChatColor.RED + "- " + c); + } + break; + case "reload": + loadFile(); + sender.sendMessage(ChatColor.GREEN + "CommandBlocker neu geladen."); + break; + default: + sender.sendMessage(ChatColor.RED + "Unbekannter Unterbefehl."); + break; + } + } + + private void loadFile() { + try { + if (!file.exists()) { + File parent = file.getParentFile(); + if (parent != null && !parent.exists()) parent.mkdirs(); + file.createNewFile(); + saveFile(); + } + + Yaml yaml = new Yaml(); + Map data = null; + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + data = yaml.loadAs(fis, Map.class); + } finally { + if (fis != null) try { fis.close(); } catch (IOException ignored) {} + } + + blocked.clear(); + if (data != null && data.containsKey("blocked")) { + Object obj = data.get("blocked"); + if (obj instanceof List) { + List list = (List) obj; + for (Object o : list) { + if (o != null) blocked.add(String.valueOf(o).toLowerCase()); + } + } + } + + } catch (Exception e) { + if (plugin != null) plugin.getLogger().severe("[CommandBlocker] Fehler beim Laden: " + e.getMessage()); + else System.err.println("[CommandBlocker] Fehler beim Laden: " + e.getMessage()); + } + } + + private void saveFile() { + try { + Yaml yaml = new Yaml(); + Map out = new LinkedHashMap<>(); + out.put("blocked", new ArrayList<>(blocked)); + FileWriter fw = null; + try { + fw = new FileWriter(file); + yaml.dump(out, fw); + } finally { + if (fw != null) try { fw.close(); } catch (IOException ignored) {} + } + } catch (IOException e) { + if (plugin != null) plugin.getLogger().severe("[CommandBlocker] Fehler beim Speichern: " + e.getMessage()); + else System.err.println("[CommandBlocker] Fehler beim Speichern: " + e.getMessage()); + } + } +}