Player Management

Player Management

Complete guide to the Players page — viewing online/offline players, player actions (kick, heal, teleport, gamemode, OP), inventory editing, item giving, and the player discovery system.


Player List

The Players page displays all known players with two data sources merged:

Data Source Merging

Source Priority Data Provided
Java Mod API (GET /players) Primary for online players Name, UUID, position, gamemode, health
Save Files (universe/players/*.json) Primary for offline players Full stats, inventory, last position

Merge logic:

  • Online players: API is source of truth for real-time stats. Save file data ignored while online.
  • Offline players: Save file overrides stats but keeps API name/UUID if available.
  • Stale API protection: If server status reports 0 online players but API still returns players, all are forced to online=false.

The player table polls every 15 seconds.

Player Discovery

Click Discover Players to scan universe/players/ directory for new save files:

  • Finds players who joined but aren't in the known players list
  • Success: "X new players discovered" with :count parameter
  • New players added to known_players.json

Displayed Columns

Column Description
Avatar Player skin head (identicon for demo mode)
Name In-game player name
Status Online (green) / Offline (gray)
Health Current / max health
Gamemode Current gamemode
Position X, Y, Z coordinates

Player Actions

Each action requires the hytale-admin.players-manage permission.

Kick Player

Detail Value
API POST /players/{name}/kick
Success "Player kicked: {player}"
Failure "Kick failed"
Notes Player must be online

Heal Player

Detail Value
API POST /players/{name}/heal
Success "Player healed: {player}"
Failure "Heal failed"
Notes Restores health to maximum

Teleport Player

Detail Value
API POST /players/{name}/teleport
Body { "x": float, "y": float, "z": float }
Success "Player teleported: {player}"
Failure "Teleport failed" OR API error message from $result['error']
Notes The API may return a specific error message instead of a generic failure

Set Gamemode

Detail Value
API POST /players/{name}/gamemode
Body { "mode": string }
Success "Gamemode set: {player} → {gamemode}"
Failure "Gamemode change failed"

OP / De-OP Player

Detail Value
API (OP) POST /players/{name}/op
API (De-OP) POST /players/{name}/deop
Success "Player OPed: {player}" / "Player de-OPed: {player}"
Failure "OP failed" / "De-OP failed"

Give Item

Detail Value
API POST /players/{name}/give
Body { "itemId": string, "amount": int }
Permission hytale-admin.players-inventory
Success "Item given: {item} ×{amount} to {player}"
Failure "Give failed" OR API error message

Clear Inventory

Detail Value
API POST /players/{name}/clear-inventory
Permission hytale-admin.players-inventory
Success "Inventory cleared: {player}"
Failure "Clear failed" OR API error message

Inventory Editor

The visual inventory editor requires the hytale-admin.players-inventory permission.

Online vs. Offline Editing

Player State Method Latency Risk
Online Java Mod API Real-time Low — API validates changes
Offline Direct save file editing Immediate Medium — no validation, be careful

Inventory Sections

Section Slots Description
Main Inventory Variable Regular inventory slots
Armor 4 Head, Chest, Hands, Legs
Quick Bar Variable Fast-access slots

Armor Slot Filtering

Items are filtered for appropriate armor slots by suffix:

  • _Head → Head slot only
  • _Chest → Chest slot only
  • _Hands → Hands slot only
  • _Legs → Legs slot only

Slot Operations

Set Slot:

Detail Value
API POST /players/{name}/inventory/set-slot
Success "Slot updated"
Failure "Slot update failed"

Remove Slot:

Detail Value
API POST /players/{name}/inventory/remove-slot
Success "Slot cleared: {section} #{slot}"
Failure "Slot clear failed"

Swap Slots:

Detail Value
API POST /players/{name}/inventory/swap-slots
Success "Slot moved"
Failure "Slot move failed"

Item Search

The item search function (GET /items/search) has special behavior:

  • Max 50 results to prevent Livewire snapshot bloat
  • Reverse lookup for non-English panels: Translated item names are reverse-mapped to English keys, then searched via the API with English terms
  • Auto-complete with debounce
  • Base64 item icons extracted from item data for visual display

Player Stats from Save Files

When reading save files (universe/players/*.json), the following stats are extracted:

Stat Field
Health health
Max Health maxHealth
Stamina stamina
Max Stamina maxStamina
Mana mana
Max Mana maxMana
Defence defence
Position X, Y, Z
Gamemode gamemode

BSON Compatibility: Player save files use json_decode($content, false) (NOT associative arrays) because Hytale uses a BSON-like encoding where the distinction between {} (object) and [] (array) matters. Using json_decode($content, true) would break the save format.


Troubleshooting

Player list is empty

  • No players have ever joined the server
  • Java mod not running (API unavailable)
  • known_players.json missing — try Discover Players

Online player shows as offline

  • Stale API protection triggered: Status says 0 online but API still returns the player
  • Wait for next poll cycle (15s)
  • Player may have disconnected between status and player API calls

Inventory editor doesn't load

  • Player save file missing or corrupted
  • For online players: API endpoint /players/{name}/inventory returned error
  • Check storage/logs/laravel.log for "Hytale API error"

"Give failed" with specific error

  • Invalid item ID — check item name spelling
  • Amount out of range
  • The API returns specific error messages in $result['error']

Item search returns wrong results

  • Non-English panel: reverse lookup maps translated name → English key → API search
  • Try searching in English for more accurate results
  • Item database may not include modded items

Save file editing issues

  • Never edit save files while a player is online — the server will overwrite your changes
  • The offline editor modifies the JSON directly — mistakes can corrupt the save
  • Back up the save file before major edits