File Details
HyperPerms-2.8.8.jar
- R
- Feb 24, 2026
- 6.67 MB
- 124
- Early Access
File Name
HyperPerms-2.8.8.jar
Supported Versions
- Early Access
🛡️ HyperPerms v2.8.8
Critical permission sync overhaul — fixes permission pollution, race conditions, and stale expired permissions.
🛰️ Server Version: 2026.02.19-1a311a592
🔧 Permission Sync Rewrite
- 🔄 Diff-based Hytale sync —
syncPermissionsToHytale()previously pushed all resolved permissions on every change, causing hundreds to accumulate inpermissions.json. Now computes a delta between Hytale's current state and HyperPerms' resolved set, only adding missing and removing stale entries - 🔒 Race condition fix — Multiple threads (command thread, scheduler, CF pool, web editor) could call sync simultaneously, racing on Hytale's non-thread-safe
HashSet. Added per-UUID synchronization locks and defensive copying - ⚡ Centralized sync logic — Six user commands and
HyperPermsPermissionProvidereach had inline sync calls via bootstrap reflection. All sync is now handled by a singleCacheInvalidator.setSyncListener()hook — every cache invalidation automatically triggers Hytale sync
⚡ Cache Invalidation Fixes
- 🎯 Targeted group invalidation — Group commands (
setperm,setprefix,setweight,setexpiry,parent add/remove) were callinginvalidateAll()instead of targetedinvalidateGroup(), causing unnecessary cache churn for unrelated users - ⏰ Expired permissions synced —
ExpiryCleanupTaskremoved expired nodes but didn't invalidate the cache or trigger Hytale sync — expired permissions remained active until the player reconnected - 🔗 Consistent invalidation API — Some commands used
getCache().invalidate()(bypassing sync) while others usedgetCacheInvalidator().invalidate(). All commands now unified ongetCacheInvalidator()
📖 Full Changelog: GitHub

