README.md aktualisiert

This commit is contained in:
2026-05-10 20:27:31 +00:00
parent 84853c7727
commit 63a18e224e

153
README.md
View File

@@ -27,7 +27,7 @@ Dieses Repository enthält zwei aufeinander abgestimmte Plugins:
| Plugin | Plattform | Zweck |
|---|---|---|
| **StatusAPI** | BungeeCord (Proxy) | HTTP-API, AntiBot, Chat, Moderation, Verify, Forum, Scoreboard |
| **StatusAPIBridge** | Paper / Spigot (Backend) | Sendet Spielerdaten (Health, Kompass, Position, etc.) an StatusAPI |
| **StatusAPIBridge** | Paper / Spigot (Backend) | Sendet Spielerdaten (Health, Kompass, Position, Ticket-Daten 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.
@@ -52,6 +52,7 @@ BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln aut
- [Betriebsarten](#betriebsarten)
- [Commands & Permissions](#commands--permissions-backendjoinguard)
- [Konfiguration](#konfiguration-backendjoinguard)
- [TicketSystem-Integration](#ticketsystem-integration)
- [Voraussetzungen & Installation](#voraussetzungen--installation)
- [Troubleshooting](#troubleshooting)
@@ -78,8 +79,8 @@ BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln aut
- 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
- Separates Admin-Scoreboard und Supporter-Scoreboard mit eigenen Zeilen und Permissions
- `/sb`-Command zum Ein-/Ausblenden und Umschalten zwischen Player/Supporter/Admin-Board
</details>
@@ -154,6 +155,7 @@ Basis-URL: `http://<proxy-ip>:9191` Port konfigurierbar über `statusapi.por
| `POST` | `/scoreboard/tps` | Server-TPS aktualisieren | intern |
| `POST` | `/player/world` | Spieler-Welt aktualisieren | intern |
| `POST` | `/player/data` | Koordinaten, Gamemode, Exp, Food, Speed | intern |
| `POST` | `/ticket/update` | TicketSystem-Daten aktualisieren (von StatusAPIBridge) | intern |
---
@@ -306,13 +308,25 @@ backendguard.sync.api_key=<sync_key>
Das ScoreboardModule zeigt ein vollständig konfigurierbares Sidebar-Scoreboard auf BungeeCord-Ebene. Spielerdaten werden über **StatusAPIBridge** vom Backend-Server in Echtzeit geliefert.
Es gibt drei separate Scoreboards, die automatisch anhand der Spieler-Permission zugewiesen werden:
| Board | Permission | Beschreibung |
|---|---|---|
| Spieler-Board | *(keine)* | Standard-Scoreboard für alle Spieler |
| Supporter-Board | `statusapi.scoreboard.supporter` | Zeigt Ticket-Übersicht und Support-relevante Infos |
| Admin-Board | `statusapi.scoreboard.admin` | Vollständige Server- und Ticket-Statistiken |
> Admin hat Vorrang vor Supporter hat ein Spieler beide Permissions, sieht er das Admin-Board.
---
### 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)
- **News-Ticker** konfigurierbarer Lauftext von rechts nach links (10 fps), nur im Spieler-Board
- **Zeilenrotation** pro Zeile bis zu 20 Varianten, wechseln automatisch
- **Admin-Scoreboard** eigenes Objective mit eigenen Zeilen, automatisch für Spieler mit Permission
- **Drei Scoreboards** Spieler, Supporter, Admin je eigenes Objective, Titel und Zeilen
- **Kompass** Himmelsrichtungs-Anzeige mit farbigen Buchstaben, zentriert
- **Herzen & Hunger** `♥♥♥♥♥♡♡♡♡♡` / `◆◆◆◆◆◇◇◇◇◇`
- **Separator-Styles** frei wählbar (Striche, Wellen, Gradient, leer, …)
@@ -346,7 +360,7 @@ Das ScoreboardModule zeigt ein vollständig konfigurierbares Sidebar-Scoreboard
| `%gamemode%` | Spielmodus (SURVIVAL, CREATIVE, …) |
| `%exp%` | XP-Level |
| `%speed%` | Laufgeschwindigkeit |
| `%news%` | News-Ticker |
| `%news%` | News-Ticker (nur Spieler-Board) |
| `%line%` | Trennlinie (konfigurierbar) |
#### Admin-Placeholders (BungeeCord-seitig)
@@ -359,6 +373,19 @@ Das ScoreboardModule zeigt ein vollständig konfigurierbares Sidebar-Scoreboard
| `%uptime%` | Proxy-Laufzeit `HH:MM:SS` |
| `%servers%` | Anzahl verbundener Backend-Server |
#### TicketSystem-Placeholders
Werden alle 5 Sekunden von **StatusAPIBridge** über `POST /ticket/update` an StatusAPI gesendet. Voraussetzung: **TicketSystem** läuft auf demselben Backend-Server wie StatusAPIBridge.
| Placeholder | Verfügbar für | Beschreibung |
|---|---|---|
| `%ticket_my_open%` | Spieler, Supporter, Admin | Eigene aktive Tickets (OPEN + CLAIMED + FORWARDED) |
| `%ticket_open%` | Supporter, Admin | Alle unbearbeiteten Tickets (Status: OPEN) |
| `%ticket_claimed%` | Admin | Alle Tickets in Bearbeitung (Status: CLAIMED) |
| `%ticket_rating_good%` | Admin | Positive Bewertungen gesamt |
| `%ticket_rating_bad%` | Admin | Negative Bewertungen gesamt |
| `%ticket_rating_pct%` | Admin | Prozentsatz positiver Bewertungen (oder `-` wenn keine) |
#### Spezial-Placeholders
| Placeholder | Beschreibung |
@@ -380,7 +407,9 @@ 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.supporter_title=&l[Support] Panel
scoreboard.admin_permission=statusapi.scoreboard.admin
scoreboard.supporter_permission=statusapi.scoreboard.supporter
# Wave-Animation
scoreboard.rainbow.enabled=true
@@ -388,9 +417,9 @@ 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
# News-Ticker (nur Spieler-Board)
scoreboard.news.text=Willkommen auf Viper Network!
scoreboard.news.prefix=&8[&6News&8] &r # Leer lassen zum Deaktivieren
scoreboard.news.prefix=&8[&6News&8] &r
scoreboard.news.width=20
scoreboard.news.speed=1
@@ -400,10 +429,11 @@ scoreboard.rotation_interval=4
# Separator für %line%
scoreboard.separator=&8&m--------------------
# Zeilen (max. 15 sichtbar, bis zu 20 definierbar)
# ===================================================
# SPIELER-ZEILEN (max. 15 sichtbar)
# 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%
@@ -423,7 +453,28 @@ scoreboard.lines.13=%news%
scoreboard.lines.14=%line%
scoreboard.lines.15=&7%compass%
# Admin-Zeilen (eigenes Objective, automatisch für Spieler mit Admin-Permission)
# ===================================================
# SUPPORTER-ZEILEN
# ===================================================
scoreboard.supporter_lines.1=%line%
scoreboard.supporter_lines.2=%gradient:&6:&f:&6:&l> Support Panel:%
scoreboard.supporter_lines.3=&7%rank% &f%player%
scoreboard.supporter_lines.4=&7Ping: &f%ping%ms &8| &7%server%
scoreboard.supporter_lines.5=
scoreboard.supporter_lines.6=%gradient:&6:&f:&6:&l> Tickets:%
scoreboard.supporter_lines.7=&7Offen: &c%ticket_open%
scoreboard.supporter_lines.8=&7Meine Tickets: &e%ticket_my_open%
scoreboard.supporter_lines.9=
scoreboard.supporter_lines.10=%gradient:&6:&f:&6:&l> Server Info:%
scoreboard.supporter_lines.11=&7Online: &f%online% &8/ &7%maxplayers%
scoreboard.supporter_lines.12=&7Zeit: &f%time%
scoreboard.supporter_lines.13=
scoreboard.supporter_lines.14=%line%
scoreboard.supporter_lines.15=&7%compass%
# ===================================================
# ADMIN-ZEILEN
# ===================================================
scoreboard.admin_lines.1=%line%
scoreboard.admin_lines.2=%gradient:&b:&f:&b:&l> Player Info:%
scoreboard.admin_lines.3=&7%rank% &f%player%
@@ -437,11 +488,11 @@ 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%
scoreboard.admin_lines.12=%gradient:&b:&f:&b:&l> Tickets:%
scoreboard.admin_lines.13=&7Offen: &c%ticket_open% &8| &7Aktiv: &e%ticket_claimed%
scoreboard.admin_lines.14=&7Bewertung: &a%ticket_rating_good%&8/&c%ticket_rating_bad% &7(&f%ticket_rating_pct%&7%&7)
scoreboard.admin_lines.15=%line%
scoreboard.admin_lines.15.2=&7%compass%
```
#### Separator-Stile
@@ -466,10 +517,15 @@ scoreboard.admin_lines.15.2=&7Pos: X:&f%x% &7Y:&f%y% &7Z:&f%z%
| `/scoreboard` | `/sb`, `/togglesb` | Scoreboard ein-/ausblenden (Toggle) |
| `/sb hide` | | Scoreboard ausblenden |
| `/sb show` | | Scoreboard einblenden |
| `/sb player` | | Player-Scoreboard anzeigen |
| `/sb player` | | Spieler-Scoreboard anzeigen |
| `/sb admin` | | Admin-Scoreboard anzeigen (Permission erforderlich) |
**Permission:** `statusapi.scoreboard.admin` Admin-Scoreboard + `/sb admin`
**Permissions:**
| Permission | Beschreibung |
|---|---|
| `statusapi.scoreboard.admin` | Admin-Scoreboard + `/sb admin` |
| `statusapi.scoreboard.supporter` | Supporter-Scoreboard (automatisch, kein Command nötig) |
---
@@ -486,6 +542,16 @@ StatusAPIBridge läuft auf jedem **Backend-Server** (Spigot/Paper) und sendet Sp
| TPS | `POST /scoreboard/tps` | Server-TPS |
| Welt | `POST /player/world` | Welt-Name |
| Position, Gamemode, Exp, Food, Speed | `POST /player/data` | Erweiterte Spielerdaten |
| TicketSystem-Daten | `POST /ticket/update` | Ticket-Statistiken (alle 5 Sekunden, falls TicketSystem installiert) |
### TicketSystem-Daten (automatisch)
Ist das **TicketSystem**-Plugin auf demselben Backend-Server installiert, liest StatusAPIBridge die Daten per Reflection und sendet sie alle 5 Sekunden:
- Globale Werte (Anzahl offener Tickets, Tickets in Bearbeitung, Bewertungen) nur bei Änderung
- Pro Spieler: Anzahl eigener aktiver Tickets (OPEN + CLAIMED + FORWARDED)
Es wird keine harte Abhängigkeit zum TicketSystem benötigt fehlt es, passiert nichts.
### Konfiguration (StatusAPIBridge)
@@ -566,6 +632,52 @@ statusapi-sync:
---
## TicketSystem-Integration
StatusAPI und StatusAPIBridge unterstützen eine optionale Integration mit dem **TicketSystem**-Plugin. Die Verbindung ist vollständig Reflection-basiert es sind keine harten Abhängigkeiten nötig.
### Architektur
```
TicketSystem (Bukkit)
↓ Reflection (alle 5s)
StatusAPIBridge → POST /ticket/update → StatusAPI (BungeeCord) → Scoreboard
```
### Voraussetzungen
- TicketSystem ist auf demselben Backend-Server installiert wie StatusAPIBridge
- StatusAPIBridge sendet die Daten automatisch keine zusätzliche Konfiguration nötig
### Verfügbare Placeholder im Scoreboard
| Placeholder | Für wen | Beschreibung |
|---|---|---|
| `%ticket_my_open%` | Spieler, Supporter, Admin | Eigene aktive Tickets (OPEN + CLAIMED + FORWARDED) |
| `%ticket_open%` | Supporter, Admin | Alle offenen Tickets (noch unbearbeitet) |
| `%ticket_claimed%` | Admin | Alle Tickets in Bearbeitung |
| `%ticket_rating_good%` | Admin | Positive Bewertungen gesamt |
| `%ticket_rating_bad%` | Admin | Negative Bewertungen gesamt |
| `%ticket_rating_pct%` | Admin | Prozentsatz positiver Bewertungen |
### PlaceholderAPI (PAPI)
Das TicketSystem selbst stellt über die Klasse `TicketPlaceholderExpansion` ebenfalls PAPI-Placeholder bereit (Prefix: `ticketsystem`):
| PAPI-Placeholder | Beschreibung |
|---|---|
| `%ticketsystem_my_open%` | Eigene aktive Tickets des Spielers |
| `%ticketsystem_admin_open%` | Alle offenen Tickets (Status: OPEN) |
| `%ticketsystem_admin_claimed%` | Alle Tickets in Bearbeitung (Status: CLAIMED) |
| `%ticketsystem_admin_rating_good%` | Positive Bewertungen gesamt |
| `%ticketsystem_admin_rating_bad%` | Negative Bewertungen gesamt |
| `%ticketsystem_admin_rating_total%` | Alle Bewertungen gesamt |
| `%ticketsystem_admin_rating_percent%` | Prozentsatz positiver Bewertungen |
> Diese PAPI-Placeholder sind unabhängig von StatusAPI und können in jedem PAPI-kompatiblen Plugin genutzt werden (z.B. andere Scoreboard-Plugins, Chat-Plugins).
---
## Voraussetzungen & Installation
### Voraussetzungen
@@ -580,6 +692,8 @@ statusapi-sync:
| Discord Webhook / Bot | | ✅ |
| Telegram Bot | | ✅ |
| WordPress / Forum-Backend | | ✅ |
| TicketSystem (Bukkit) | | ✅ |
| PlaceholderAPI (Bukkit) | | ✅ |
### StatusAPI installieren (Proxy)
@@ -638,6 +752,8 @@ Erfordert StatusAPI ≥ 4.1.0.
| 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 |
| Supporter-Board wird nicht angezeigt | Permission `statusapi.scoreboard.supporter` prüfen · `scoreboard.supporter_permission` in `scoreboard.properties` prüfen |
| Supporter sieht Admin-Board | Normal Admin-Permission hat Vorrang über Supporter-Permission |
### StatusAPIBridge
@@ -645,6 +761,7 @@ Erfordert StatusAPI ≥ 4.1.0.
|---|---|
| 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 |
| Ticket-Placeholder zeigen immer 0 | TicketSystem nicht auf demselben Server wie StatusAPIBridge · Konsole auf `[TicketPush]`-Fehler prüfen |
### BackendJoinGuard