EliteEssentials | Everything Your Server Needs and More!

Homes, warps, player warps, TPA, RTP, kits, economy, bans, mutes, warnings, admin UI, chat formatting, 500+ configurable messages, SQL storage, PlaceholderAPI, LuckPerms & HyperPerms. The most complete essentials mod for Hytale trusted by top servers.

File Details

EliteEssentials-2.0.3.jar

  • R
  • Mar 31, 2026
  • 8.38 MB
  • 520
  • Early Access

File Name

EliteEssentials-2.0.3.jar

Supported Versions

  • Early Access

2.0.3 - 2026-03-29

Added

  • Player Warps (/pwarp) -- a full player warp system where players can create, share, and teleport to each other's warp locations. Disabled by default; enable with playerWarps.enabled: true in config.json
    • /pwarp shows a help menu with all subcommands
    • /pwarp gui opens an interactive GUI with pagination, showing warp name, owner, description, and visibility
    • /pwarp create <public|private> <name> [description] creates a warp at the player's current location
    • /pwarp delete <name> deletes a warp (owner only, or admin with pwarp.admin.delete)
    • /pwarp <name> teleports to a player warp with warmup, cooldown, and cost support
    • /pwarp list shows the player's own warps with count and limit
    • /pwarp info <name> shows warp details (owner, visibility, description, coordinates)
    • /pwarp setdesc <name> <description> updates a warp's description
    • /pwarp setloc <name> moves a warp to the player's current position
    • /pwarp toggle <name> switches a warp between public and private visibility
    • Public warps are visible and usable by all players; private warps are only visible to the owner
    • GUI includes delete button for owned warps with double-click confirmation (same pattern as server warps)
    • Full storage backend support: JSON (player_warps.json), H2, and MySQL. Follows the configured storage.storageType automatically. SQL schema is added via migration (v3)
    • Full LuckPerms/HyperPerms integration: per-group warp limits (pwarp.limit.<number>, pwarp.limit.unlimited), cooldown/warmup bypass and overrides, cost bypass
    • Config section: playerWarps with enabled (default true), blacklistedWorlds (wildcard support), cooldownSeconds, warmupSeconds, maxWarps, groupLimits, cost (teleport), createCost (creation)
    • 25+ configurable messages in messages.json (all prefixed with pwarp or gui.PlayerWarp)
    • Warp names validated: alphanumeric with underscore/dash, max 32 chars. Descriptions max 100 chars
    • Reload support via /eliteessentials reload
  • Per-rank kit cooldowns — kit cooldowns can now be overridden per rank using LuckPerms or HyperPerms permissions. Assign eliteessentials.command.kit.cooldown.<kitname>.<seconds> to a group to give that rank a custom cooldown for a specific kit (e.g. eliteessentials.command.kit.cooldown.daily.3600 for a 1-hour cooldown on the "daily" kit). The existing eliteessentials.command.kit.bypass.cooldown permission still works to skip cooldowns entirely. Without a permission override, the kit's default cooldown from kits.json is used. Follows the same pattern as /heal, /repair, /rtp, and other commands that already support per-rank cooldowns
  • Kit inventory space check — kits can no longer be claimed when the player's inventory is full. If there aren't enough empty slots in hotbar/storage to hold the kit items (accounting for items that fit in their target slots), the claim is blocked with a configurable message (kitInventoryFull). Replace-inventory kits are exempt since they clear the inventory first. Previously, overflow items were silently dropped on the ground
  • Player Warps in /eeadmin Player Data tab — the Player Data tab now shows a "Player Warps" section listing all warps created by the looked-up player. Each entry displays the warp name, visibility ([Public]/[OP]), and coordinates with TP and DEL buttons matching the existing Homes layout. Warp count is also shown in the summary panel. Deletions are logged to the activity log. Gated by the existing eliteessentials.admin.playerdata permission
  • Quick-remove buttons in /eeadmin Bans, Mutes, and Warnings tabs — active bans, active mutes, and warning entries now display an <input disabled="disabled" type="checkbox" checked="checked" /> button next to each row. Clicking it immediately unbans, unmutes, or removes that individual warning without needing to type the player name into the unban/unmute input field. The ban list handles both permanent and temp bans. Warning removal is per-entry (not clear-all), so admins can surgically remove a single warning from a player's history. All removals are logged to the activity log

Fixed

  • /freeze not actually freezing players — freeze only set movement speeds to 0 once (on command execution or player join), but the Hytale engine resets MovementSettings on respawn, game mode changes, and other events, allowing frozen players to move again almost immediately. Added a scheduled enforcement loop in FreezeService that re-applies zero movement settings to all frozen online players every 500ms. Also centralized the movement manipulation into applyFreeze()/removeFreeze() static helpers to eliminate duplicated logic across the command, connect listener, and admin UI
  • /eeadmin freeze button not applying movement changes — the freeze/unfreeze buttons in both the Admin Dashboard and Admin Players pages only toggled the data state in FreezeService without actually applying or removing the movement speed changes on the target player. Freeze from the UI would only take effect after the player rejoined, and unfreeze would never restore movement. Both pages now dispatch applyFreeze()/removeFreeze() on the target's world thread for immediate effect
  • Sleep percentage not skipping nightSleepService.triggerSlumber() was setting WorldSomnolence to WorldSlumber state and promoting sleeping players to Slumber, but the engine's UpdateWorldSlumberSystem has additional validation (likely checking all players are in beds) that silently cancelled the slumber when only a percentage of players were sleeping. The "Skipping to morning" message would appear but time never advanced. Fixed by using timeResource.setGameTime() to jump directly to morning instead of relying on the engine's slumber pipeline. The 2.0.2 crash from setGameTime() was caused by also manually manipulating PlayerSomnolence/MorningWakeUp state; the new approach only sets the time and lets the engine handle player wake-up naturally. Also added debug logging at the counting and trigger points for easier diagnosis
  • Offline player lookup requiring exact name — all commands that target offline players (/ban, /tempban, /mute, /warn, /warnings, /clearwarnings, /freeze, /ipban, /ignore, /unignore, /mail send, /seen, /playerinfo, /playtime, /joindate, /eco, /wallet, and the admin UI pages) required the exact full player name to be typed. Online player lookup uses starts-with-ignore-case matching (typing "eli" finds "EliteScouter"), but the offline fallback did a strict exact match against the name index, so partial names would fail with "player never joined." Both PlayerFileStorage and SqlPlayerStorage now fall back to starts-with partial matching when no exact match is found, giving offline lookups the same fuzzy behavior as online ones
  • Admin Dashboard ban/tempban/ipban/mute/warn/clearwarns/warnlookup not working for offline players — the main Admin Dashboard page (/eeadmin) only used online player lookup (findPlayer()) for all ban, temp ban, IP ban, mute, warn, clear warnings, and warning lookup actions, showing "Player is not online" for any offline player. Added offline fallback via PlayerStorageProvider.getUuidByName() to all seven actions so they now work for any player who has joined before. IP ban uses the player's last known IP from their stored IP history when offline. The dedicated Admin Bans/Mutes/Warns sub-pages already had offline support
  • Warmup poller silent death - a single uncaught exception in WarmupService.pollWarmups() could permanently kill the warmup poller thread, causing all warmup-based teleports (/home, /warp, /tpa, /spawn, /back, /rtp) to silently stop working for every player until server restart. Admin teleports with 0 warmup were unaffected, masking the issue. Fixed by adding two-layer try/catch protection in pollWarmups() so one bad warmup entry cannot kill processing for other players, fixing ensurePollerRunning() to check isDone() in addition to isCancelled() so crashed pollers are properly detected and restarted, and adding a 60-second maximum lifetime safety net to clear stuck warmup entries that were never completed. Thanks to Dimotai for identifying and fixing this (PR #58)