README.md aktualisiert
This commit is contained in:
121
README.md
121
README.md
@@ -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.
|
||||||
Reference in New Issue
Block a user