Hi everyone - this is a quick update covering everything that's been worked on over the last couple of months.
As always, if you'd like to support the work that goes into developing, maintaining and supporting the project, you can either write a nice comment here on Spigot (click the 5 stars on the right of the page) or
star the project on GitHub!
On with the changes!
API update to version 4.0.x
The major version (major.minor.patch) was incremented to version 4 since the last update, which indicates the LuckPerms API has had some backwards incompatible changes. If you don't have any plugins which hook with LP via its own API, then this will not affect you.
The main thing is is likely to impact upon is the LuckPerms placeholder expansions. If you use any of these, I encourage you to update them to the latest versions found here:
https://ci.lucko.me/job/LuckPermsPlaceholders/
If you maintain your own plugins which rely on LuckPerms, you can view an overview of the changes here:
https://gist.github.com/lucko/34c5c3c52ad80f8541395a096a937e91
It's been almost a whole year since the last backwards compatible change. The vast majority of the removed classes and methods had been deprecated for a number of months. It's unlikely to have a huge impact on your integrations unless you were using deprecated methods despite being warned not to.
These changes allowed the API to be thinned out, and brought up to date with how the plugin now operates internally.
Web Editor changes
The web editor has undergone some huge improvements over the last couple of weeks. The interface is now much easier to use, and the overall UI design has been nicely cleaned up. You can now easily make changes to existing entries, and input new data just by typing and hitting the enter key. Permissions are now "tab-completeable" in the input fields.
A big thanks to
@BrainStone for his invaluable assistence with implementing these features. We have a lot of other awesome changes in the works, coming soon(tm).
https://gfycat.com/WellgroomedHiddenGrosbeak
Flatfile storage updates
The flatfile storage system was rewritten using a library called configurate. This had no real visible changes, other than that inherited groups are now stored in their own section within the file.
Your existing files will be automatically updated over time - nothing to worry about.
Changes to the way LuckPerms hooks with the Bukkit permissions API
We now inject our own subscription map into the plugin manager instead of registering permissions individually for each player. This should have a slight positive impact on performance, and fix a few race conditions with default permissions.
Internal PermissionAttachment permissions are now applied at a higher priority than normal nodes using the 'transient' system already in LuckPerms.
Primary groups
A number of nasty bugs and inconsistencies with the primary group system have been tidied up in this update, including...
- Prioritise primary groups when two inherited groups have the same weight
- Make `parents-by-weight` the default primary group calculation method
- Primary groups should come first, not last, when ordering groups for inheritance
- Fix updating primary groups for players who've never joined the server with SQL storage types
- Ensure stored primary groups are always lowercase'd
- Ensure users are a member of their primary group
- Try to find the most appropriate primary group before just adding a user to default
Plus, some other misc bug fixes and minor changes
- Add highest_inherited and lowest_inherited meta stack elements
- Add group setdisplayname command
- Fix world context not being lowercase'd on BungeeCord
- Make the verbose output more readable when the check is made against a lot of contexts
- Remove cleanupUsers functionaility
- Remove usage of the now-redundant ExtractedContexts class
- Cleanup verbose handler
- Add config option to allow invalid usernames
- Form more descriptive console & import usernames
- Fix temporary group display format in parent info command
- Increase actions actor_name & actor_name column lengths
- Alias /lp player --> /lp user
- Don't prevent modification of `group.<group name>` nodes with permission subcommands
- Throw exception earlier if an invalid permission is added/removed via Vault
- Fix tab completions not being returned for empty strings
- Expose more connection pool settings in the config file
- Refactor Context Manager and improve the way context instances are cached
- Remove context pre-processing