Farbthema

Berechtigungen

Eranio

Berechtigungen

Vollständige Anleitung zum Berechtigungssystem, 17 granulare Berechtigungen, benutzerdefinierte Berechtigungsgruppen und OP-Verwaltung.


Berechtigungsreferenz

Das Plugin definiert 17 benutzerdefinierte Berechtigungen zur Steuerung des Zugriffs auf jede Funktion:

Berechtigung Gewährt Zugriff auf
hytale-admin.dashboard Dashboard anzeigen (Status, TPS, Betriebszeit)
hytale-admin.players-read Spielerliste anzeigen
hytale-admin.players-manage Spieler kicken, heilen, teleportieren, Spielmodus setzen, OP/De-OP
hytale-admin.players-inventory Spielerinventare anzeigen und bearbeiten, Items geben, Inventar leeren
hytale-admin.moderation-read Ban-Liste und Stummschaltungsliste anzeigen
hytale-admin.moderation-manage Bannen/Entbannen, Stummschalten/Entstummen
hytale-admin.chat-read Live-Chat-Monitor und Todeslog anzeigen
hytale-admin.chat-broadcast Broadcast-Nachrichten an alle Spieler senden
hytale-admin.world-read Weltinformationen anzeigen (Zeit, Wetter, Seed)
hytale-admin.world-manage Zeit und Wetter setzen, Warps verwalten
hytale-admin.serverconfig-read Serverkonfiguration und Whitelist anzeigen
hytale-admin.serverconfig-manage Serverkonfiguration bearbeiten, Whitelist verwalten
hytale-admin.backups-read Backup-Liste anzeigen
hytale-admin.backups-manage Backups erstellen, wiederherstellen und löschen
hytale-admin.mods-manage Seite Mods: Mods hochladen, Version anpassen, reparieren und löschen
hytale-admin.setup Setup-Seite aufrufen (Mod installieren/deinstallieren, Einstellungen)
hytale-admin.activity Aktivitätslog-Tab anzeigen

Berechtigungshierarchie

Berechtigungen folgen einem lesen → verwalten-Muster:

  • *-read = Nur-Lese-Zugriff
  • *-manage = Volle Kontrolle (beinhaltet Lesen)

Berechtigungsgruppen

Gruppe erstellen

Detail Wert
Berechtigung hytale-admin.serverconfig-manage
API POST /permissions/groups
Erfolg „Berechtigungsgruppe erstellt: {group}"
Fehler „Gruppenerfstellung fehlgeschlagen"

Gruppe löschen

Detail Wert
API DELETE /permissions/groups/{name}
Erfolg „Berechtigungsgruppe gelöscht: {group}"
Fehler „Gruppenlöschung fehlgeschlagen"

Beispielgruppen

Gruppenname Vorgeschlagene Berechtigungen
Moderator moderation-read, moderation-manage, chat-read, players-read
Builder world-read, world-manage, players-read
Admin Alle 16 Berechtigungen
Betrachter dashboard, players-read, chat-read, world-read

OP-Verwaltung

OP gewähren

Detail Wert
API POST /permissions/op/{uuid}
Erfolg „OP gewährt: {uuid}"
Fehler „OP-Gewährung fehlgeschlagen"

OP widerrufen

Detail Wert
API DELETE /permissions/op/{uuid}
Erfolg „OP widerrufen: {uuid}"
Fehler „OP-Widerruf fehlgeschlagen"

Hinweis: OP-Verwaltung verwendet UUIDs, nicht Spielernamen. Das Plugin löst Namen zu UUIDs für dich auf.


Spiel-Übersetzungssystem

Für die Item-Suche und den Inventar-Editor werden Item-Namen über eine Prioritätskette übersetzt:

Priorität Quelle Beschreibung
1 Java-Mod-I18n Serverseitige Item-Übersetzungen vom Mod
2 Statische PHP-Übersetzungen Mitgelieferte Übersetzungsdateien im Plugin
3 Formatierter Schlüssel-Fallback Item-Schlüssel als lesbarer Name formatiert

13 Sprachzuordnungen werden unterstützt.


Fehlerbehebung

Benutzer kann auf ein Feature nicht zugreifen

  • Prüfe welche Berechtigung für das Feature erforderlich ist (siehe Tabelle oben)
  • Verifiziere, dass der Benutzer/Unterbenutzer die Berechtigung zugewiesen hat
  • Serverbesitzer haben standardmäßig alle Berechtigungen

Berechtigungsgruppen-Erstellung fehlgeschlagen

  • Gruppenname existiert möglicherweise bereits
  • API-Verbindung unterbrochen
  • permissions.json-Datei gesperrt oder beschädigt

Aktivitätslog zeigt „unbekannt" als Akteur

  • Der Admin-Benutzername wird aus der Panel-Sitzung übergeben
  • Bei abgelaufener Sitzung während der Aktion kann der Akteur leer sein

API-Client & Interne Architektur

Vollständige API-Endpunkt-Dokumentation ist in der HytaleAdminAPI-Referenz verfügbar. Dieser Abschnitt behandelt den PHP-Client, den das Panel-Plugin intern zur Kommunikation mit dem Hytale-Server-Mod verwendet. Für Endpunkt-Parameter, Antwort-Schemata und Anfrage-Beispiele siehe die HytaleAdminAPI-Dokumentation.

HytaleApiService, PHP-Client

Das Panel-Plugin spricht mit dem Hytale-Mod über die Klasse HytaleApiService, die alle HTTP-Aufrufe kapselt. Jede Seite (Dashboard, Spieler, Chat usw.) nutzt diesen Dienst.

Woher die Verbindungsdaten kommen

Wert Quelle Beschreibung
Host Pelican FQDN der Node, auf der der Server läuft
Port mods/Eranio_HytaleAdminAPI/config.json Feld port, Standard 5550
Token mods/Eranio_HytaleAdminAPI/config.json Feld token, vom Mod beim ersten Start erzeugt
Zeitlimit mods/Eranio_HytaleAdminAPI/config.json Feld requestTimeout, Standard 10 Sekunden
Basis-Adresse berechnet http://{node-fqdn}:{port}

Das Plugin liest die config.json des Mods über Pelicans Datei-Schnittstelle (ModConfigReader), es gibt keine Egg-Variablen und keine Einstellung im Panel dafür. Ändern lassen sich die Werte im Fenster Einstellungen bearbeiten auf der Einrichtungsseite, das Plugin schreibt sie dann in dieselbe Datei.

// Aufbau der Verbindung (vereinfacht aus HytaleApiService)
$modConfig = app(ModConfigReader::class)->readConfig($server);
$baseUrl   = 'http://' . $server->node->fqdn . ':' . ($modConfig['port'] ?? 5550);

Http::baseUrl($baseUrl)
    ->timeout($modConfig['requestTimeout'] ?? 10)
    ->withHeaders([
        'X-Admin-Token' => $modConfig['token'] ?? '',
        'Accept'        => 'application/json',
    ])
    ->get('/api/status');

Der Token geht im Header X-Admin-Token mit, nicht als Bearer-Token. Schlägt ein Aufruf fehl (Fehlercode oder keine Verbindung), gibt der Dienst null zurück statt eine Ausnahme zu werfen. Die Seiten zeigen dann ihren Hinweis, dass die API nicht erreichbar ist.

Anfrage-Ablauf, Panel zum Server-Mod

┌──────────────┐    HTTP/JSON     ┌─────────────────┐    Java API    ┌──────────────┐
│  Panel Plugin │ ──────────────> │ Hytale Mod HTTP  │ ──────────── > │ Hytale Server│
│  (PHP/Laravel)│ <────────────── │ Server (Netty)   │ < ──────────── │   (Spiel)    │
│               │  JSON-Antwort   │                  │   Spielzustand │              │
└──────────────┘                  └─────────────────┘                └──────────────┘

Wichtige Architektur-Hinweise:

  • Der Mod bettet einen Netty HTTP-Server in den Hytale-Serverprozess ein
  • Alle spielverändernden Operationen (Kick, Ban, Teleport) laufen auf dem Server-Hauptthread
  • Nur-Lese-Operationen (Status, Spielerliste) können gecachte Daten verwenden
  • Die API ist synchron aus Panel-Sicht, intern wird aber an den Spielthread weitergeleitet

Funktion → API-Endpunkt-Zuordnung

Siehe HytaleAdminAPI-Referenz für Anfrage-/Antwort-Details jedes Endpunkts.

Panel-Funktion Verwendete API-Endpunkte Hinweise
Dashboard-Status GET /api/status, GET /api/version TPS laufend gemessen (Hytale-Ziel: 30)
Aktive Instanzen (Dashboard) GET /api/adventure, POST /api/adventure/* Portal-Zeit, Void-Invasion, Welt-Ereignisse, Instanz schließen
Spielerliste GET /api/players, GET /api/players/known Online-Spieler live, Offline-Spieler aus den Spielerdateien
Spieler-Aktionen POST /api/players/{name}/kick, /op, /deop, /heal, /teleport, /gamemode, /give Laufen auf dem Welt-Thread des Spielers
Abenteuer-Menü (Spieler) POST /api/adventure/teleport-player, /send-to-spawn, /scale, /history, /wilderness, /debug-screens, /instance/spawn, /instance/exit, POST /api/worlds/send Auch weltübergreifend
Inventar-Editor GET /api/players/{name}/inventory, POST /api/players/{name}/inventory/slot, /slot/remove, /slot/swap, /clear, GET /api/items Online-Spieler live, Offline-Spieler über die Spielerdatei
Banns GET /api/bans, POST /api/bans, DELETE /api/bans/{player} Hytales Zugriffssteuerung, bans.json
Stummschaltungen GET /api/mutes, POST /api/mutes, DELETE /api/mutes/{player} mutes.json im Mod-Ordner
Chat GET /api/chat, POST /api/chat/broadcast Ereignis-Logs des Mods
Tode GET /api/deaths Letzte 10 Tode und Gesamtzahl
Welten GET /api/worlds, POST /api/worlds/* Anlegen, Einstellungen, Standard, Entladen, Auslagern, Zurücksetzen, Papierkorb
Spielerwelten GET /api/playerworlds, POST /api/playerworlds/config Einstellungen und Zugang
Abenteuer (World-Seite) GET /api/adventure, POST /api/adventure/* Welt-Ereignisse, Portale, Spawn
Zeit und Wetter POST /api/world/time, POST /api/world/weather Erste geladene Welt
Warps GET /api/warps, POST /api/warps, POST /api/warps/{name}/tp, DELETE /api/warps/{name} Hytales TeleportPlugin
Erinnerungen GET /api/memories Serverweit
Backups GET /api/backup, GET /api/backup/status, POST /api/backup/create, DELETE /api/backup Hytales eigene Backup-Funktion
Serverkonfiguration GET /api/serverconfig, POST /api/serverconfig Neustart kann nötig sein
Whitelist GET /api/whitelist, POST /api/whitelist, DELETE /api/whitelist/{name} Unbekannte Namen löst Hytale auf
Rechte und OP GET /api/permissions, POST /api/permissions/op, DELETE /api/permissions/op/{uuid}, /user/group, /groups permissions.json
Installierte Mods (Mod-Manager) kein API-Aufruf Liest den Ordner mods/ über Pelicans Datei-Schnittstelle

Inventardaten

Bei Online-Spielern kommt das Inventar live von der API (GET /api/players/{name}/inventory), Änderungen gehen über POST /api/players/{name}/inventory/slot, /slot/remove, /slot/swap und /clear. Bei Offline-Spielern liest und schreibt das Plugin die Speicherdatei universe/players/{uuid}.json direkt über Pelicans Datei-Schnittstelle.

Die Speicherdateien werden als Objekte gelesen (json_decode($content, false)), nicht als Arrays. Hytale unterscheidet zwischen {} und [], ein Umwandeln in Arrays würde leere Objekte beim Zurückschreiben zu Listen machen und die Datei beschädigen.

Spielernamen (UUID-Auflösung)

Hytale speichert Spieler, Sperren und Rechte mit UUID. Das Panel zeigt Namen und sucht sie in known_players.json (vom Plugin gepflegt, neue Spieler kommen beim Öffnen von Dashboard oder Spielerseite dazu) und in whitelist.json. Ohne Treffer steht die UUID da.

Zwischenspeicher

Die Seiten fragen Daten bei jeder Aktualisierung frisch ab (Intervalle stehen bei den einzelnen Seiten). Zwischengespeichert wird nur wenig:

Was Wie lange Zweck
Übernahme neuer Spieler aus den Serverdateien höchstens alle 5 Minuten je Server Spart Dateizugriffe beim Öffnen der Seiten
Suche nach einer neuen Version des Admin-Mods höchstens alle 6 Stunden Abfrage bei eranio.de
Bilder von Gegenständen und Erinnerungen dauerhaft im Panel Seiten bleiben schnell

Demo-Modus-Architektur

Der Demo-Modus springt nie von selbst an, auch nicht bei einem Offline-Server. Er gilt, wenn

  • auf der Einrichtungsseite Demo-Modus einschalten gedrückt wurde (Berechtigung hytale-admin.setup, toggleDemoMode()), dann legt DemoInventoryService für diesen Server Testdaten an und der Modus bleibt bis zum Ausschalten aktiv, oder
  • eine Seite mit ?demo=1 aufgerufen wird, dann nur für diesen Aufruf.

Im Demo-Modus liefern DemoDataService und DemoInventoryService alle Daten, Aktionen zeigen nur eine Meldung („Diese Aktion wurde simuliert“) und senden nichts an den Server. Oben auf jeder Seite steht ein Hinweisbalken.

Ist der Server dagegen nur nicht erreichbar, zeigt das Dashboard API offline und die Seiten bleiben leer oder zeigen ihren Hinweis.

API-Client-Fehlertabelle

Symptom Ursache Lösung
Dashboard zeigt API offline Server aus, Mod nicht geladen oder Port gesperrt Server starten, auf der Einrichtungsseite prüfen, ob der Mod installiert ist, Port aus config.json in der Firewall freigeben
Alle Seiten leer, Mod läuft Token in config.json passt nicht config.json löschen und Server neu starten, der Mod erzeugt einen neuen Token, das Plugin liest ihn automatisch
Aktion meldet Fehler Der Mod hat mit einem Fehlercode geantwortet, der Dienst gibt dann null zurück Hytale-Serverlog und storage/logs/laravel.log prüfen
Seiten laden langsam oder unvollständig Zeitlimit zu knapp oder Server überlastet Zeitlimit für Anfragen in den Einstellungen erhöhen
Aktionen schlagen nach langer Pause fehl Sitzung abgelaufen Seite im Browser neu laden

Vollständige Fehlerreferenz (Alle Funktionen)

Verbindung

Symptom Ursache Lösung
Dashboard zeigt API offline Mod antwortet nicht Server starten, Mod auf der Einrichtungsseite prüfen
Seiten laden lange und bleiben leer Zeitlimit überschritten Zeitlimit für Anfragen erhöhen, Firewall prüfen
Alle Seiten leer, Mod läuft Token passt nicht (HTTP 403) config.json löschen, Server neu starten
Aktionen hängen nach langer Pause Sitzung abgelaufen Seite neu laden
Ausfälle mit Pausen Server überlastet TPS auf dem Dashboard prüfen

Spieler

Symptom Ursache Lösung
„Spieler konnte nicht gekickt werden“ Spieler hat den Server schon verlassen Liste aktualisiert sich nach spätestens 15 Sekunden
Sperren nicht möglich Auf der Spielerseite fehlt hytale-admin.players-manage, auf der Moderationsseite hytale-admin.moderation-manage Berechtigung vergeben
Neuer Spieler fehlt in der Liste Übernahme aus den Dateien läuft höchstens alle 5 Minuten Kurz warten und die Seite neu öffnen

Chat

Symptom Ursache Lösung
Keine neuen Nachrichten Chat-Abfrage zu selten eingestellt oder Mod nicht erreichbar Einstellung Chat-Abfrage alle prüfen
„Broadcast konnte nicht gesendet werden“ Verbindung zum Mod verloren Status auf dem Dashboard prüfen

Welt

Symptom Ursache Lösung
Zeit oder Wetter lässt sich nicht setzen hytale-admin.world-manage fehlt Berechtigung vergeben
Weltaktionen dauern lange Große Welt Zeitlimit für Anfragen erhöhen

Backups

Symptom Ursache Lösung
„Backup konnte nicht erstellt werden“ Kein Speicher oder keine Schreibrechte Speicher freigeben, Rechte des Backup-Ordners prüfen
„Sicherung konnte nicht wiederhergestellt werden“ Datei beschädigt oder Server läuft Server stoppen, anderes Backup nehmen

Serverkonfiguration

Symptom Ursache Lösung
Speichern nicht möglich hytale-admin.serverconfig-manage fehlt Berechtigung vergeben
Änderung ohne Wirkung Neustart nötig Server neu starten

API-Antwortcode-Referenz

Der Java-Mod antwortet mit diesen Statuscodes:

HTTP-Status Bedeutung Typischer Fall
200 Erfolg Normaler Betrieb
400 Ungültige Anfrage Pflichtfeld fehlt oder Wert ungültig
403 Verboten Token im Header X-Admin-Token fehlt oder passt nicht
404 Nicht gefunden Spieler, Welt, Warp oder Datei gibt es nicht
405 Methode nicht erlaubt Falsche HTTP-Methode für den Endpunkt
500 Serverfehler Interner Fehler im Mod, Hytale-Serverlog prüfen

Das Panel wertet jede Antwort außer 2xx als Fehler, die Seite zeigt dann ihre Fehlermeldung.


Meldungen

Die Erfolgs- und Fehlermeldungen jeder Aktion stehen mit ihrem genauen Wortlaut in den Abschnitten der einzelnen Seiten (Spieler, Moderation, Chat, Backups, Mods, Serverkonfiguration, Einrichtung).