README.md aktualisiert

This commit is contained in:
2026-05-26 12:46:36 +00:00
parent 8e9d7bec21
commit 45e1e3cbc0

121
README.md
View File

@@ -1,6 +1,6 @@
# StatusAPI BungeeCord Plugin # StatusAPI BungeeCord Plugin
> **Version:** 4.1.2 · **Autor:** M_Viper · **Plattform:** BungeeCord · **Minecraft:** 1.20+ > **Version:** 4.1.4 · **Autor:** M_Viper · **Plattform:** BungeeCord · **Minecraft:** 1.20+
StatusAPI ist ein umfassendes BungeeCord-Plugin, das als zentrale Schaltstelle für dein Minecraft-Netzwerk dient. Es vereint Chat-Management, Anti-Bot-Schutz, Scoreboard, Tablist, Wirtschaft, Vanish, Forum-Anbindung, Spielerstatistiken, einen integrierten HTTP-Server und vieles mehr in einem vollständig modularen Plugin. StatusAPI ist ein umfassendes BungeeCord-Plugin, das als zentrale Schaltstelle für dein Minecraft-Netzwerk dient. Es vereint Chat-Management, Anti-Bot-Schutz, Scoreboard, Tablist, Wirtschaft, Vanish, Forum-Anbindung, Spielerstatistiken, einen integrierten HTTP-Server und vieles mehr in einem vollständig modularen Plugin.
@@ -29,6 +29,7 @@ StatusAPI ist ein umfassendes BungeeCord-Plugin, das als zentrale Schaltstelle f
- [4.15 StatsModule](#415-statsmodule) - [4.15 StatsModule](#415-statsmodule)
- [4.16 CustomCommandModule](#416-customcommandmodule) - [4.16 CustomCommandModule](#416-customcommandmodule)
- [4.17 HelpModule](#417-helpmodule) - [4.17 HelpModule](#417-helpmodule)
- [4.18 AfkModule](#418-afkmodule)
5. [HTTP-API](#5-http-api) 5. [HTTP-API](#5-http-api)
6. [Globales Rate-Limit-Framework](#6-globales-rate-limit-framework) 6. [Globales Rate-Limit-Framework](#6-globales-rate-limit-framework)
7. [Update-Checker](#7-update-checker) 7. [Update-Checker](#7-update-checker)
@@ -89,6 +90,7 @@ Alle Konfigurationsdateien befinden sich unter `/plugins/StatusAPI/` und werden
| `customcommands.yml` | Eigene Proxy-Befehle (wird beim ersten Start erstellt) | | `customcommands.yml` | Eigene Proxy-Befehle (wird beim ersten Start erstellt) |
| `tablist.properties` | Tablist-Layout, Header/Footer, Spalten, Server-Symbole (wird beim ersten Start erstellt) | | `tablist.properties` | Tablist-Layout, Header/Footer, Spalten, Server-Symbole (wird beim ersten Start erstellt) |
| `serverswitcher.properties` | Konfiguration des ServerSwitchers Befehl, Farben, Whitelist | | `serverswitcher.properties` | Konfiguration des ServerSwitchers Befehl, Farben, Whitelist |
| `afk.properties` | AFK-Modul Timeout, Title-Nachrichten-Paare, Animationen |
| `broadcasts.schedules` | Interne Datei gespeicherte, geplante Broadcasts (wird automatisch verwaltet) | | `broadcasts.schedules` | Interne Datei gespeicherte, geplante Broadcasts (wird automatisch verwaltet) |
| `antibot-security.log` | Sicherheitslog des AntiBotModuls geblockte IPs, VPN/Proxy-Treffer | | `antibot-security.log` | Sicherheitslog des AntiBotModuls geblockte IPs, VPN/Proxy-Treffer |
| `mutes.dat` | Persistente Speicherung aktiver Mutes (automatisch) | | `mutes.dat` | Persistente Speicherung aktiver Mutes (automatisch) |
@@ -134,7 +136,7 @@ Spieler können sich über `/msg` private Nachrichten schicken und mit `/r` auf
**Spieler-Ignore (Blocking)** **Spieler-Ignore (Blocking)**
Spieler können andere Spieler mit `/ignore` blockieren. Geblockte Spieler können keine Nachrichten, PMs oder HelpOps an den blocker senden. Der Blockstatus wird persistent in `blocks.dat` gespeichert und überlebt Serverneustarts. Spieler können andere Spieler mit `/ignore` blockieren. Geblockte Spieler können keine Nachrichten, PMs oder HelpOps an den Blocker senden. Der Blockstatus wird persistent in `blocks.dat` gespeichert und überlebt Serverneustarts.
**Mute-System** **Mute-System**
@@ -888,6 +890,98 @@ statusapi.help.permission=statusapi.admin
--- ---
### 4.18 AfkModule
Das AfkModule erkennt inaktive Spieler automatisch und bietet einen manuellen `/afk`-Befehl. AFK-Spieler erhalten einen dauerhaft sichtbaren Title-Screen und werden intern als AFK markiert (z. B. für Scoreboard-Platzhalter und Bridge-Integrationen).
**Funktionen:**
- Manuelles Umschalten des AFK-Status per `/afk`
- Automatische AFK-Erkennung nach konfigurierbarer Inaktivitätsdauer (Standard: 5 Minuten)
- Aufhebung des AFK-Status bei jeder Chat-Eingabe oder Bewegung (via StatusAPIBridge)
- Dauerhaft sichtbarer Title-Screen solange der Spieler AFK ist kein automatisches Ausblenden
- Zufällig gewählte, thematisch passende Title-Nachrichten-Paare (AFK-Nachricht + Rückkehr-Nachricht)
- Vollständige Gradient-Unterstützung im Title (`%gradient:FARBE1:FARBE2:...:TEXT%`)
- Bypass-Permission für Spieler, die nicht automatisch AFK gesetzt werden sollen
**Title-Nachrichten-Paare**
Für jeden AFK-Eintritt wird zufällig ein Nachrichten-Paar gewählt und für die gesamte AFK-Dauer beibehalten. Beim Verlassen des AFK-Status wird die zugehörige Rückkehr-Nachricht angezeigt. Bis zu 20 Paare können konfiguriert werden.
Das Format pro Paar: `setTitle|setSubtitle||unsetTitle|unsetSubtitle`
- `|` trennt Title und Subtitle innerhalb einer Seite
- `||` trennt die AFK-Nachricht (links) von der Rückkehr-Nachricht (rechts)
Vorkonfigurierte Beispiele (Auszug aus dem Standard-Config):
| AFK-Title | AFK-Subtitle | Rückkehr-Title | Rückkehr-Subtitle |
|---|---|---|---|
| `[AFK]` (Gradient) | Wahrscheinlich auf dem Klo... | Willkommen zurück! (Gradient) | War das Klo sauber? |
| `[AFK]` (Gradient) | Eingeschlafen. Bitte nicht wecken. | Aufgewacht! (Gradient) | Der Wecker hat funktioniert |
| `[AFK]` (Gradient) | Error 404: Spieler nicht gefunden | Spieler wieder online! (Gradient) | 404 behoben |
| `[AFK]` (Gradient) | Kaffeepause. Die wichtigste Pause. | Koffein erfolgreich zugeführt! (Gradient) | Jetzt wieder einsatzbereit |
**Gradient-Unterstützung**
Title-Zeilen unterstützen dieselbe Gradient-Syntax wie Scoreboard und Tablist:
```
%gradient:FARBE1:FARBE2:...:TEXT%
```
Farben können Minecraft-Codes (`&b`, `&f`) oder Hex-Werte (`#RRGGBB`, `&#RRGGBB`) sein. Beliebig viele Farb-Stopps sind möglich.
```properties
afk.title.pair.1=%gradient:&b:&f:&b:&l [AFK] %|&8Wahrscheinlich auf dem Klo...||%gradient:&a:&f:&a:&l Willkommen zurück! %|&7War das Klo sauber?
```
**Befehl:**
```
/afk AFK-Status manuell ein-/ausschalten
```
**Vollständige Konfiguration in `afk.properties`:**
```properties
# =====================================================
# AfkModule /afk Befehl & automatische AFK-Erkennung
# =====================================================
afk.enabled=true
# Automatisch AFK setzen nach X Sekunden ohne Aktivität
afk.idle_enabled=true
afk.idle_seconds=300
# Berechtigung zum Umgehen des auto-AFK
afk.permission.bypass=statusapi.afk.bypass
# ── Title-Anzeigezeiten (in Ticks, 20 Ticks = 1 Sekunde) ──
afk.title.fade_in=10
afk.title.stay=100
afk.title.fade_out=10
# ── Nachrichten-Paare ─────────────────────────────────────
# Format: setTitle|setSubtitle||unsetTitle|unsetSubtitle
# | trennt Title und Subtitle innerhalb einer Seite
# || trennt AFK-Nachricht (links) von Rückkehr-Nachricht (rechts)
# Gradient: %gradient:FARBE1:FARBE2:...:TEXT%
# Es wird zufällig ein Paar gewählt (max. 20 Paare).
afk.title.pair.1=%gradient:&b:&f:&b:&l [AFK] %|&8Wahrscheinlich auf dem Klo...||%gradient:&a:&f:&a:&l Willkommen zurück! %|&7War das Klo sauber?
afk.title.pair.2=%gradient:&b:&f:&b:&l [AFK] %|&8Hat den Stecker gezogen||%gradient:&a:&f:&a:&l Wieder eingesteckt! %|&7Der Strom ist zurück
afk.title.pair.3=%gradient:&b:&f:&b:&l [AFK] %|&8Eingeschlafen. Bitte nicht wecken.||%gradient:&a:&f:&a:&l Aufgewacht! %|&7Der Wecker hat funktioniert
# ... (bis zu 20 Paare möglich)
```
> **Hinweis:** Die `afk.properties` wird beim ersten Start automatisch erstellt und enthält 15 vorkonfigurierte, humorvolle Nachrichten-Paare.
> **Integration mit StatusAPIBridge:** Wenn die Bridge eine Koordinatenänderung meldet (`POST /player/data`), wird der AFK-Status des Spielers automatisch aufgehoben und die Rückkehr-Nachricht angezeigt.
---
## 5. HTTP-API ## 5. HTTP-API
StatusAPI startet einen eigenen HTTP-Server auf dem in `verify.properties` konfigurierten Port (Standard: `9191`). Der Server läuft in einem eigenen Thread mit 4 Worker-Threads und wird automatisch neugestartet, wenn er unerwartet stoppt (Watchdog-Task alle 15 Sekunden). StatusAPI startet einen eigenen HTTP-Server auf dem in `verify.properties` konfigurierten Port (Standard: `9191`). Der Server läuft in einem eigenen Thread mit 4 Worker-Threads und wird automatisch neugestartet, wenn er unerwartet stoppt (Watchdog-Task alle 15 Sekunden).
@@ -1069,6 +1163,12 @@ StatusAPI prüft automatisch alle 6 Stunden, ob eine neue Version verfügbar ist
| `/vanishlist` | `/vlist` | | Alle unsichtbaren Spieler anzeigen | | `/vanishlist` | `/vlist` | | Alle unsichtbaren Spieler anzeigen |
| `/go [servername]` | `/wechsel`, `/switch` | `serverswitcher.use` | Server-Menü öffnen oder direkt wechseln | | `/go [servername]` | `/wechsel`, `/switch` | `serverswitcher.use` | Server-Menü öffnen oder direkt wechseln |
### AFK
| Befehl | Aliases | Permission | Beschreibung |
|---|---|---|---|
| `/afk` | | | AFK-Status manuell ein-/ausschalten |
### Forum & Verify ### Forum & Verify
| Befehl | Aliases | Beschreibung | | Befehl | Aliases | Beschreibung |
@@ -1089,6 +1189,7 @@ StatusAPI prüft automatisch alle 6 Stunden, ob eine neue Version verfügbar ist
| `statusapi.bcmds` | OP | Zugriff auf `/bcmds reload` | | `statusapi.bcmds` | OP | Zugriff auf `/bcmds reload` |
| `statusapi.scoreboard.admin` | false | Admin-Scoreboard-Ansicht | | `statusapi.scoreboard.admin` | false | Admin-Scoreboard-Ansicht |
| `statusapi.scoreboard.supporter` | false | Supporter-Scoreboard-Ansicht | | `statusapi.scoreboard.supporter` | false | Supporter-Scoreboard-Ansicht |
| `statusapi.afk.bypass` | false | Nicht automatisch AFK gesetzt werden |
| `statusapi.multiaccountguard.bypass` | **keiner** | Mehrere Accounts gleichzeitig erlauben (**muss manuell vergeben werden!**) | | `statusapi.multiaccountguard.bypass` | **keiner** | Mehrere Accounts gleichzeitig erlauben (**muss manuell vergeben werden!**) |
| `statusapi.staff.notify` | false | MAG-Warnungen im Spiel empfangen | | `statusapi.staff.notify` | false | MAG-Warnungen im Spiel empfangen |
| `chat.channel.local` | true | Zugang zum Local-Kanal | | `chat.channel.local` | true | Zugang zum Local-Kanal |
@@ -1171,7 +1272,7 @@ Die StatusAPIBridge sendet folgende Daten an den Proxy:
| `POST /scoreboard/compass` | Himmelsrichtung des Spielers | | `POST /scoreboard/compass` | Himmelsrichtung des Spielers |
| `POST /scoreboard/tps` | TPS des Backend-Servers | | `POST /scoreboard/tps` | TPS des Backend-Servers |
| `POST /player/world` | Aktuelle Welt des Spielers | | `POST /player/world` | Aktuelle Welt des Spielers |
| `POST /player/data` | Koordinaten (x, y, z), Gamemode, Exp, Food, Speed | | `POST /player/data` | Koordinaten (x, y, z), Gamemode, Exp, Food, Speed löst außerdem AFK-Aufhebung aus |
| `POST /economy/update` | Aktueller Kontostand (von NexEco via Vault) | | `POST /economy/update` | Aktueller Kontostand (von NexEco via Vault) |
| `POST /stats/update` | Kills, Deaths, Spielzeit | | `POST /stats/update` | Kills, Deaths, Spielzeit |
| `POST /punishment/update` | Straf-Daten (von einem Punishment-Plugin) | | `POST /punishment/update` | Straf-Daten (von einem Punishment-Plugin) |
@@ -1272,4 +1373,16 @@ Reduziere die Scoring-Punkte für VPN/Proxy-Treffer oder erhöhe den `antibot.le
**Die Ingame-Hilfe zeigt den falschen Befehlsnamen** **Die Ingame-Hilfe zeigt den falschen Befehlsnamen**
Den Wert von `statusapi.help` in `verify.properties` anpassen und den Server **neu starten**. Ein `/statusapi reload` reicht nicht Befehle werden nur beim Serverstart registriert. Den Wert von `statusapi.help` in `verify.properties` anpassen und den Server **neu starten**. Ein `/statusapi reload` reicht nicht Befehle werden nur beim Serverstart registriert.
**Spieler werden nicht automatisch AFK gesetzt**
Prüfe in `afk.properties`:
1. `afk.enabled=true` gesetzt?
2. `afk.idle_enabled=true` gesetzt?
3. Hat der Spieler die Permission `statusapi.afk.bypass`? Dann wird er vom Auto-AFK ausgenommen.
4. Der Idle-Check läuft alle 10 Sekunden es kann bis zu `afk.idle_seconds + 10` Sekunden dauern, bis AFK ausgelöst wird.
**AFK-Title wird nicht angezeigt**
Prüfe, ob mindestens ein `afk.title.pair.*` in `afk.properties` korrekt konfiguriert ist. Das Format `setTitle|setSubtitle||unsetTitle|unsetSubtitle` muss exakt eingehalten werden insbesondere das doppelte `||` als Trenner zwischen AFK- und Rückkehr-Nachricht.