It's been a while, so here's a new update.
As always, thanks for your continued support (and nice reviews :>). Please report any issues with this update to me over on
GitHub.
Also, just a quick reminder. Our
Discord server is rapidly approaching 500 members! If you've having issues with the plugin, the fastest way to get help is there.
On with the changes...
Listen for changes in data files and automatically update
If you're using YAML or JSON storage, LuckPerms will now monitor the storage files for any changes, and automatically update whenever changes are detected. This feature is somewhat experimental, and can be disabled in the config.
Implemented new file layout for YAML / JSON storage files
The file layouts have changed slightly, so they are easier to read and modify by hand. Any existing data will be automatically converted when you update.
Rewritten inheritance resolution system & improved performance for systems with lots of group inheritance
The entire inheritance system has been rewritten to be faster & more performant for when there are long inheritance trees.
Bulk updates
The old bulk edit commands have been replaced with a new & superior system. Details of that can be found here:
https://github.com/lucko/LuckPerms/wiki/Bulk-Editing
Other Misc Additions
- The exporter now runs in its own thread and processes user exports concurrently
- Added some alternate options for primary group calculation
- Slight speed improvement for import processes
- Automatically push updates to other servers via the messaging service when commands are ran
- Allow context pairs to be specified in commands
- Implemented accumulation of static contexts from a file
- Added '/lp group <group> listmembers' command
- Added optional MariaDB driver for those that can use it
- Some API changes / additions for 3.1
Fixes
- Fix getUuid and getName API methods returning null for Users, Groups and Tracks
- Fix creating delimiter patterns (escaping special characters in permissions / meta)
- Change bungeecord leave event priority to wait longer before unloading data
- Fix groupmanager global group migration on windows systems
- Fix race condition with Bukkit join handling where players are denied entry but subsequently login slightly later
- Fix issue where group nodes could be unset using the permission commands
- Fix issue where users with per-server groups wouldn't be assigned to the default group globally
- Fix sending multi-line text on MC 1.7
- Fallback to uuid in the search command if the username is unknown
- Ensure that all file i/o uses UTF-8 encoding
- Cleanup powerfulperms migration & remove support for older versions
- Update hikari version
- Fix migration not moving group weightings onto the group itself as well as to the chat meta held by it
- Fix mistake in removeprefix/removesuffix command descriptions
- Make the clone commands work for existing tracks/groups too
- Fix BungeePerms migration to account for group weights and negated permissions
- Include internal weight value in meta output if not already present
- Rename online-mode config option to use-server-uuids to better reflect/clarify its purpose
- Fix ClassCastException with MongoDB user search
- Fix primary groups being selected in reverse order
- Correct the case of group names when retrieved from permission nodes
- Fix NoSuchMethodError being thrown for older Bukkit config classes
- Clarify the file names of H2 and SQLite databases
- Correct zPermissions migration logging tag
- Fix some possible issues with dependency loading
- Output group/track lists in alphabetical order
- Fix removing temporary permissions/parents/meta in global context
- Fix parent set command also adding default
- Provide tab completion for rewritten arguments & add some more rules
- Force some config options to be read as lower case
- Fix some concurrency issues with login handling
- Remove missing permission nodes before adding new ones when saving users/groups with SQL storage
- Add "use-vault-server" config option, depreciate vault primary group override feature
- Fix misuse of exceptions in the permission holder class
- Replace guava caches with caffeine
- Properly sort yaml & json storage files
- Only allow one server and one world in context sets parsed from command args
- Don't attempt to migrate empty permissions
- Fix issue with /reloading and permission registration
- Ensure expired permissions are removed when users/groups are loaded for commands
- Log the file name when exceptions are thrown during i/o
- Remove getuuid command
... plus a bunch of other small misc fixes.