# StatusAPI ![Build Status](https://img.shields.io/badge/build-passing-brightgreen) ![Version](https://img.shields.io/badge/version-4.0.6-blue) Ein modulares und leistungsstarkes Plugin für **BungeeCord**, das einen zentralen JSON-Status, globalen Chat, WordPress-Verifizierung, Server-Navigation und optionale Sicherheitsmodule bereitstellt. --- ## ⚡ Features - **Modulares System** Aktiviere nur die Module, die du benötigst (Chat, Navigation, Verify, Security). - **JSON Status API** Liefert Echtzeit-Serverdaten für Webseiten oder externe Dienste (Port `9191`). - **Global Chat** Serverübergreifender Chat mit Badword-Filter, LuckPerms-Unterstützung und Logging. - **Server Navigation** Automatische Generierung von Server-Befehlen (z. B. `/survival` statt `/server survival`). - **WordPress Verify** Spieler-Verifizierung über WordPress (Token-basiert, CPT-kompatibel). - **CommandBlocker (Security Modul)** Zentrale Blockierung von Commands auf Netzwerkebene inkl. Admin-Bypass. - **Auto-Updater** Prüft automatisch auf Updates und lädt diese herunter. - **Logging** Persistente Speicherung von Chat-Nachrichten mit automatischer Bereinigung. --- ## 📥 Installation 1. Lade die aktuelle `StatusAPI.jar` 2. Lege sie in den `plugins/` Ordner deiner BungeeCord-Installation 3. Starte den Proxy neu 4. Alle Konfigurationsdateien werden automatisch erstellt --- ## ⚙️ Konfiguration Alle Hauptmodule werden zentral über `plugins/StatusAPI/verify.properties` gesteuert. ### verify.properties ```properties # =========================== # GLOBALE EINSTELLUNGEN # =========================== chat.enabled=true navigation.enabled=true commandblocker.enabled=true # =========================== # WORDPRESS VERIFY # =========================== wp_verify_url=https://deine-wordpress-domain.tld # =========================== # SERVER KONFIGURATION # =========================== server.lobby=&bLobby server.lobby.id=1606 server.lobby.secret=DeinSecretHier server.survival=&aSurvival server.survival.id=2 server.survival.secret=GeheimesWortFuerSurvival ``` ## 🔒 CommandBlocker Modul Das **CommandBlockerModule** blockiert definierte Commands **netzwerkweit**, bevor sie an Backend-Server weitergeleitet werden. ### Eigenschaften - Blockierung auf **BungeeCord-Ebene** - **YAML-basierte** Konfiguration - **Live-Verwaltung** per Command - **Bypass-Permission** für Admins - **Keine Abhängigkeit** von anderen Modulen --- ### Konfigurationsdatei **Datei:** `plugins/StatusAPI/blocked-commands.yml` ```yaml blocked: - plugins - pl - version - about ``` Änderungen können entweder **manuell** oder **per Befehl** vorgenommen werden. --- ## Befehle | Befehl | Beschreibung | Permission | |------|-------------|------------| | `/cb add ` | Blockiert einen Command | `commandblocker.admin` | | `/cb remove ` | Entfernt einen Block | `commandblocker.admin` | | `/cb list` | Zeigt alle blockierten Commands | `commandblocker.admin` | | `/cb reload` | Lädt die YAML neu | `commandblocker.admin` | --- ## Bypass Spieler mit folgender Permission umgehen den CommandBlocker vollständig: ```yaml commandblocker.bypass ``` --- ## 💻 Allgemeine Befehle | Befehl | Beschreibung | Permission | |------|-------------|------------| | `/verify ` | WordPress-Verifizierung | - | | `/globalmute` | Globalen Chat sperren | `globalchat.mute` | | `/globalreload` | Config neu laden | `globalchat.reload` | | `/clearchat`, `/cc` | Chat leeren | `globalchat.clear` | | `/togglechat` | Chat lokal deaktivieren | - | | `/support ` | Support-Anfrage senden | - | | `/reply ` | Auf Support antworten | - | | `/info` | Plugin-Infos anzeigen | - | --- ## 🌐 JSON API **Endpoint:** ```yaml http://DEINE_IP:9191/ ``` ### Beispiel-Antwort ```json { "online": true, "version": "1.20.4", "max_players": "500", "motd": "Willkommen auf meinem Server!", "players": [ { "name": "Player1", "uuid": "550e8400-e29b-41d4-a716-446655440000", "prefix": "§aAdmin", "server": "Lobby" } ] } ``` --- ## 🛠️ Für Entwickler Die **StatusAPI** ist vollständig modular aufgebaut und erlaubt die einfache Erweiterung um eigene Module, ohne den Core-Code zu verändern. --- ### Eigenes Modul erstellen 1. Klasse implementiert das `Module`-Interface 2. Optional zusätzlich `Listener` implementieren 3. Registrierung im Core (z. B. im ModuleManager): ```java moduleManager.registerModule(new MeinModul()); ``` ### Modul-Lifecycle Jedes Modul besitzt Zugriff auf folgende Lifecycle-Methoden: - `onEnable(Plugin plugin)` - `onDisable(Plugin plugin)` Diese Methoden werden automatisch beim **Starten** bzw. **Stoppen** des Proxys aufgerufen. --- ## 📝 Permissions Übersicht - `globalchat.mute` - `globalchat.bypass` - `globalchat.reload` - `globalchat.clear` - `commandblocker.admin` - `commandblocker.bypass` --- ## 🤝 Credits --- ## 📜 Lizenz & Nutzung Dieses Projekt sowie alle enthaltenen Module, Quelltexte und Ressourcen dürfen **nicht verändert, kopiert oder weiterverbreitet** werden. Jegliche Nutzung, Modifikation oder Weitergabe – ganz oder teilweise – ist **ausschließlich mit vorheriger schriftlicher Genehmigung** des Entwicklers gestattet. © Entwickelt von **M_Viper**. Alle Rechte vorbehalten.