File Details
HyperPerms-2.9.3.jar
- R
- Mar 28, 2026
- 6.68 MB
- 82
- Early Access
File Name
HyperPerms-2.9.3.jar
Supported Versions
- Early Access
v2.9.3 — March 26 Server Support
Server Version: 2026.03.26 (release & pre-release)
What's New (since 2.9.1)
Added
- Per-world permissions —
setpermandunsetpermcommands (group and user) now accept an optionalworldargument to restrict permissions to a specific world - Context display in info commands — Group and user info now shows context restrictions (e.g.
[world=Survival]) on permission nodes
Fixed
- API compatibility — Updated
TabListListenerto handleUniverse.get().getPlayers()returningCollection<PlayerRef>instead ofList<PlayerRef>, fixing compilation against the March 26 server update - Group inheritance priority — Child group permissions now always take precedence over inherited parent group permissions, regardless of weight values
- LuckPerms H2 migration version mismatch — Use isolated classloader when loading H2 driver from LuckPerms libs
- H2 driver selection — Prefer modern H2 driver over legacy to match current LuckPerms database format
- H2 migration column access — Use unquoted column name for ResultSet access
- Analytics flush data loss — Prevent race condition where permission check counters could be lost during flush
- ImportCommand silent failures — Await all group save futures before reporting success
- Non-atomic node mutations — Synchronize compound removeIf+add operations in setNode and addGroup
- SQL serialization — Use Gson instead of hand-rolled JSON parser for correct escaping of special characters
- Cycle detection case sensitivity — Normalize group names to lowercase in inheritance cycle detection
- Template loader race condition — Prevent concurrent template loading from clearing the map mid-load
- Confirmation memory leak — Clean up expired pending confirmations to prevent unbounded map growth
- Migration thread starvation — Use dedicated executor instead of common ForkJoinPool for LuckPerms migration
- SQLite nested ResultSet — Collect all rows before loading nodes to avoid driver conflicts on single connection
- SQLite backup consistency — Checkpoint WAL before copying database file to capture all committed writes
- SQLite restore PRAGMAs — Re-enable WAL and foreign_keys after restoring a backup
- Clone command data loss — Await save future in clone command before reporting success
- Group rename atomicity — Create new group before deleting old to prevent data loss on crash; await all save futures
- JSON storage path traversal — Validate names on load/delete paths to prevent directory traversal
- WildcardMatcher trace inconsistency — Add stripped-prefix matching to
checkWithTrace()to matchcheck()behavior
Full Changelog: https://github.com/HyperSystems-Development/HyperPerms/compare/v2.9.1...v2.9.3

