Changelog

v2.5.1

Track all changes, improvements, and fixes in HyperPerms releases.

Latest Release

v2.5.1 β€” Hytale-Native Permission Resolution

January 31, 2026

7 changesGitHub
Major version changes may include breaking changes. Always read the release notes before upgrading, especially for major versions.
v2.5.1Latest
January 31, 20267 changes

Changed

(5)
  • Aligned permission resolution order with Hytale's native implementation
  • Global wildcard (*) is now checked first, matching Hytale's behavior
  • Prefix wildcards now resolve shortest-first (a. before a.b.)
  • "admin.*"
  • "-admin.dangerous" # This still works

Fixed

(2)
  • Fixed user not being loaded during permission set checks, which could cause negation checks to fail
  • Fixed runtime permission discovery not finding the plugins directory
v2.5.0
January 30, 202615 changes

Fixed

(15)
  • Added hex color parsing (Β§xΒ§RΒ§RΒ§GΒ§GΒ§BΒ§B format)
  • Added underline and strikethrough format codes
  • Werchat detection: HyperPerms defers chat handling when Werchat is installed
  • New ChatAPI.getRawPrefix() and getRawSuffix() methods
  • Resolved chat prefix conflict when both plugins are installed
  • Dynamic event priority based on HyFactions presence
  • Output: [FactionTag] [RankPrefix] PlayerName: message
  • Complete rewrite using Hytale's packet system
  • Proper async prefix/suffix resolution
  • Strip color codes and invisible Unicode characters
  • Add left padding to prevent UI clipping
  • Null-safe server root resolution in LuckPerms migrator
  • Removed verbose debug logging spam
  • HyperHomes: Added share, admin, and bypass wildcard expansions
  • HyperWarps: Full wildcard expansion with bypass permissions
v2.4.5
January 26, 20264 changes

Fixed

(4)
  • Fixed optional dependency format for Hytale's plugin loader
  • Added comprehensive debug logging for Vault operations (enable with /hp debug)
  • Improved transient permission handling (graceful fallback instead of errors)
  • Enhanced cache invalidation after Vault-based modifications
v2.4.3
January 24, 202645 changes

Added

(22)
  • ~100+ new permission mappings between web UI and actual Hytale nodes
  • Legacy hytale.system.command.* format support for older configs
  • Wildcard expansion now includes all actual Hytale permissions
  • Case-insensitive permission checking for Hytale compatibility
  • Warp Commands:*
  • hytale.command.warp.go - Use warps
  • hytale.command.warp.set - Create warps
  • hytale.command.warp.remove - Delete warps
  • hytale.command.warp.list - List warps
  • hytale.command.warp.reload - Reload warp config
  • Inventory Commands:*
  • hytale.command.invsee - View other player inventories
  • hytale.command.invsee.modify - Edit other player inventories
  • hytale.command.spawnitem - Spawn items directly
  • Teleport Sub-commands:*
  • .teleport.all, .back, .forward, .top, .home, .world, .history
  • Preserved camelCase for hytale.editor.builderTools (case-sensitive!)
  • Full editor permission tree: brush, prefab, selection, packs, history
  • Added HYTALE_PERMISSIONS.md - Complete reference of all actual Hytale permission nodes
  • Web UI to Hytale permission mapping tables
  • Wildcard expansion documentation
  • Verification/testing steps

Changed

(8)
  • 30 files modified with +3,095 / -689 lines*
  • HYTALE_PERMISSIONS.md - Permission reference documentation
  • PermissionAliases.java - Centralized alias management (988 lines)
  • CaseInsensitiveSet.java - Hytale compatibility utility
  • HyperPermsCommand.java - Complete refactor (+800 lines)
  • PermissionRegistry.java - ~100 new permissions registered
  • PermissionResolver.java - Alias-aware permission checking
  • HyperPermsPermissionProvider.java - Alias expansion in provider

Fixed

(15)
  • Refactored command help system with centralized formatting
  • Flag syntax for optional arguments: --name, --filename instead of positional args
  • Visual indicators: βœ“, βœ—, β€’ for better UX
  • Replaced legacy color codes with Message API composition
  • Confirmation steps for destructive commands (group deletion, user clearing, backup restoration)
  • Per-entity locking for concurrent user and group modifications
  • Cache invalidation now occurs after storage operations
  • Duplicate track prevention during concurrent creation
  • Exception logging in event handlers
  • Alias expansion in getUserDirectPermissions() to match getExpandedPermissions() logic
  • Debug logging for alias expansion tracing
  • CaseInsensitiveSet for Hytale compatibility
  • Fixed /hp check command to use two required arguments
  • Fixed clearNodes() in user clear command to avoid UnsupportedOperationException
  • Cleaned up default-groups.json to use proper Hytale permission nodes
v2.4.1
January 24, 202617 changes

Changed

(17)
  • User data was never loaded during server startup - only groups and tracks were loaded
  • A race condition existed between loadUser() and getOrCreateUser() that could overwrite loaded user data
  • Fire-and-forget async saves could be lost during quick server shutdowns
  • 1. Load All Users on Startup*
  • Added userManager.loadAll().join() during server initialization
  • Ensures all user data is loaded from storage when the server starts
  • 2. Race Condition Prevention*
  • Modified loadUser() to use atomic compute() operations
  • Prevents newly-created default users from overwriting loaded user data
  • Only overwrites existing users if they still have the default group
  • 3. Synchronous Critical Saves*
  • Changed all critical saveUser() calls to await completion with .join()
  • Prevents data loss during rapid server shutdowns
  • Affects: setPrimaryGroup, addGroup, removeGroup, setPermission, removePermission, setPrefix, setSuffix, and clear commands
  • HyperPerms.java - Added user loading on startup
  • UserManagerImpl.java - Fixed race condition in loadUser()
  • HyperPermsCommand.java - Awaited critical save operations
v2.3.5
January 23, 202611 changes

Changed

(11)
  • Added permission aliasing for HyperHomes plugin
  • hyperhomes.gui now properly maps to com.hyperhomes.hyperhomes.command.homes.gui
  • hyperhomes.use grants access to main home commands
  • Wildcard hyperhomes.* expands to all HyperHomes permissions
  • Fixed user permissions not being recognized by Hytale's built-in system
  • Added virtual user group mechanism for direct user permissions
  • Proper wildcard expansion at all hierarchy levels
  • Full group inheritance chain resolution
  • Added TabList cache invalidation
  • Cleaned up debug logging
  • Performance improvements to permission resolution
v2.3.4
January 21, 20266 changes

Fixed

(6)
  • Fixed ChatAPI race condition - The getPrefix() and getSuffix() methods were firing two separate async operations that could race, causing incomplete cache entries. Now uses a single atomic preload operation.
  • Added ChatAPI preload on player connect - The ChatAPI cache is now preloaded when players connect, ensuring prefix/suffix data is available immediately for the first chat message.
  • Improved cache handling - Added defensive guards to prevent partial cache entries (e.g., prefix-only entries with null suffix) from being stored, which could persist for the 30-second TTL.
  • Added ChatAPI cleanup on disconnect - Player data is now properly invalidated from the ChatAPI cache when they disconnect.
  • ChatAPI.java - Fixed race condition in getPrefix/getSuffix, improved updateCache
  • HyperPermsPlugin.java - Added preload on connect and invalidate on disconnect
v2.3.3
January 21, 20267 changes

Changed

(7)
  • Fixed ChatAPI.getPrefix() returning empty - External plugins using the ChatAPI (like WerChat, HyFactions integrations) were sometimes getting empty prefixes due to timeout issues. Increased cache TTL and sync timeout for more reliable prefix/suffix retrieval.
  • Fixed web editor null pointer exceptions - The /hp apply command would fail with "Cannot invoke getAsString() because return value is null" when the web editor API returned data with missing fields. Added comprehensive null-safety checks to all JSON parsing.
  • Improved JSON parsing robustness - Manual permission entries in the web editor now handle multiple field name variations (node, permission, name) and gracefully skip invalid entries instead of crashing.
  • ChatAPI cache TTL increased from 10s to 30s
  • Sync fallback timeout increased from 100ms to 500ms
  • Added automatic preload on cache miss for better subsequent calls
  • Added safe JSON getter methods for defensive parsing
v2.3.2
January 20, 20264 changes

Added

(1)
  • Added /hp resetgroups --confirm command to reset all groups to plugin defaults

Fixed

(3)
  • Fix faction placeholders (%faction%, %factionrank%, %factiontag%) not resolving in chat
  • Fix permission inheritance - inherited permissions from parent groups now work correctly
  • Fix default group permission nodes - changed hytale.command. to hytale.system.command.
v2.3.1
January 20, 20260 changes

View full release notes on GitHub for details.

v2.3.0
January 20, 202611 changes

Added

(10)
  • Native prefix/suffix display in the server tab list
  • New tabList config section with customizable format
  • Uses same placeholders as chat (%prefix%, %player%, %suffix%, etc.)
  • Automatic cache invalidation when permissions change
  • New TabListAPI for external plugin integration
  • Commands now support offline players via UUID
  • /hp user addgroup {uuid} <group> creates user if needed
  • /hp user setprimarygroup {uuid} <group> works for players who haven't joined
  • /hp user setperm {uuid} <permission> works for offline players
  • Perfect for Tebex commands using {id} placeholder

Fixed

(1)
  • Fixed web editor "type field is null" crash when fetching changes
v2.2.5
January 18, 20260 changes

View full release notes on GitHub for details.

v2.2.4
January 18, 20260 changes

View full release notes on GitHub for details.

v2.2.3
January 18, 20261 change

Fixed

(1)
  • Fixed group deletion failing when group wasn't loaded in memory
v2.2.2
January 18, 20260 changes

View full release notes on GitHub for details.

v2.2.1
January 18, 20260 changes

View full release notes on GitHub for details.

v2.2.0
January 18, 20260 changes

View full release notes on GitHub for details.

Version Numbering

HyperPerms follows semantic versioning (MAJOR.MINOR.PATCH):

  • MAJOR - Breaking changes that may require config updates
  • MINOR - New features that are backwards compatible
  • PATCH - Bug fixes and minor improvements

Stay Updated

Get notified about new releases

Stay up to date with the latest HyperPerms updates, features, and security patches.

Subscribe to updates