README.md aktualisiert

This commit is contained in:
2026-05-10 13:16:59 +00:00
parent 81786dc084
commit 122e7735d5

266
README.md
View File

@@ -9,7 +9,7 @@
<p align="center">
Modulares BungeeCord-Plugin für Netzwerkbetrieb, Moderation und Integrationen.<br>
Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard
Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard · Scoreboard
</p>
---
@@ -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
</details>
<details>
<summary><strong>ScoreboardModule</strong></summary>
- 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
</details>
<details>
<summary><strong>NetworkInfo</strong></summary>
@@ -129,6 +149,11 @@ Basis-URL: `http://<proxy-ip>: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=<sync_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 (020) |
| `%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: &#8B4513%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: &#8B4513%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 (0360°) |
| 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: 1030 |
| 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 |
| 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 |