Spielerverwaltung
Spielerverwaltung
Vollständige Anleitung zur Spieler-Seite — Online-/Offline-Spieler anzeigen, Spieleraktionen (Kicken, Heilen, Teleportieren, Spielmodus, OP), Inventarbearbeitung, Items geben und das Spieler-Entdeckungssystem.
Spielerliste
Die Spieler-Seite zeigt alle bekannten Spieler mit zwei zusammengefügten Datenquellen:
Datenquellen-Zusammenführung
| Quelle | Priorität | Bereitgestellte Daten |
|---|---|---|
Java-Mod-API (GET /players) |
Primär für Online-Spieler | Name, UUID, Position, Spielmodus, Gesundheit |
Speicherdateien (universe/players/*.json) |
Primär für Offline-Spieler | Vollständige Stats, Inventar, letzte Position |
Zusammenführungslogik:
- Online-Spieler: API ist die Wahrheitsquelle für Echtzeitdaten. Speicherdatei-Daten werden ignoriert solange online.
- Offline-Spieler: Speicherdatei überschreibt Stats, behält aber API-Name/UUID bei falls verfügbar.
- Veralteter-API-Schutz: Wenn der Serverstatus 0 Online-Spieler meldet, die API aber noch Spieler zurückgibt, werden alle auf
online=falsegesetzt.
Die Spielertabelle aktualisiert sich alle 15 Sekunden.
Spieler-Entdeckung
Klicke Spieler entdecken um das universe/players/-Verzeichnis nach neuen Speicherdateien zu scannen:
- Findet Spieler, die beigetreten sind, aber nicht in der Spielerliste stehen
- Erfolg: „X neue Spieler entdeckt"
- Neue Spieler werden zu
known_players.jsonhinzugefügt
Angezeigte Spalten
| Spalte | Beschreibung |
|---|---|
| Avatar | Spieler-Skin-Kopf (Identicon im Demo-Modus) |
| Name | In-Game-Spielername |
| Status | Online (grün) / Offline (grau) |
| Gesundheit | Aktuell / Maximum |
| Spielmodus | Aktueller Spielmodus |
| Position | X, Y, Z Koordinaten |
Spieleraktionen
Jede Aktion erfordert die Berechtigung hytale-admin.players-manage.
Spieler kicken
| Detail | Wert |
|---|---|
| API | POST /players/{name}/kick |
| Erfolg | „Spieler gekickt: {player}" |
| Fehler | „Kick fehlgeschlagen" |
| Hinweis | Spieler muss online sein |
Spieler heilen
| Detail | Wert |
|---|---|
| API | POST /players/{name}/heal |
| Erfolg | „Spieler geheilt: {player}" |
| Fehler | „Heilung fehlgeschlagen" |
| Hinweis | Stellt Gesundheit auf Maximum wieder her |
Spieler teleportieren
| Detail | Wert |
|---|---|
| API | POST /players/{name}/teleport |
| Body | { "x": float, "y": float, "z": float } |
| Erfolg | „Spieler teleportiert: {player}" |
| Fehler | „Teleportation fehlgeschlagen" ODER API-Fehlermeldung aus $result['error'] |
Spielmodus setzen
| Detail | Wert |
|---|---|
| API | POST /players/{name}/gamemode |
| Body | { "mode": string } |
| Erfolg | „Spielmodus gesetzt: {player} → {gamemode}" |
| Fehler | „Spielmodus-Änderung fehlgeschlagen" |
OP / De-OP
| Detail | Wert |
|---|---|
| API (OP) | POST /players/{name}/op |
| API (De-OP) | POST /players/{name}/deop |
| Erfolg | „Spieler OP gegeben: {player}" / „Spieler De-OP: {player}" |
| Fehler | „OP fehlgeschlagen" / „De-OP fehlgeschlagen" |
Item geben
| Detail | Wert |
|---|---|
| API | POST /players/{name}/give |
| Body | { "itemId": string, "amount": int } |
| Berechtigung | hytale-admin.players-inventory |
| Erfolg | „Item gegeben: {item} ×{amount} an {player}" |
| Fehler | „Item-Gabe fehlgeschlagen" ODER API-Fehlermeldung |
Inventar leeren
| Detail | Wert |
|---|---|
| API | POST /players/{name}/clear-inventory |
| Berechtigung | hytale-admin.players-inventory |
| Erfolg | „Inventar geleert: {player}" |
| Fehler | „Inventar-Leeren fehlgeschlagen" ODER API-Fehlermeldung |
Inventar-Editor
Der visuelle Inventar-Editor erfordert die Berechtigung hytale-admin.players-inventory.
Online vs. Offline Bearbeitung
| Spielerstatus | Methode | Latenz | Risiko |
|---|---|---|---|
| Online | Java-Mod-API | Echtzeit | Gering — API validiert Änderungen |
| Offline | Direkte Speicherdatei-Bearbeitung | Sofort | Mittel — keine Validierung, Vorsicht geboten |
Inventar-Bereiche
| Bereich | Slots | Beschreibung |
|---|---|---|
| Hauptinventar | Variabel | Reguläre Inventar-Slots |
| Rüstung | 4 | Kopf, Brust, Hände, Beine |
| Schnellleiste | Variabel | Schnellzugriff-Slots |
Rüstungs-Slot-Filterung
Items werden nach passendem Rüstungsslot per Suffix gefiltert:
_Head→ Nur Kopf-Slot_Chest→ Nur Brust-Slot_Hands→ Nur Hände-Slot_Legs→ Nur Bein-Slot
Slot-Operationen
Slot setzen: Erfolg: „Slot aktualisiert" / Fehler: „Slot-Aktualisierung fehlgeschlagen"
Slot leeren: Erfolg: „Slot geleert: {section} #{slot}" / Fehler: „Slot-Leeren fehlgeschlagen"
Slots tauschen: Erfolg: „Slot verschoben" / Fehler: „Slot-Verschieben fehlgeschlagen"
Item-Suche
Die Item-Suchfunktion (GET /items/search) hat besonderes Verhalten:
- Max. 50 Ergebnisse um Livewire-Snapshot-Aufblähung zu verhindern
- Rückwärtssuche für nicht-englische Panels: Übersetzte Item-Namen werden auf englische Schlüssel zurückgemappt, dann via API mit englischen Begriffen gesucht
- Auto-Vervollständigung mit Debounce
- Base64-Item-Icons aus Item-Daten extrahiert für visuelle Darstellung
BSON-Kompatibilität: Spieler-Speicherdateien verwenden
json_decode($content, false)(NICHT assoziative Arrays), da Hytale eine BSON-ähnliche Kodierung nutzt, bei der die Unterscheidung zwischen{}(Objekt) und[](Array) wichtig ist.
Fehlerbehebung
Spielerliste ist leer
- Keine Spieler haben je den Server betreten
- Java-Mod läuft nicht (API nicht erreichbar)
known_players.jsonfehlt — Spieler entdecken versuchen
Online-Spieler wird als offline angezeigt
- Veralteter-API-Schutz ausgelöst: Status meldet 0 online, API gibt aber noch Spieler zurück
- Nächsten Abfragezyklus abwarten (15s)
Inventar-Editor lädt nicht
- Spieler-Speicherdatei fehlt oder ist beschädigt
- Bei Online-Spielern: API-Endpunkt hat Fehler zurückgegeben
storage/logs/laravel.logauf „Hytale API error" prüfen
„Item-Gabe fehlgeschlagen" mit spezifischem Fehler
- Ungültige Item-ID — Schreibweise des Item-Namens prüfen
- Menge außerhalb des Bereichs
- Die API gibt spezifische Fehlermeldungen in
$result['error']zurück
Speicherdatei-Bearbeitung — Probleme
- Niemals Speicherdateien bearbeiten, während ein Spieler online ist — der Server überschreibt die Änderungen
- Der Offline-Editor modifiziert das JSON direkt — Fehler können die Datei beschädigen
- Speicherdatei vor größeren Änderungen sichern