diff --git a/README.md b/README.md index a279436..f260729 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@

Modulares BungeeCord-Plugin für Netzwerkbetrieb, Moderation und Integrationen.
- Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard + Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard · Scoreboard

--- @@ -26,7 +26,8 @@ Dieses Repository enthält zwei aufeinander abgestimmte Plugins: | Plugin | Plattform | Zweck | |---|---|---| -| **StatusAPI** | BungeeCord (Proxy) | HTTP-API, AntiBot, Chat, Moderation, Verify, Forum | +| **StatusAPI** | BungeeCord (Proxy) | HTTP-API, AntiBot, Chat, Moderation, Verify, Forum, Scoreboard | +| **StatusAPIBridge** | Paper / Spigot (Backend) | Sendet Spielerdaten (Health, Kompass, Position, etc.) an StatusAPI | | **BackendJoinGuard** | Paper / Spigot (Backend) | Verhindert Direktjoins am Proxy vorbei | BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln automatisch per Sync von StatusAPI beziehen. @@ -41,6 +42,12 @@ BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln aut - [Commands](#commands-statusapi) - [Permissions](#permissions-statusapi) - [Konfiguration](#konfiguration-statusapi) +- [ScoreboardModule](#scoreboardmodule) + - [Features](#features-scoreboard) + - [Placeholders](#placeholders) + - [Konfiguration](#konfiguration-scoreboard) + - [Commands](#commands-scoreboard) +- [StatusAPIBridge](#statusapibridge) - [BackendJoinGuard](#backendjoinguard-1) - [Betriebsarten](#betriebsarten) - [Commands & Permissions](#commands--permissions-backendjoinguard) @@ -63,6 +70,19 @@ BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln aut +
+ScoreboardModule + +- Vollständig konfigurierbares BungeeCord-Sidebar-Scoreboard +- Flüssige Wave-Animation im Titel (10 fps, HSB-Farbwelle oder eigene Farben) +- Gradient-Placeholder für farbige Zeilen +- News-Ticker mit konfigurierbarem Text, Breite und Geschwindigkeit +- Zeilenrotation – bis zu 20 Varianten pro Zeile +- Separates Admin-Scoreboard mit eigenen Zeilen +- `/sb`-Command zum Ein-/Ausblenden und Umschalten zwischen Player/Admin-Board + +
+
NetworkInfo @@ -129,6 +149,11 @@ Basis-URL: `http://:9191` – Port konfigurierbar über `statusapi.por | `POST` | `/forum/notify` | Forum-Notification an Proxy | `x-api-key` / Forum-Secret | | `POST` | `/network/attack` | Attack-Event an Discord-Webhook melden | `x-api-key` | | `GET` | `/network/backendguard/config` | Guard-Regeln für BackendJoinGuard Sync | `x-api-key` | +| `POST` | `/scoreboard/health` | Spieler-HP aktualisieren | intern | +| `POST` | `/scoreboard/compass` | Spieler-Yaw aktualisieren | intern | +| `POST` | `/scoreboard/tps` | Server-TPS aktualisieren | intern | +| `POST` | `/player/world` | Spieler-Welt aktualisieren | intern | +| `POST` | `/player/data` | Koordinaten, Gamemode, Exp, Food, Speed | intern | --- @@ -273,6 +298,204 @@ backendguard.sync.api_key= | `blocked-commands.yml` | Liste der geblockten Commands | | `customcommands.yml` | Eigene Befehle, Aliase, Sender-Typen | | `messages.txt` | AutoMessage-Texte (Zeilen mit `#` und Leerzeilen werden ignoriert) | +| `scoreboard.properties` | Scoreboard-Konfiguration (siehe ScoreboardModule) | + +--- + +## ScoreboardModule + +Das ScoreboardModule zeigt ein vollständig konfigurierbares Sidebar-Scoreboard auf BungeeCord-Ebene. Spielerdaten werden über **StatusAPIBridge** vom Backend-Server in Echtzeit geliefert. + +### Features (Scoreboard) + +- **Wave-Titel-Animation** – flüssige HSB-Farbwelle (10 fps), Farben frei konfigurierbar +- **Gradient-Placeholder** – `%gradient:FARBE1:FARBE2:TEXT%` für farbige Zeilen +- **News-Ticker** – konfigurierbarer Lauftext von rechts nach links (10 fps) +- **Zeilenrotation** – pro Zeile bis zu 20 Varianten, wechseln automatisch +- **Admin-Scoreboard** – eigenes Objective mit eigenen Zeilen, automatisch für Spieler mit Permission +- **Kompass** – Himmelsrichtungs-Anzeige mit farbigen Buchstaben, zentriert +- **Herzen & Hunger** – `♥♥♥♥♥♡♡♡♡♡` / `◆◆◆◆◆◇◇◇◇◇` +- **Separator-Styles** – frei wählbar (Striche, Wellen, Gradient, leer, …) +- **Toggle-Command** – `/sb` zum Ein-/Ausblenden, `/sb admin` / `/sb player` zum Umschalten + +--- + +### Placeholders + +#### Spieler-Placeholders (werden von StatusAPIBridge geliefert) + +| Placeholder | Beschreibung | +|---|---| +| `%player%` | Spielername | +| `%rank%` | Rang (LuckPerms Prefix) | +| `%server%` | Aktueller Server (erster Buchstabe groß) | +| `%health%` | Leben als Herz-Symbole `♥♥♥♡♡` | +| `%hearts%` | Leben als Zahl | +| `%food%` | Hunger als Zahl (0–20) | +| `%foodsym%` | Hunger als Symbole `◆◆◆◇◇` | +| `%compass%` | Kompass-Balken zentriert | +| `%ping%` | Ping in ms | +| `%online%` | Anzahl Online-Spieler | +| `%maxplayers%` | Max. Spieleranzahl | +| `%money%` | Kontostand (Economy) | +| `%time%` | Aktuelle Uhrzeit | +| `%date%` | Aktuelles Datum | +| `%playtime%` | Spielzeit der Session `TT HH:MM:SS` | +| `%x%` `%y%` `%z%` | Koordinaten | +| `%world%` | Welt-Name | +| `%gamemode%` | Spielmodus (SURVIVAL, CREATIVE, …) | +| `%exp%` | XP-Level | +| `%speed%` | Laufgeschwindigkeit | +| `%news%` | News-Ticker | +| `%line%` | Trennlinie (konfigurierbar) | + +#### Admin-Placeholders (BungeeCord-seitig) + +| Placeholder | Beschreibung | +|---|---| +| `%tps%` | Server-TPS | +| `%ram%` | RAM-Nutzung | +| `%proxymem%` | Proxy RAM | +| `%uptime%` | Proxy-Laufzeit `HH:MM:SS` | +| `%servers%` | Anzahl verbundener Backend-Server | + +#### Spezial-Placeholders + +| Placeholder | Beschreibung | +|---|---| +| `%gradient:F1:F2:TEXT%` | Farbverlauf von F1 nach F2 über TEXT (beliebig viele Stopps) | +| `%line%` | Trennlinie aus `scoreboard.separator` | +| `%news%` | News-Ticker-Fenster | + +Farben für Gradient: Hex (`#RRGGBB`, `&#RRGGBB`) oder Minecraft-Codes (`&0`–`&f`). + +--- + +### Konfiguration (Scoreboard) + +Datei: `plugins/StatusAPI/scoreboard.properties` + +```properties +scoreboard.enabled=true +scoreboard.update_interval=500 # Millisekunden, min. 250 +scoreboard.title=&lViper Network # Kein Farbcode → Wave übernimmt Farbe +scoreboard.admin_title=&l[Admin] Panel +scoreboard.admin_permission=statusapi.scoreboard.admin + +# Wave-Animation +scoreboard.rainbow.enabled=true +scoreboard.rainbow.mode=wave # wave | chars | line +scoreboard.rainbow.speed=10 # 1=sehr langsam, 10=normal, 50=schnell +scoreboard.rainbow.colors=#FF0000,#FF6600,#FFFF00,#00FF00,#00FFFF,#0000FF,#FF00FF + +# News-Ticker +scoreboard.news.text=Willkommen auf Viper Network! +scoreboard.news.prefix=&8[&6News&8] &r # Leer lassen zum Deaktivieren +scoreboard.news.width=20 +scoreboard.news.speed=1 + +# Zeilenrotation (Sekunden pro Variante) +scoreboard.rotation_interval=4 + +# Separator für %line% +scoreboard.separator=&8&m-------------------- + +# Zeilen (max. 15 sichtbar, bis zu 20 definierbar) +# scoreboard.lines.N = Variante 1 (dauerhaft) +# scoreboard.lines.N.2 = Variante 2 (rotiert nach rotation_interval Sekunden) +# scoreboard.lines.N.3 = Variante 3 usw. +scoreboard.lines.1=%line% +scoreboard.lines.2=%gradient:&b:&f:&b:&l> Player Info:% +scoreboard.lines.3=&7%rank% &f%player% +scoreboard.lines.4= +scoreboard.lines.5=&7Spielzeit: &f%playtime% +scoreboard.lines.5.2=&7Leben: &c%health% +scoreboard.lines.5.3=&7Hunger: B4513%foodsym% +scoreboard.lines.6= +scoreboard.lines.7=%gradient:&b:&f:&b:&l> Money:% +scoreboard.lines.8=&a$%money% +scoreboard.lines.9= +scoreboard.lines.10=%gradient:&b:&f:&b:&l> Server Info:% +scoreboard.lines.11=&f%server% +scoreboard.lines.11.2=&7Ping: &f%ping%ms &8| &7Online: &f%online% +scoreboard.lines.12= +scoreboard.lines.13=%news% +scoreboard.lines.14=%line% +scoreboard.lines.15=&7%compass% + +# Admin-Zeilen (eigenes Objective, automatisch für Spieler mit Admin-Permission) +scoreboard.admin_lines.1=%line% +scoreboard.admin_lines.2=%gradient:&b:&f:&b:&l> Player Info:% +scoreboard.admin_lines.3=&7%rank% &f%player% +scoreboard.admin_lines.4=&7Gamemode: &f%gamemode% +scoreboard.admin_lines.5=&7Leben: &c%health% +scoreboard.admin_lines.5.2=&7Hunger: B4513%foodsym% +scoreboard.admin_lines.6= +scoreboard.admin_lines.7=%gradient:&b:&f:&b:&l> Server Info:% +scoreboard.admin_lines.8=&f%server% &8| &7RAM: &e%ram% +scoreboard.admin_lines.8.2=&7Proxy: &f%uptime% +scoreboard.admin_lines.9= +scoreboard.admin_lines.10=&7TPS: &a%tps% +scoreboard.admin_lines.11= +scoreboard.admin_lines.12=&7Spieler: &f%online% &8| &7%maxplayers% +scoreboard.admin_lines.13=%news% +scoreboard.admin_lines.14=%line% +scoreboard.admin_lines.15=&7%compass% +scoreboard.admin_lines.15.2=&7Pos: X:&f%x% &7Y:&f%y% &7Z:&f%z% +``` + +#### Separator-Stile + +| Stil | Wert | +|---|---| +| Standard | `&8&m--------------------` | +| Doppelt | `&8&m====================` | +| Wellig | `&8&m~~~~~~~~~~~~~~~~~~~~` | +| Dünn | `&8&m────────────────────` | +| Dick | `&8&m════════════════════` | +| Diamanten | `&8◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇` | +| Gradient | `%gradient:&8:&7:────────────────────%` | +| Leer | *(leer lassen)* | + +--- + +### Commands (Scoreboard) + +| Command | Aliase | Beschreibung | +|---|---|---| +| `/scoreboard` | `/sb`, `/togglesb` | Scoreboard ein-/ausblenden (Toggle) | +| `/sb hide` | | Scoreboard ausblenden | +| `/sb show` | | Scoreboard einblenden | +| `/sb player` | | Player-Scoreboard anzeigen | +| `/sb admin` | | Admin-Scoreboard anzeigen (Permission erforderlich) | + +**Permission:** `statusapi.scoreboard.admin` – Admin-Scoreboard + `/sb admin` + +--- + +## StatusAPIBridge + +StatusAPIBridge läuft auf jedem **Backend-Server** (Spigot/Paper) und sendet Spielerdaten in Echtzeit an StatusAPI. + +### Gesendete Daten + +| Datenpunkt | Endpunkt | Beschreibung | +|---|---|---| +| Health | `POST /scoreboard/health` | Aktuelle HP | +| Kompass (Yaw) | `POST /scoreboard/compass` | Blickrichtung (0–360°) | +| TPS | `POST /scoreboard/tps` | Server-TPS | +| Welt | `POST /player/world` | Welt-Name | +| Position, Gamemode, Exp, Food, Speed | `POST /player/data` | Erweiterte Spielerdaten | + +### Konfiguration (StatusAPIBridge) + +Datei: `plugins/StatusAPIBridge/config.yml` + +```yaml +statusapi-url: "http://127.0.0.1:9191" +scoreboard-sync-interval-ticks: 20 # Ticks zwischen Daten-Pushes (20 = 1s) +compass-threshold: 0.5 # Minimale Yaw-Änderung für Kompass-Update (Grad) +``` --- @@ -361,19 +584,28 @@ statusapi-sync: ### StatusAPI installieren (Proxy) ``` -1. StatusAPI.jar → plugins/ auf dem Proxy -2. Proxy starten → Konfigurationsdateien werden erzeugt +1. StatusAPI.jar → plugins/ auf dem Proxy +2. Proxy starten → Konfigurationsdateien werden erzeugt 3. Proxy stoppen 4. Konfigurationen anpassen: - verify.properties · chat.yml · network-guard.properties · blocked-commands.yml + verify.properties · chat.yml · network-guard.properties · scoreboard.properties 5. Proxy neu starten ``` +### StatusAPIBridge installieren (Backend) + +``` +1. StatusAPIBridge.jar → plugins/ auf jedem Backend-Server +2. Server starten → config.yml wird erzeugt +3. config.yml anpassen → statusapi-url auf Proxy-IP setzen +4. Server neu starten +``` + ### BackendJoinGuard installieren (Backend) ``` 1. BackendJoinGuard.jar → plugins/ auf jedem Backend-Server -2. Server starten → config.yml wird erzeugt +2. Server starten → config.yml wird erzeugt 3. config.yml anpassen 4. Server neu starten oder /backendguard reload ausführen ``` @@ -396,9 +628,27 @@ Erfordert StatusAPI ≥ 4.1.0. | Attack-Meldungen fehlen in Discord | `networkinfo.webhook.enabled` und `.url` prüfen · `networkinfo.attack.enabled` und `api_key`-Header prüfen | | AntiBot zu hart / zu weich | `antibot.profile` auf `strict` oder `high-traffic` setzen · Schwellwerte in `network-guard.properties` feinjustieren · `/antibot reload` ausführen | +### ScoreboardModule + +| Problem | Mögliche Ursachen & Lösung | +|---|---| +| Scoreboard verschwindet nach Join | `scoreboard.update_interval` muss mind. 250ms sein – nicht auf `1` setzen | +| Wave-Titel hängt / springt | `scoreboard.rainbow.speed` reduzieren · Empfohlen: 10–30 | +| Hex-Farben werden nicht angezeigt | Titel ohne feste Farb-Codes schreiben: `&lViper Network` statt `&6&lViper Network` | +| News-Ticker stoppt kurz | Normal – 4-Zeichen-Pause zwischen Durchläufen · `scoreboard.news.speed` erhöhen | +| Kompass nicht mittig | `COMPASS_WIN` in der Quellcode-Konstante anpassen (Standard: 19) | +| `too many queued packets` | `update_interval` zu niedrig – auf mind. 500ms erhöhen | + +### StatusAPIBridge + +| Problem | Mögliche Ursachen & Lösung | +|---|---| +| Herzen zeigen immer voll | StatusAPIBridge nicht installiert oder `statusapi-url` falsch konfiguriert | +| Kompass bewegt sich nicht | Bridge läuft, aber Spieler steht still – PlayerMoveEvent sendet nur bei Bewegung | + ### BackendJoinGuard | Problem | Mögliche Ursachen & Lösung | |---|---| -| Spieler werden trotz Proxy geblockt | Proxy-IP in `allowed-proxy-ips` korrekt eintragen · Bei mehreren Segmenten CIDR-Eintrag nutzen · Proxy-Konfiguration (Velocity/BungeeCord) prüfen | -| Sync mit StatusAPI funktioniert nicht | `base-url` und Port prüfen · `api-key` muss identisch zu `backendguard.sync.api_key` sein · `log-sync-errors: true` setzen und Konsole prüfen | \ No newline at end of file +| Spieler werden trotz Proxy geblockt | Proxy-IP in `allowed-proxy-ips` korrekt eintragen · Bei mehreren Segmenten CIDR-Eintrag nutzen | +| Sync mit StatusAPI funktioniert nicht | `base-url` und Port prüfen · `api-key` muss identisch zu `backendguard.sync.api_key` sein | \ No newline at end of file