diff --git a/src/main/java/net/viper/status/modules/navigation/NavigationModule.java b/src/main/java/net/viper/status/modules/navigation/NavigationModule.java deleted file mode 100644 index 27e9906..0000000 --- a/src/main/java/net/viper/status/modules/navigation/NavigationModule.java +++ /dev/null @@ -1,149 +0,0 @@ -package net.viper.status.modules.navigation; - -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.config.ServerInfo; -import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.api.plugin.Command; -import net.md_5.bungee.api.plugin.Plugin; -import net.viper.status.module.Module; - -import java.io.*; -import java.util.*; - -/** - * NavigationModule - Erstellt automatisch Server-Switch Befehle basierend auf der verify.properties. - */ -public class NavigationModule implements Module { - - private Plugin plugin; - private boolean isEnabled = true; - - @Override - public String getName() { - return "NavigationModule"; - } - - @Override - public void onEnable(Plugin plugin) { - this.plugin = plugin; - loadConfig(plugin); - } - - @Override - public void onDisable(Plugin plugin) { - // Befehle müssen nicht manuell entfernt werden (handled by Bungee) - } - - private void loadConfig(Plugin plugin) { - String fileName = "verify.properties"; - File file = new File(plugin.getDataFolder(), fileName); - Properties props = new Properties(); - - // 1. Datei kopieren falls nicht vorhanden - if (!file.exists()) { - // Wir müssen hier nichts erstellen, da GlobalChat oder Verify das schon tun - // Wir versuchen einfach nur zu laden - } - - // 2. Laden - try (InputStream in = new FileInputStream(file)) { - props.load(in); - } catch (IOException e) { - plugin.getLogger().warning("Konnte " + fileName + " nicht für Navigation laden."); - return; - } - - // 3. Aktivierung prüfen - isEnabled = Boolean.parseBoolean(props.getProperty("navigation.enabled", "true")); - - if (!isEnabled) { - plugin.getLogger().info("§eNavigation ist DEAKTIVIERT."); - return; - } - - // 4. Befehle generieren - int registered = 0; - for (String key : props.stringPropertyNames()) { - if (key.startsWith("server.")) { - // Struktur: server.= - // Wir ignorieren Unterpunkte wie .id oder .secret (teilen wir am Punkt) - String[] parts = key.split("\\."); - - if (parts.length == 2) { - String targetServer = parts[1]; // Z.B. "bungee-server-1" oder "lobby" - String displayName = props.getProperty(key); // Z.B. "&aSurvival" - - // Befehlsnamen generieren: Farbcodes entfernen und Leerzeichen entfernen - // "&aSurvival" -> "Survival" -> "/survival" - String alias = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', displayName)) - .toLowerCase() - .replace(" ", ""); - - if (alias.isEmpty()) continue; - - // Command registrieren - try { - plugin.getProxy().getPluginManager().registerCommand(plugin, new ServerSwitchCommand(targetServer, displayName, alias)); - registered++; - plugin.getLogger().info("§aBefehl registered: /" + alias + " -> " + targetServer); - } catch (Exception e) { - plugin.getLogger().warning("Konnte Befehl für " + targetServer + " nicht registrieren: " + e.getMessage()); - } - } - } - } - - if (registered > 0) { - plugin.getLogger().info("§aNavigation aktiviert! " + registered + " Server-Befehle erstellt."); - } else { - plugin.getLogger().warning("§cKeine Server für Navigation gefunden (Überprüfe verify.properties)."); - } - } - - /** - * Interne Klasse für den Switch-Befehl. - * Ein Objekt davon wird für jeden Server erstellt. - */ - private class ServerSwitchCommand extends Command { - - private final String targetServer; // Der technische Name (z.B. bungee-server-1) - private final String displayName; // Der hübsche Name (z.B. &aSurvival) - - public ServerSwitchCommand(String targetServer, String displayName, String alias) { - super(alias); // Befehl name - this.targetServer = targetServer; - this.displayName = displayName; - } - - @Override - public void execute(CommandSender sender, String[] args) { - if (!(sender instanceof ProxiedPlayer)) { - sender.sendMessage(ChatColor.RED + "Nur Spieler können den Server wechseln."); - return; - } - - ProxiedPlayer p = (ProxiedPlayer) sender; - - // Check ob Spieler schon auf dem Server ist - if (p.getServer() != null && p.getServer().getInfo().getName().equalsIgnoreCase(targetServer)) { - String name = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', displayName)); - p.sendMessage(ChatColor.YELLOW + "Du bist bereits auf " + name + ChatColor.YELLOW + "!"); - return; - } - - // Server Info holen - ServerInfo target = plugin.getProxy().getServerInfo(targetServer); - - if (target == null) { - p.sendMessage(ChatColor.RED + "Der Server '" + targetServer + "' wurde nicht gefunden."); - return; - } - - // Connecten - p.sendMessage(ChatColor.GRAY + "Verbinde dich mit " + displayName + ChatColor.GRAY + "..."); - p.connect(target); - } - } -} \ No newline at end of file