LuckPerms icon

LuckPerms -----

A permissions plugin for Minecraft servers (Bukkit/Spigot, BungeeCord & more)




Hello!

This is a minor release to align the version available here on the Spigot forums with the latest build on https://luckperms.net.

It includes the following changes since the last release:
  • Update adventure-platform for MC 1.20.2 support
  • Add healthcheck functionality to API
  • Fix duplicate UUID delete with Mongo storage
  • Update Minecraft wiki links in config file comments
  • Update adventure-platform for MC 1.20.4 support
  • Small performance optimization in BukkitPlatformListener
  • Fix MongoDB uri showing in logs if set using system property
  • Add modifyTrack method to TrackManager
  • Don't read nodes twice in SqlStorage
  • Add PostNetworkSyncEvent
  • Add custom payload message to API
  • Fix mongodb secrets being logged
  • Set mappings namespace to skip remapping on Paper 1.20.5+
  • Update adventure-platform for MC 1.20.6 support
Enjoy :)
----------, Jun 9, 2024

Hello! I hope you're all well.

I realised it has been just over a year since the last update was posted here (time flies!) so thought I should post a release with all of the changes/additions/fixes that have been implemented over the past 12 months.

Changelog
  • Upgrade H2 database engine to v2
  • Render minimessage strings in prefix/suffix/meta values
  • Add new messenger service using Nats
  • Add new messenger service using Postgres listen/notify
  • Add new messenger service using Redis in cluster mode
  • Add a basic rate limit for LP commands executed by players
  • Add a whole load of automated unit/integration tests
  • Add date on hover to action log
  • Update driver used for mariadb storage backend
  • Add paste subcommand to verbose tab completions
  • Fix user deletion not being correctly processed on SQL backends
  • Fix socket isVerified check
  • Fix concurrent errors in URLClassLoaderAccess
  • Fix suffix.duplicates metastack config setting being ignored
  • Fix classloaders not being cleaned up on shutdown
  • Fix handling of empty invalid command inputs
  • Fix reattempt of RabbitMQ connection on the first attempt

Enjoy :)

Cheers
~ lucko
----------, Aug 28, 2023

Hi everyone :)

This release of LP contains only one change to fix in-game commands on servers running the new Minecraft 1.19.1 release.

A technical explanation of why the issue occurred is on GitHub, but the tl;dr is that it was caused by some risky code, which has now been replaced with something better, & it shouldn't happen again!

Please accept my apologies for the delay in resolving this issue. I was away when the release dropped, and unfortunately plugin developers are not given the opportunity to prepare or test for new Minecraft versions in advance of the release. Maybe one day...!

Thanks again for your patience.

Cheers,
Luck <3
----------, Aug 3, 2022

Hey, a quick update for you all!

The main change this time is:

Update dependencies for full 1.19 support.
Note that LuckPerms worked already, but some "nice to have" features like Brigadier command syntax and hoverable/clickable text components rely on external libraries that needed to be updated.

Plus some other small changes:
  • Allow configuration properties to be set using environment variables or Java system properties
  • Maintain order of users/groups in refreshed web editor sessions
  • Update mongodb driver and correctly set uuid representation
  • Compacted data saved by /lp export to reduce file size
  • Some improvements to the built-in LuckPerms scheduler
  • Ensure web editor socket connections are closed when the plugin disables
  • Fix 'plugin message' messenger string encoding inconsistency

Enjoy :)
~Luck
----------, Jun 12, 2022

Hey everyone, I hope you're all well. Update time!

The main new feature in this update is the introduction of...

Web Editor Sockets (one-click saving!).

This new functionality allows for two-way communication between the LuckPerms plugin (running on your server) and the web editor in your browser!

Watch the video below for a quick demo of how it works. :)



As you can see, once you've created an initial session (e.g. by running /lp editor), you can make changes over-and-over in the editor without having to swap back to the server to run the applyedits command and create a new window. We hope that this will make the process of editing permissions faster and more enjoyable!

If you're interested in the technical details, please have a look at the pull request on GitHub. https://github.com/LuckPerms/LuckPerms/pull/3303

Some other changes in this update:
  • API 5.4 released
  • Fix cast to long in MongoStorage
  • Add config option to disable bulkupdate functionality
  • Clarify uuid type in user info command
  • Add default file name for export command
  • Retain cause node information for cached permission/meta data and provide via API and verbose command
  • Add full support for transient permissions through Vault API
  • Fix running LP commands from a modern Forge client
  • Optimize bulk user loading for editor command
  • Optimize parent resolution in info commands
  • Warn if the API was classloaded by another plugin

Enjoy :)
----------, Feb 9, 2022

Hi all,

A shorter changelog this time, but wanted to publish some changes so you can start using them right away!

I encourage all server admins to update to this version, regardless of whether you're making the jump to the new game version just yet. :)
  • Updated dependencies for full Minecraft 1.18 support (command tab complete and clickable messages weren't working)
  • Made some significant ContextSet performance improvements
  • Added redis authentication with username
  • Fixed username lookups for players who haven't joined the server before
  • Added a config option to selectively disable context calculators
  • Added warning messages for common web editor mistakes
  • Added pagination to the listgroups command
Hope you and your players are enjoying the new version!

Until next time,
~lucko
----------, Dec 2, 2021

Hi everyone,

I hope you're all well! This update brings the improvements and fixes added to the development builds over the past few months.

As always, if you like LuckPerms and want to support the work that goes into further development and maintenance, please consider supporting me on Patreon or GitHub Sponsors. A big big thank you to everyone who does already or has done so in the past, it is much appreciated. <3

No new big features this time I'm afraid, but still some nice fixes that are definitely worth updating for!

Changelog:
  • Add bulk update triggers for group related commands
  • Fix a NPE from null primary group in Vault hook
  • Add a more helpful error message when a user is null in LP API PlayerAdapter
  • Fix renamed groups not being saved before syncing with storage
  • Update adventure-platform for 1.17
  • Fix ReflectionClassPathAppender on Java 16+
  • Fix user housekeeper to be more lenient towards API usage
  • Fix toLowerCase/toUpperCase locale sensitivity
  • Fix empty prefix/suffix strings in YAML storage
  • Improve the way translations are loaded / cached locally
  • Fix meta/prefix/suffix nodes being negated to cancel inheritance

Cheers,
~lucko
----------, Oct 31, 2021

Hi all, I hope you are all keeping well.

The primary purpose of this update is to publish some some small bug fixes and changes relating to the recent Minecraft 1.17 release and move towards Java 16+.

Following some brief testing over the past couple of days, I'm pleased to confirm that LuckPerms is working well on the new version.

There is one caveat: unfortunately, the "legacy-api" extension which was released to ease the transition between LuckPerms v4 and v5 several months ago can no longer function correctly on Java 16. I currently do not plan to fix this, and instead encourage any of you still utilising it to remove the extension and update any plugins which depend on the LuckPerms API.

Additionally, this release includes a number of other changes:
  • Allow server name to be specified by a system property
  • Make console detection more resilient against spoofed UUIDs
  • Fix player locale retrieval on Bukkit 1.8
  • Fix very lenient duration parsing
  • Fix RCON permission checking for LP commands
  • Optimize Bukkit/Nukkit ChildProcessor refresh
  • Change command manager lock handling to avoid non-fair tryLock call
  • Fix 'meta settemp' ignoring temporary modifier
  • Send messaging service ping for creategroup command
  • Disallow empty permission node in the API and commands
  • Give default group if needed in API UserManager#modifyUser call
  • Fix potential race condition in API LuckPermsProvider#get
  • Parallelize user data load in web editor request
  • Add 'skip-bulkupdate-confirmation' config option
  • Update adventure for Minecraft 1.17 support
  • Improve structure of LuckPermsSubscriptionMap
  • Include more information about targets in verbose payloads
  • Warn users with multiple permissions plugins installed
  • API User#setPrimaryGroup should care about stored value only
  • Add Bukkit child permissions to the PermissionRegistry
  • Fix ExpiringSet not really working & causing memory leaks
  • Properly cleanup JarInJarClassLoader when plugin disables

Until next time..

~lucko
----------, Jun 13, 2021

Hi everyone, I hope you're all well. Update time!

Additions
  • Improve & consolidate permission check commands
    • /lp user <user> permission check <permission> - looks like this now!
  • Add /lp track <track> editor command
  • RabbitMQ messenger support
  • Java 16 support (refactored dependency loader system)
  • Support the web editor payload format in /lp import
    • Deleted your database by mistake but still have an old editor link that hasn't expired -- maybe this can save you!
  • Release API 5.3 (see below for details)

Bug fixes and smaller additions
  • Add config to control whether display names are returned by the Vault hook
  • Fix non-daemon command manager thread sometimes preventing shutdown
  • Catch another Hikari/classloading issue
  • Make separated flat-file read/writes atomic
  • Fix checking for table existence on SQL storage types
  • Add timeout for command executions
  • Invalidate context cache on Bukkit PlayerJoinEvent
  • Update PostgreSQL version to fix auth errors
  • Fix holder type and name on hover and click events in meta info entries
  • Add config option to set Hikari keepalive property
  • Fix getLocale on older Bukkit releases
  • Micro-optimise some frequently iterated lists
  • Add config option to disable built-in contexts
  • Translation file fixes
  • Improve Vault sync lookup error message

API 5.3
  • Expose uuid/username lookups and validity checks as events
  • Tidy up Node add/remove/clear API events
  • Add some annotations to mark API methods
  • Fix node change events not being called for web editor changes
  • Fix non-lower-case meta lookups via the API
  • Add cancellable UserUnloadEvent
  • Add getMetaValue API method that accepts a value transformer function
  • Add web editor deletion cause
  • Add package description javadocs to the API
Until next time... :)
----------, Mar 4, 2021

Hey everyone, I hope you are all well. Time for another update!

This update includes a number of important changes and fixes. I encourage all users to ensure that you are using a recent version of LuckPerms on all of your servers. :)

Before we get started with the changelog, I'd like to draw your attention to some exciting project updates we announced yesterday. I won't include the details here, but if you're interested, check out the #news channel on our Discord for more info.

Changes:
  • Improve file-based database handling
  • Properly open URLClassLoader module on Java 9+ to allow reflection and avoid access warning
  • Add UltraPermissions and PowerRanks migration support
  • Expose uuid/username lookups and validity checks as events in the API
  • Slightly optimize weight and display name lookups
  • Track individual changes to users/groups instead of writing in full on each save
  • Process 'give default if needed' when saving instead of after each change made in the API
  • Give false default permissions priority over wildcards (configurable, disabled by default)
  • Change permission tree size limits to be less restrictive
  • Conserve expiry time when promoting/demoting

Fixes:
  • Fix verbose and 'parent clear' command translations key errors
  • Fix ArrayIndexOutOfBoundsException from null environment in BukkitPlayerCalculator
  • Reduce translation cache refresh slightly to 23 hours
  • Ensure meta keys are always lowercase, and fix 'similar' comparison case sensitivity
  • Fix saving to flatfile storage when sections become empty
  • Fix NPE from null path in AbstractFileWatcher
  • Include note in verbose command-exec-as response if there were no matches
  • Ensure child permissions are handled as lowercase when resolving
  • Fix issues with Bukkit-Forge hacks which add enum constants at runtime
  • Fix client crash caused by brigadier arguments in the same parse tree needing unique names
  • Only store ids of received messages for 1 hour to prevent high memory usage on instances with high uptime
  • Tidy up Node add/remove/clear API events
----------, Jan 5, 2021

Hello - I hope you are all well.

I thought it was about time for another update!

As always, if you would like to support the work that goes into creating and maintaining LuckPerms, please consider becoming a Patreon, starring the project on GitHub, or drop by on Discord to say thanks/hi! Your support is much appreciated <3

On with the changes...

Translations
Over the past couple of months, I've been working on completely overhauling the messages and translation system in LuckPerms. It has been a very long process but we got there!

Going forward, all of our translations will be managed on Crowdin: https://crowdin.com/project/luckperms

If you speak a language other than English, I would really appreciate your help in translating the various messages to other languages. Currently I have configured Crowdin to accept translations for the languages we had locale files for previously - but if you'd like to contribute translations for a different language, please let me know!

We will be giving a special "translator" rank on our Discord to anyone who makes a significant contribution!

To view translations, a new command has been added: /lp translations
[​IMG]

Users will be sent translations according to the language they pick in their Minecraft client settings.

Other changes
  • Fix context serialization ordering bug
  • Add config option for registering brigadier command list data
  • Slight optimization when resolving permissions at runtime
  • Refactor some aspects of web editor session handling, add support for deleting users
  • Released API 5.2
  • Some small improvements to bulkupdate, number of changes
  • Include expiry in meta info command
  • Move exception printing to the logger
  • Allow creategroup command to take weight and display name as optional arguments
  • Provide gamemode and dimension-type contexts by default
  • Update MySQL driver from 5.0 to 8.0
----------, Nov 12, 2020

Hey everyone.

I was just reminded that it has been a while since I have posted an update to Spigot, so here goes!

As always, if you would like to support the work that goes into creating and maintaining LuckPerms, please consider supporting me on Patreon or making a donation. Your contributions are greatly appreciated & allow me to continue to work on and make my projects available for free for all to use - thank you! :)

You can also 'star' the project on GitHub, or come say hi to us on Discord - we don't bite, promise!

Enjoy the update!

New command
  • Add '/lp verbose command <user to run as> <cmd>' for easy testing of command permissions[​IMG]
Editor changes
  • Fix user ordering in the editor
  • Add optional filter argument to editor command
  • Improve argument based perm checks for the editor
  • Include users which inherit the group when running /lp group <group> editor
API changes
  • Add ContextUpdateEvent and related functionality
  • Change behaviour of resolveInheritanceTree when 'resolve inheritance' flag is false
  • Add DataTypeFilter
Misc changes
  • Add option to merge into instead of overriding existing data in imports
  • Define dependency on Vault during enable, fixes Spigot warning message
  • Updated some dependencies
  • Add log notification filters
  • Use the only/default track if one is not specifed in the promote/demote command
  • Add optional time parameters to permission/parent removetemp commands
  • Add option to use a pastebin for exports/imports
  • Add /lp export --without-groups
Fixes
  • Make getUniqueUsers more resilient to invalid uuids
  • Fix compatibility with modified SimplePluginManager in Mohist server fork
  • Enforce removal of server=global and world=global contexts at a higher level
  • Use contains instead of startsWith for context tab completions
  • Use nicer toString for Durations in log messages
  • Increase world column max length
  • Group names should always be lowercase in inheritance nodes
  • Improve undo command generation
  • Fix NPE in ConfigurateConfigAdapter#getStringList
  • Avoid calling #stream on the result of Bukkit getOnlinePlayers, fixes CME
  • Add ConstraintNodeMatcher toString method for use in commands
  • Remove NodeMap immutable cache
  • Small optimization to processExportedPermissions
  • Use ConcurrentHashMap instead of Caffeine in CachedDataManager, fixes race condition and associated long standing issue with TownyPerms
  • Try to reopen Redis pub-sub connection on failure
  • Impose 15 second timeout on all http calls
  • Ensure group/track names are always lowercase'd when created via the API
  • Pre-generate event classes, avoids lag during the first connection after the server started
  • Include a wider range of potential contexts in web editor payload
  • Fix import with no users object
  • Ignore FileAlreadyExistsException in MoreFiles#createDirectories, fixes issue with symlinked directories
  • Don't attempt further poll operations after SQL messenger has closed
----------, Aug 14, 2020

Hey hey!

Some quick fixes and improvements since the last release:
  • Fixed bug with duplicated users in the editor
  • Changed the way contexts 'satsifying' works. It's now much easier to define permissions/parents/prefixes etc which apply in multiple servers/worlds at the same time. Just add multiple context entries! e.g. `server=survival server=towny`
  • Improved performance slightly for plugins requesting prefixes/suffixes
  • Fixed the group info command displaying the wrong info in the wrong place
  • Fixed bug with searching for group permissions via the API
  • Fixed bug with [LP] prefix showing twice in the extensions list output
  • Updated web app URLs to point to their new location
  • Fixed incorrectly reading node value from the value field when reading from the flatfile meta section

Not "actually in the plugin" updates but still noteworthy!:
  • We have a new website! This has been a long time in the making, and is now finally ready & live for you all to enjoy. Check it out here: https://luckperms.net/ (big big thank you to Turbo for all of his hard work to make this happen!)
  • New and improved versions of all of the LuckPerms web apps have been released. Yes that's right, verbose & treeview have finally caught up with their editor sibling!
  • The project now has it's very first sponsor - I'm pleased to announce we're partnering up with BisectHosting! You can read more about the details in the #hosting-partner channel on our Discord - but the gist is: they're giving LP users a huge discount on their game server hosting packages & at the same time sponsoring our development! Pretty awesome! :cool: (p.s. LuckPerms is still an independent, free, open source project - that will never change!)


That's all for now! Enjoy! <3
----------, May 20, 2020

Hello!

I have a shiny new update for you all, woooo! This one features quite a few bug fixes & performance improvements, so all users are recommended to update.

If you like LuckPerms and would like to support the work that goes into creating and maintaining this project, please consider supporting me on Patreon or making a donation. Your contributions are greatly appreciated & allow me to continue to work on and make my projects available for free for all to use - thank you! :)

You can also 'star' the project on GitHub, or come say hi to us on Discord!

That's all for now - enjoy the update!

  • Improved the file watcher system used by flatfile storage, it's now much faster to detect and apply updates
  • Improved the "brigadier" command completion data send to 1.13+ clients
  • Added support for unicode double quote characters when parsing command arguments
  • Improved performance and reliability for the PEX and PowerfulPerms migrators
  • Improved performance when constructing/posting events provided by the LuckPerms API
  • Changed the verbose handling code to be less intrusive to the server
  • Allow leading '/' in LP commands executed from the console, help when running copied /lp applyedits commands from the web editor
  • Added support for SSL connection to Redis
  • Fixed the Year 2038 problem in LP MySQL tables (expiry times further into the future than 2038)
  • Released LP API 5.1, with a number of improvements and convenience methods added for developers
  • Added meta-value-selection config setting
  • Added listener to update the client commands list when permissions are changed
  • Changed exporter to output users & tracks in a consistent order
  • Removed legacy import functionality
  • Added notice to inform users to ignore 'illegal reflective access' warning messages
  • Fixed bug with empty string world names when calculating world contexts
  • Fixed issue converting MongoDB document _id to UUID
  • Fixed applying track reordering from the webeditor
  • Added checkTime property to verbose data
  • Improved commands to reply with more descriptive message when http requests fail
  • Fixed bug with null entries in Permission#children map
  • Improved plugin startup sequence so dependencies are downloaded in parallel
  • Added option for Sponge style wildcards
  • Changed HikariCP config to improve recovery following database downtime
  • Added a number of (previously removed) command aliases
  • Fixed group listmembers command behaviour with the default group
  • Added more useful debug message when a LinkageError is thrown due to bad SLF4J classloading
  • Improved performance when loading lots of groups from SQL storage types
  • Improved sync task performance
  • Improved performance of /lp log commands
  • Improved user info command
  • Added contextual data section to group info command
----------, May 12, 2020

Hey everyone!

This release contains all of the bug fixes and improvements made since the LuckPerms v5 release a few weeks ago.

The 5.x.x version of the plugin is now considered stable - there were only a few very minor issues which needed to be addressed after the first release. All users are highly recommended to upgrade. If you haven't done so already, please make sure you read the previous release notes first.

If you like LuckPerms and would like to support the work that goes into creating and maintaining this project, please consider supporting me on Patreon or making a donation. Your contributions allow me to continue to work on & make my projects available for free to all to use - thank you! :)

That's it for now - the changelog for this release is below...

Luck

---

Fixes:
  • Invalidate all user/group caches after node changes are made to groups via the API
  • Fix support for setting vault npc op status
  • Fix NPE when trying to set (chat)meta with a null would through Vault
  • Add rewrite rule in legacy importer for for switchprimarygroup command
  • Ensure response body is closed when a http request is not successful
  • Cancel delayed/repeating tasks at the start of the disable process
  • Fix AbstractUserManager to only load users once in #loadAllUsers

Changes:
  • Implement support for Vanilla command target selectors (e.g. @p, @r)
  • Move op handling into a permission processor
  • Remove vault-debug option
  • Implement Paper's AsyncTabCompleteEvent
  • Fix duration parser handling of weeks, months & years
  • Replace internal brigadier command structure with Commodore's file format
  • Cleanup verbose logging for groups
  • Only apply DefaultsProcessor for users
  • Add reminder to remove other plugin jar after migration
  • Lots of other miscellaneous improvements & code cleanup
----------, Feb 4, 2020

Hello hello!

I'd like to take the opportunity to wish everyone a belated Merry Christmas, and a (slightly early) Happy New Year! Hopefully you've all been enjoying the holidays so far. :)

It's time for an update - a late Christmas gift if you like!

And well well, it's finally happening! After months of work, we're finally ready to release the first version of LuckPerms v5.

This update is a bit more significant to others in the past, so please read until the end and take note of all of the details of the changelog.


Hundreds of developer hours have been put into this update, and approx 40k lines of code - it has been 6 months in the making (that's honestly no exaggeration, the first commit was in back in May!).

As always, if you'd like to support the work I and many others put into the project (please!):
  1. Consider sponsoring me on Patreon.
  2. 'Star' the project on GitHub.
  3. Leave a nice comment/review here on Spigot.
  4. Keep spreading the word!

What's new?

  • A brand new version of the Web Editor.
    • We've taken the old version and just made it oh-so-much better.
    • Completely rewritten, allowing so much more than was possible before. You can now control all aspects of your servers permissions setup from a sleek, modern web app in your browser.
  • An all new & completely rewritten Developer API.
    • After months of refinement, we're releasing a brand new developer API for the plugin.
    • Written to more closely encapsulate the functionality of the plugin, and (hopefully!) be easier to use and understand.
  • Countless improvements to smaller features, including:
    • An improved approach to file based action logging
    • A new compressed import/export format for the LuckPerms backup commands
    • Drastically improved performance for the verbose command.

What else has changed?
  • Default assignments have been removed.
    • We've taken the decision to remove this feature from the plugin - it was felt as being a bad fit in the functionality offered by a permission plugin. (and it was quite badly implemented too, oops)
  • A number of "undocumented" command aliases have been removed.
    • These were confusing to new users, and made it easy to mistakenly run a command that did x when you wanted y.
  • A new extension system has been implemented, allowing "bolt on" functionality to be installed and run alongside the plugin.
    • The first two extensions to be released are compatibility bridges, the first to allow existing plugins written against the now-removed v4 API to continue working, and another to re-implement default assignments for those that are still wanting to use them.

How do I update?
The all-new v5 release is available for download now at https://luckperms.net.

Before updating, I highly recommend taking backups of your LuckPerms data (just using /lp export is probably good enough!)

If you have any other plugins on your server that use the existing v4 developer API, you'll also want to install the extension-legacy-api extension.

For more information, please read the upgrade guide: https://github.com/lucko/LuckPerms/wiki/Upgrading-from-v4-to-v5.


Closing comments
I'd like to say an especially big 'thank you' to Turbo for all of his hard-work on the new version of the web editor. He's done a fantastic job - if you see him around be sure to say thanks! And thank you to the projects Discord moderators, those who have contributed code/documentation/locale on GitHub, supporters on Patreon, and everyone else who has supported/recommended/used the project over the past 3+ years.
----------, Dec 27, 2019

Heyoooooooo.

I think it's about time for another update - a nice round version number for once. :)

A summary of all of the changes, fixes and improvements included in this update is included below. But before then, some PSAs:

1) 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! :)

2) If you're interested in supporting the project (and me!) financially, you can find more information about that sorta thing on the project's Patreon page. Any contributions, however big or small are most appreciated.

3) It looks like we've just ticked over 100,000 downloads on SpigotMC - which is kinda cool!

4) Come join us on Discord! https://discord.gg/luckperms :cool:


I think that's it! Thank you for your continued support.


Changelog summary
  • The "bytebin" URL can now be configured in the plugin, meaning you can self-host the whole LuckPerms web flow on your own systems.
  • Ensure caches are invalided when child permission relationships are modified at runtime - fixes https://github.com/lucko/LuckPerms/issues/1378
  • Fix calling default methods on LuckPerms event interfaces
  • Fixed a typo in some of the Vault exception messages
  • Updated a number of 3rd party dependencies to their latest version
  • Return more detailed information about exactly how a permission check result was determined, this is now exposed in the verbose output
  • Correctly implement Bukkit/Nukkit isPermissionSet method, inline with the behaviour in PermissibleBase
  • Fixed some concurrency issues in the NodeMap implementation, resulting in occasional ConcurrentModificationExceptions
  • Add an API method to unregister context calculators
  • Close the messaging service before the storage provider, to fix race/state issues when the plugin disables
  • Slightly optimize regex and wildcard processors
  • Attempt to detect and warn about CraftBukkit + offline mode problems
  • Refactor AbstractJavaScheduler to make use of a cached thread pool
  • Use a separate fork join pool for cache loading operations - fixes deadlock problems when other plugins misuse the common fork join pool for i/o
  • Fallback to node/context ordering in InheritanceComparator - results in more consistent inheritance behaviour
  • Implement special handling in the LP Vault implementation for NPC players - this fixes an issue with WorldGuard attempting to check for Citizens NPC permissions using Vault
----------, Apr 2, 2019

Hello hello!

I have another update for you all, but before that, some quick PSAs (in order of importance):

1) I said the same last time, but it still applies: I apologise that things have been a little slower than usual recently - I'm trying my best to keep up! A big thanks to who have been active on GitHub & Discord answering questions and helping to process bug reports. <3

2) 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! :)

3) And then finally, a note for people who may be interested in supporting the project in a financial way.

I have been working on various open source projects as a hobby for approaching 3 years now, and don't plan on stopping anytime soon! Thousands of hours of work has gone into writing code, improving documentation and providing support to make LuckPerms the best it can be for the community, however, as well as the time commitment, maintaining it also has a small financial cost on my part. Those who have been following my projects for a while will know that I've graciously turned down any and all donation offers over the years and have been funding these expenses out of my own pocket.

However, I do appreciate that some kind people within the community would like to financially support the authors who create free plugins for their (sometimes profitable!) servers. Sooo, if you fall into that category and my work has enhanced your server, saved you time, or otherwise improved your life in miraculous ways, I'd appreciate any contribution you're willing to give. :)

The link to my Patreon site is https://www.patreon.com/luckperms - you can find more info there if you're interested. :)


Lastly, below is the list of changes for this update!

  • Return a more informative error for invalid verbose filters
  • Add option to deduplicate prefix/suffix stacks
  • Don't show negated group membership permissions in the output to 'user info' and 'group listmembers'
  • Don't send 1.13 tab completions to players without access to any LP commands
  • Optimize LookupSetting storage/manipulation within Contexts
  • Cache the most recent lookup for permission/meta data in AbstractCachedData
  • Optimize ImmutableContextSet#equals by comparing the hashcodes (constant time lookup)
  • Convert permissions to lowercase inside the permission checking cache
  • Optimize context set manipulation further
  • Add API method to get known permissions
  • Improve /op and /deop command matching
  • Account for 'allow-invalid-usernames' setting in API calls
  • Switch default MySQL/MariaDB charset from utf8 to utf8mb4 (better unicode support in permisisons, prefixes, etc)
  • Update okhttp and okio versions
  • Use a more optimized means of sending component messages to players
  • Fix error message when API event handlers throw an exception
  • Fix CME error caused by the refreshAutoOp task
  • Log exceptions thrown by BufferedRequest tasks
  • Change the way static contexts are displayed in /lp info
  • Implement use of a Maven Central mirror for dependency downloads
  • Cleanup with way permissibles are monitored (fixes a CME sometimes thrown by Vault on startup)
----------, Jan 11, 2019

Hey!

This is just a quick update to address some small bugs in the previous release and make some other minor improvements.
  • Metadata (prefix, suffix, "meta") lookups are now shown in /lp verbose logs (commit)
  • Fixed tab completion not working on 1.13 servers (commit)
  • Fixed an issue which meant Multicraft users couldn't use the web editor, verbose, etc from the console. The links are now in a format which Multicraft doesn't corrupt. (commit)
  • Fixed an issue which meant context calculators could cause a permission lookup to throw an exception. (commit)
  • Fixed a potential race condition in a buffering utility. (commit)
That's it!

I apologise that things have been a little slower than usual recently. I've been super busy with other commitments and have been unable to spend as much time working on my open source projects. I'm trying my best to keep up. ;)

A big thank you to the people who have been active on GitHub & Discord answering questions and helping to process bug reports. Especially @Andre_601 @BrainStone @Imortalshard @merjilin @Turbotailz and @VoidCrafted - all of whom have been tirelessly helping to moderate the LP Discord & answer everyones questions over the past months (and years in some cases!). Their contributions are very much appreciated by all, especially me! <3

Aaaannd, I think that's about it. As always, thanks for your continued support.
----------, Oct 30, 2018

Update time! This release contains all of the new features, improvements and fixes that have been added 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! :)

Also we're super close to reaching 2000 members in the LuckPerms Discord! If you're not already there, click here to join!

On with the changes...

Add support for the 1.13 "brigadier" command tab completion system.
[​IMG]
[​IMG]

Fancy huh. This functionality was actually added into a development branch of the plugin the same day 1.13 released, but I've held off from merging it for a while just to make sure things were stable.

If you want to add these completions to your own plugin, check out my resource here. :)

Improve the way Vault lookups for offline players are handled.

This change is quite a significant one. In general, LuckPerms now behaves in a much more consistent manner when responding to lookups through the Vault API. It will now throw an exception when it is unable to "safely" respond to a request, instead of returning a dummy result.

This could potentially cause issues with other plugins, as instead of failing quietly, an exception is now raised. However, I think this is ultimately better behaviour. The "safety nets" added by LuckPerms can be disabled in the config if conflicts arise and plugin authors refuse to fix them. :)

Vault API "set" requests are now processed immediately instead of in the background - again should make things much more consistent.

Add 'require-sender-group-membership-to-modify' config option

This is an extension to the argument based command perms system already in LuckPerms. However, it's much more simple, and doesn't require any extra setup. :)

And finally, some other misc fixes.
  • Don't schedule a delayed load task on startup - fixes an error when the server is stopped quickly after startup
  • Don't include any database properties by default - fixes some issues with PostgreSQL databases
  • Give some form of feedback when trying to applyedits no changes instead of no feedback at all
  • Load a up-to-date copy of group data before applying web editor changes
  • Completely rework the event system in the native LuckPerms API
  • Update a number of dependency versions
  • Send a more informative message when the bulkupdate command is used from in-game
  • Don't call NodeAddEvent when adding the default group
  • Only allow import and export commands to interact with files in the data directory
  • Avoid running full "update tasks" unless they're absolutely needed
  • Expose TemporaryMergeBehaviour in the API
  • Add flag to prevent users from being added/removed to/from the first group on a track
  • Use neutral color to display potentially colored names
  • Move from findbugs jsr305 to checker-qual
  • Detach from permissible objects with a 1 tick delay after player quit to allow plugins listening on monitor to still access data
  • Operations to add new nodes with differing values should just override existing entries, instead of failing with the ALREADY_HAS result
  • Fix class cast exception in NodeTypeKey#getTypeName
----------, Sep 23, 2018

Hey! It's about time for another update.

This isn't a special "1.13 update" - the previous versions of LP are compatible for the most part, minus one issue with the "Bungee" messaging service, which is now fixed and explained below.

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! :) Maintaining this resource and providing support on GitHub/Discord takes up a huge amount of my free time, and I really appreciate your kind comments.

Thanks!



The new (noticable) changes are:

Add setprefix, setsuffix, settempprefix, settempsuffix commands
With these commands, the "weight" of prefixes and suffixes is handled behind the scenes. Should (hopefully!) make things a bit easier for new users.

Add helpful message for users on first startup
Just explains that you need to use the console at first to grant access to the plugin. It seems a few people get stuck on this step.

Re-implement Bukkit 1.7.10 support (you still need the legacy jar!)
This was broken for a little while in dev builds - fixed now!

Rewrite MessagingService message encoding, conform to new plugin message channel requirements
This is a change required by Minecraft 1.13 - all channel names must conform to a new format. All messaging service implementations are effected by this change. You need to update all of your servers/bungee proxies to this new version for them to be able to talk to each other.


And finally, a condensed list of the bug fixes and internal changes included since the last version.
  • Fixed some memory leaks involving SubscriptionValueMaps and Context caches
  • Added some workarounds to support MassiveCore's modification of attachment permissions via reflection
  • Improved the code used to buffer database operations
  • Updated some dependency versions to the latest
  • Improved the way context caches work, should be more efficient now
  • Made the logging messages on startup a bit less obnoxious
  • Added a limit to the size the PermissionRepository can grow to - should reduce memory usage for plugins that check for dynamic permissions
  • Fixed some issues with the PermissionsEx migration process
  • Specify explicit global context in generated LP commands when default contexts have been set
  • Escape groups keyword in SQL queries to fix compat with newer versions of MySQL
  • Fix a CME in PermissionHolder's NodeMap backing
  • Fix /lp search for groups when using separated file storage
  • Send more appropriate message when no users/groups match the editor type
  • Fix NPE in GroupManager migration

The full changelogs can be found here.
https://gist.github.com/lucko/cff53...ile-luckperms-version-history-txt-L1232-L1272
----------, Jul 30, 2018

This update just contains a few small fixes since the last version. :)

  • Fix caches not being invalidated when group data changed (woops)
  • Fixed an issue where Bukkit attachment permissions would never be removed
  • A few small performance optimizations
  • Add "from_group" and "not_from_group" meta stack elements
  • Fix world rewrite operations not being applied in Vault lookups
  • Fixed saving node attributes on non-YAML file storage types
  • Provide an even more detailed warning message when other uuids are present for a username
  • Fix regex permissions not really working properly
  • Add workaround for plugins adding/removing/modifying permission attachments via reflection (should hopefully fix the incompatibility issues with MassiveCore)


p.s. I released a new plugin a couple of days ago, you should totally go have a look, if you want, maybe, err. bye!
----------, May 30, 2018

Hey - it's update time! This release contains all of the new features, improvements and fixes that have been added 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! :)


Technically not a new feature/bug fix, but, the project now has a shiny new website!

The site has a number of useful links, and also contains the latest development releases for all 4 platforms.

https://luckperms.github.io/

Let me know what you think. :)

Reorganise the default configuration
Should now be easier to navigate and understand

Implement Messaging Service using SQL
This is now enabled by default for servers without another messaging service configured. No extra configuration is needed.
Should be just as reliable as the other Redis based (and other) types, but doesn't need extra services to be setup

Implement the option to combine yaml/json/hocon storage files into one
It's still reccomended that the normal types are used, they benefit from greater efficincy, but this was a highly requested feature
Not really suitable for servers with a lot of permissions data (lots of users), please consider using a database backed method

Replace file logger with json based system
The old file logger system was somewhat difficult to read, and impossible to interpret (re-read) in the plugin
The old system has been replaced with a format which uses JSON, meaning file-based storage types can now use the "/lp log" family of commands

Add support for the TOML file format
This wasn't requested, but it was trivial for me to add, so uh, enjoy!

Improve the way player uuid data is saved/stored. Add a warning message to catch ip forwarding issues
The new system should be much more consistent.
It also exposes a lot more information about the nature of such save operations, meaning the plugin can warn you when things have been misconfigured. (missing IP forwarding settings)

Add 'permission clear' command
Pretty self explainatory, this clears all permissions, but not other types of node

Add full diff to the log when webeditor data is applied
Previously, only the editor code was included. Since sessions now expire after a few hours, this was pretty useless.
The full diff is now recorded when a change is applied

Output meta in inheritance order in the 'meta info' command
Should make it a bit easier to debug issues with inherited meta settings

Allow display names to be set in specific contexts
Means the same "base" group can be used globally, but with a unique name on specific servers

Make auto-op changes take effect (almost) immediately
Previously, they only applied after a relog, so having them apply almost immediately is an improvement

Implement different comparison methods for /lp search
The syntax is fairly similar to that of bulk update
e.g. '/lp search ~~ essentials.%' will return all entries starting with "essentials."

Add flag to exclude users from an export
Just include "--without-users" at the end of the command and users will be excluded from the output.

Convert bulkupdate functionality to use PreparedStatements
The previous method was vulnerable to SQL injection (not a huge deal because these commands were only executable from the console)


API changes
  • The settings in Contexts are now stored as a set of LookupSetting entries
  • Add methods to Track for promoting/demoting users, add PromotionResult & DemotionResult interfaces
  • Add more generic MutateResult interface for common actions
  • Add NodeType - type data is a way to easily manipulate the "meta" node types
  • Move all methods from the Storage interface into more appropriate manager classes
  • Add PlayerSaveResult to encapsulate the result of a call to save uuid data for a player
  • ContextSet now extends Iterable<Map.Entry<String, String>>
  • Add extra subscribe method to EventBus to automatically unregister listeners when a plugin is reloaded

Other misc changes
The API version has been bumped to 4.2, with the following changes
  • Make the world-rewrite map case insensitive
  • Clarify the showtracks output
  • Fix shutdown hang
  • Catch exceptions thrown in repeating tasks to avoid subsequent executions from being cancelled
  • Rename verbose paste to verbose upload
  • Don't intern strings in permission checking process
  • Copy usernames in the GroupManager migration
  • Apply improvements to the caches in AbstractContextManager
  • Exclude temporary file changes from FileWatcher
  • Improve consistency when handling case in Context sets
  • Fix issues with symlinked storage directories
  • Removed storage buffers, they were doing more harm than good
  • Optimize WildcardProcessor
  • Improve consistency of contextual primary group caching
  • Remove the locks in NodeMap to ease thread contention when lots of processes are resolving inheritance & refactor the way LocalizedNodes are created
----------, May 6, 2018

Hey everyone. This update contains just a few bug fixes and improvements following the release of the previous version.

Thanks to those who've been reporting bugs on GitHub and Discord. ;)

  • Users and groups are now submitted to the editor in weight order, so they appear in a nice order in the tab menu.
  • Web editor data, verbose recordings and tree views are now compressed before being uploaded. This fixes an issue where sometimes data would exceed the max allowed upload size. I've been seeing a 5000% compression ratio in some cases.
  • Fix compatibility with older Gson versions (the versions bundled before 1.12)
  • Fixed a longstanding issue which prevented LuckPerms from loading on CraftBukkit < 1.12
  • Fully relocated the Jedis driver, this was causing conflicts with other plugins in some cases
  • Fixed NPEs caused in LPPermissionMap
  • Small performance improvement: strings are no longer interned in ContextSets
  • Return a dummy value instead of throwing an exception when an offline player is queried via Vault
  • Fix a classloading issue which prevented LuckPerms from loading on Java 9
----------, Mar 9, 2018

Hey! It's been a while.

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...

Web based editors/viewers

The web editor, verbose viewer and treeview sites have had a major overhaul since the last release.

Firstly, an important PSA:

The Web Editor is now able to support multiple tabs! You can use "/lp editor" to create a session that can edit all known groups at the same time.

[​IMG]

This view will also include tabs for users which are currently online.

Some other QOL changes were implemented, most notably undo and redo buttons. (thanks @BrainStone ;) )

The verbose viewer now has it's own site - instead of being hosted within a Gist.

[​IMG]

The tree viewer has also been moved to it's own shiny new site!

[​IMG]

All of the sites still need some work, the design & functionality isn't 100% there just yet. If you're a web developer, we appreciate any contribution. ;)


Separate prefixes/suffixes/meta into their own section within yaml/json/hocon storage files

These settings are now stored separately (and not as permissions!).

Existing files will be upgraded over time (as changes to each user/group are made).


Relocate dependency packages to prevent conflicts with other plugins

The dependency loading system has been completely rewritten. LuckPerms dependencies are now relocated into a separate namespace to prevent conflicts with other versions of the same libraries already loaded on the server or included in other plugins.

API changes
  • Expose a means to implement the plugin's MessagingService via the API
  • Add API methods to load users/groups/tracks and return a future encapsulating the resultant object instead of a success flag
  • Add source to UserPromote & UserDemote events
  • Add node equality predicates, and provide way to determine hasPermission behaviour using them
  • Don't call events for changes to transient nodes

Smaller changes
  • Abstract out the process of traversing the inheritance tree, add configurable option to choose which algorithm to use
  • Add support for PermissionsBukkit migration
  • Log verbose checks for the console, commandblocks & entities
  • Migrate temporary permissions / parents in PEX migration
  • Rebuild default and child permission lookup maps live instead of only once when the plugin first enables
  • Filter expired entries from user/group bulk permission search results
  • Allow bulkupdates without constraints
  • Allow temporary-add-behaviour to be defined as an argument to the add/set commands
  • Use OkHttp for web requests
  • Rewrite the way user instances are cleaned up and unloaded
  • Display tracks relating to the group itself when the showtracks command is performed on a group
  • Nest the 'switchprimarygroup' command under the 'parent' subcommand
  • Allow shorthand nodes with single element lists
  • Don't allow empty context keys/values
  • Refactor the way verbose filters are parsed - tokenize on first init as opposed to on each check
  • Only show enduring nodes in command output, encapsulate the Node multimaps in PermissionHolder into separate class
  • Remove the 'use-server-uuids' option and internal UuidCache system
  • Force a clear of transient nodes when a User quits, don't just rely on their instance being unloaded
  • Only query online players when upgrading usernames --> uuids in Vault hooks
  • Reduce the amount of unnecessary data in info command outputs a bit
  • Remove old schema migration code
  • Add /lp debug command
  • Fix default assignment expressions checking temporary permissions
----------, Feb 23, 2018

This is a quick update to address some issues and bugs in the previous version, and add some small new features.

Importantly: this version adds a workaround for an issue caused by a recent Spigot change, which prevented LuckPerms from loading on the most recent Spigot release.

Update 30/12: A version without this workaround has been uploaded - the issue has been addressed in the latest Spigot release.

If you're having issues with the previous version, please update! :)
  • Implement system for shorter web editor urls & display a diff when changes are applied
  • Remove character constraints on group names, cleanup legacy node (de)serialization system
  • Add config option for defining extra SQL connection properties
  • Rewrite the MongoDB storage implementation to use the new node serialisation format
  • Run a sync task after completing a bulk update
  • Add code to migrate PermissionsEx ladders during migration
  • Fix compatibility with older Gson versions
  • Validate checksums of downloaded dependencies
  • Fix message bug when parsing two consecutive color codes
  • Fix compat with older hikari versions
  • Add option to pull server setting from the server.properties file
  • Fix user demote command success message
  • Fix promote / demote command inconsistencies
  • Refactor paginated command output, add flags for ordering 'permission info' entries, fix crashes caused by long messages
  • Send a message when an editor upload begins
  • Add user clone command
  • Send more helpful message when /lp is executed without any arguments
  • Change log output format, refactor log pagination
  • Correctly close flatfile database connections on disable, catch all exceptions when performing initial data load (fixes the /reload issue)
  • Rewrite Vault implementation to upgrade requests to uuids instead of downgrade to usernames
  • Fix clicking 'meta info' output messages to fill in the remove commands
  • Send a different type of update ping for user changes, and only apply the change if the user is loaded
  • Allow spaces in world names
----------, Dec 29, 2017

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
----------, Nov 19, 2017

Hi everyone, another update!

Just wanted to quickly say a huge thank you to those of you who have been leaving lots of positive reviews on the project. Since the last update, LuckPerms became the highest rated plugin on Spigot. How did that happen?!

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! Also, a big thanks to those who have been helping with support on Discord or in the discussion forum here on Spigot. Your continued assistance doesn't go unnoticed, and is certainly appreciated!

Anyhow, enough rambling, on with the changes...

Add tracing to /lp verbose

A trace of the actions which led to a certain permission check are now included in the verbose output as a stack trace.
This is super useful for debugging which plugin, listener or command caused a certain permission check. The extra output also displays the context which the check occurred in, and the nature of the lookup.

[​IMG]

This extra data is also included in the online output.

https://git.io/vdUPa

Massively improve the speed of /lp import and /lp export

Previously, all command processes were piped through a single threaded executor, which meant only one command could be processing at any one time. This wasn't really noticable for normal usage, but became a really big deal when running an import.

This behaviour has now been changed, and multiple commands can now execute concurrently. As such, import operations are now multithreaded, and execute super quickly!

See here for more info: https://github.com/lucko/LuckPerms/issues/317

Smaller changes
  • Fixed compatibility with Java 9
  • Add login debug option to the config
  • Refactor meta stacking and primary group calculation to be slightly faster
  • Fix an issue with setting temporary permission nodes via the API
  • Fix the user cleanup task hanging on big data sets for a few seconds when the plugin starts
  • Reduce the update task/storage sync buffer times
  • Add a config option to prevent primary group removal (default to true)
  • Add a type argument to the 'meta clear' command, so you can just clear prefixes, for example
  • Use the same alias when applying permission data from the web editor
  • Bump a number of dependency versions
  • Utilise string interning in a number of core classes to improve comparison performance
  • Made a number of the ingame messages more consistent with the general look & feel of the plugin
  • API updates, add a UserLoginProcessEvent
  • Fixed group expiry time not being exported in /lp export
  • Fixed tab completion inconsistencies caused by argument rewriting
----------, Sep 24, 2017

Happy Birthday, LuckPerms!

Today marks one year since LuckPerms was first released to the public.
Since then, there have been 754 new commits, 344,571 changed lines, and over 400 resolved bug reports & feature requests! Wew.

A big thank you to everyone who made contributions, whether that be with code, translations or supporting/helping other users in Discord or on the forums.

I've throughly enjoyed working on the project, and hugely appreciate the support that people have given it over the last year. :)

On with the update...

Argument based command permissions
When this option is enabled, LuckPerms will run extra permission checks when a player tries to modify or view permission data.

These permissions allow for finer control over what changes a player is able to do, including preventing them from granting specific groups, or making changes in certain contexts.

More info here.

More translatable messages
Command definition and usage messages are now translatable using the language file.

Performance improvements
Some improvements were made to the core permission calculation classes in LuckPerms. This should make the process of determining a players permissions much faster, especially for players with lots of inherited parent groups.

Log entry messages are now sent network wide
Whereas previously log notifications were only sent on the local server, they are now dispatched globally.

The "/lp log notify" command is now also permanent, and persists across all connected servers.

Other misc changes/fixes
  • Fixed NPE when reading from the locale file
  • Fixed /lp tree max recursion property
  • Don't cancel re-allowed connections unless the cancel was made by LP
  • Fix bukkit defaults still being applied to subscriptions when disabled
  • Export groups in order of weight, then alphabetically
  • Fix vault lookups with a specified world
  • Add option to use the servers uuid cache/lookup facility
  • Add RedisBungee messaging service option for BungeeCord
  • Update dependency versions
  • Make 'meta info' and 'parent info' clickable
  • Fix generating unset commands for temporary nodes
  • Improve /lp listgroups output
  • Use single quotes in escapeStringForSql
  • Add option to disable colored logging
  • Improve /lp info output
  • Fix IllegalStateException in meta info command
  • Fix possible NPEs when calling API storage events
  • Cleanup handling of empty permissions when migrating data
  • Flush the storage buffer more frequently
  • Inject permissions on login as soon as possible
  • Fix IndexOutOfBoundsException with 'permission settemp' command
  • Give default group if needed after "parent remove"
  • Remove unnecessary extra cache in ContextManager
  • Fix NPE with Vault #getPlayerGroups
  • Fix 'meta settemp' command using duration as the server context
  • Updated API to 3.3
  • Fix checkinherits command not returning the inheritance data
  • Correctly export meta/prefix/suffix nodes to command strings
  • Fix issue with casting UUIDs in MongoDB backing
  • Allow permission info command to be filtered by context
  • Send a more helpful message when the non legacy version of LP is installed on Bukkit 1.7
----------, Aug 20, 2017

This is just a small update, addressing a number of minor issues which have been reported over the past month. Thanks to those who have been submitting tickets to the GitHub tracker. :)

New features (maybe) coming soon.

Changes (mostly fixes)
  • Reduced the amount of unnecessary logging when the plugin enables, including a particularly misleading Vault message.
  • Released API v3.2 - exposed MetaStacks, improved a number of JavaDoc entries, added a couple of new methods
  • Reformatted the default configuration file, tidied up a number of the setting comments
  • Fixed world specific permissions not always working instantly after a player changed worlds
  • Fixed an issue where a users parents would be transferred incorrectly when migrating from PEX
  • Added MongoDB collection prefix config option
  • Slimmed down the YAML and JSON storage files - the value setting will now only be defined when set to false.
  • Fixed some issues with username storage and handling - (data not being updated when a user changed their username)
  • Added some missing tab completions
  • Fixed an issue where messages sent to command blocks would throw an exception in console
  • Fixed an issue with the File Watcher
----------, Jun 14, 2017

Web Editor
Some sort of standalone GUI client / web editor has probably been *the* most frequently requested feature over time. However, it most likely doesn't work how you think it does.

The editor does *not* have to be self hosted. You do not need to have your own web server / be using MySQL storage to make use of it. Data transfer to/from the web client is done using GitHub's Gist service. All of the processing is done completely on the client side. In therory, you could just download the web files to your local machine and open the page from there.

It's still pretty basic at the moment, however it is still functional. I will be hopefully making improvements to the features and design over time.

Anyway, here's a short gif to demonstrate how it works.
https://gfycat.com/MeanThatChinesecrocodilelizard

You can try it out using "/lp user/group <?> editor"

A couple of new commands
  • /lp user/group <?> settrack <track> <group / position> [context]
  • /lp user/group <?> cleartrack <track> [context]
Both of these commands allow for much easier control when trying to promote a player to a position on a certain track. Think of it as "parent set", but only clearing groups also on the given track.

Implemented default contexts for commands
Basically, this lets you set a default server/world to be used in all commands, unless "global" is specifically used.

Add a number of config options to allow for finer control over how permissions are calculated
Just a few extra options to control how Bukkit default / child permissions are used by LuckPerms when trying to determine if a player should have a certain permission.

Plus the following fixes:
  • Determine dynamic primary groups using a users current context (if they have any)
  • Fix errors getting primary groups for offline players
  • Add not_on_track meta stack criteria
  • Fix handling of unknown player usernames
  • Cleanup login handling on older Spigot/CraftBukkit versions
  • Show a players UUID in logging messages if their username is unknown
  • Slight performance improvement when resolving player permissions
  • Fix the formatting of multi line messages sent to the console
  • Fix issue with bulk removing suffixes
  • Fix issue where users would be cleaned up too early & then log back into the server without their data loaded
  • Fix a number of issues with zPermissions migration
  • Fix retrieving meta keys from Vault which contain delimited characters
  • Fix world rewrites not being applied on top of the real world
  • Fix the meta info command only showing values in the global context
Note: This is not a special 1.12 update. LuckPerms does not depend on specific server versions to function correctly. The previous versions of the plugin will also work fine with 1.12.
----------, May 14, 2017

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.
----------, Apr 12, 2017

Firstly, why 3.0.0?
The increment in the major version number only affects people using the LuckPerms API. If you don't use it, this is just like any other update. :)

If you do use the API in your plugins, please read the section below.

Added /lp tree command
This command allows you to generate tree diagrams of your permission setups.
For example: https://git.io/vD5Ko

This diagram will grow over time, and will expand as plugins check for permissions.

You can also specify a player, and colorize the tree depending on whether a player has each permission.
For example: https://git.io/vD5KQ

It's super useful for checking over your setup, as well as for identifying permissions where plugin documentation is lacking.

Cleanup migration commands

The migration system has had a big cleanup. The process should be faster & more reliable now. The command usage remains the same, though.

Add configurable duration handling when a user/group already has a temporary permission/parent/option set
It's quite hard to explain, but this feature was heavily requested. It allows you to define how permission expiration times should behave when new permissions are added. The default behaviour from the last version is retained, however you can modify this in the config.
https://github.com/lucko/LuckPerms/blob/master/bukkit/src/main/resources/config.yml#L49-L55

LuckPermsCompat
I released a small add-on plugin which remaps commands from other permission systems.

A lot of people keep telling me how much they liked GroupManagers command syntax - I'm not sure I share that opinion, but I'm bored of hearing it. :D

This plugin will simply allow you to keep using the GroupManager syntax with LuckPerms. I may add support for other systems in the future, but for now it only works with the GM commands.

You can download it from here: https://ci.lucko.me/job/LuckPermsCompat/

Import/Export improvements
  • Comments are allowed now
  • Empty lines are ignored
  • Export logs are now annotated with extra information to make them more readable
  • The importer now understands commands which contain " " quotes to wrap arguments with spaces

API changes
I've managed to hold off of any backwards compatible API changes until now, however, over the last few months, quite a number of deprecated methods/classes have built up. I've also been meaning to replace the existing Event API with something more useful/friendly. This means that 3.0 introduces a number of backwards incompatible changes.

If you use the LuckPerms API in any of your plugins, it would be a good idea to recompile against this latest release before updating.

A full list of removed methods/classes can be found here: https://gist.github.com/lucko/fdf6ae4b2d9e466d8103dd9c68e5db9e
A number of these methods have been deprecated pretty much since the plugins initial release here on Spigot.

However, the good news is that 3.0 adds a significantly better event listening API. All of that is documented here: https://github.com/lucko/LuckPerms/wiki/Developer-API#events


Fixes
  • Fix a small issue with config reloads
  • Fix search command page number argument
  • Fix migration logs being sent to the console twice
  • Fix OPs disabled message (sorry about this one :>)
  • Fix issue with Jedis shading (prevented redis from working correctly)
  • Modify node escaping to use "\" characters instead of {<something>} style escapes
  • Fix NPE with Vault's getUserMeta when defaultValue is null and the LP value is also null
  • Fix a spelling mistake in the default config
  • Allow negated group permissions
  • Apply regex permissions before wildcards
  • Test verbose filters before registering them
  • Remove redundant SQL queries and fix issue where multiple uuids could be mapped to the same username
  • Fix setting chat meta with Vault
  • Prevent unnecessary permissible recalculations
  • Don't bother adding checks to the verbose listener queue if no listeners are registered
  • Ensure all Bukkit permissions are registered on startup
----------, Feb 19, 2017

Added new "messaging services" (replacements for the old redis based system)
- BungeeCord
- LilyPad
- Redis
See here for more info: https://github.com/lucko/LuckPerms/wiki/Instant-Update-Propagation

Improved the verbose system
- Added extra output to the paste data
- Implemented expression filters
See here for more info: https://github.com/lucko/LuckPerms/wiki/Verbose

Implemented "stackable" prefixes/suffixes
- You can now pull different prefixes/suffixes from specific tracks, etc
- Added spacer options
See here for more info: https://github.com/lucko/LuckPerms/blob/master/bukkit/src/main/resources/config.yml#L79

Added /lp reloadconfig command
- Reloads *most* of the config options

Added /lp check command
- Perform "test" permission checks on a player, as plugins would do.

Colorized console output messages
Added / improved some of the wiki pages
Removed console only commands
(they can be used in-game now too)


Fixes
:
  • Fixed using UTF-8 characters with MySQL storage
  • Fixed an error message on shutdown
  • Fixed an issue with per-world permissions and Multiverse
  • Fixed a NPE on login
  • Fixed shorthand/glob node parsing
  • Fixed issues with redis not being loaded correctly
  • Fixed empty config values causing startup errors
  • Added the file name to any error output when doing i/o
----------, Jan 29, 2017

Just a few small additions & fixes from the last update.
  • Added /lp search command
  • Fix creating new tracks
  • Fix permission subscriptions (and issues with broadcast messages)
  • API changes/additions for 2.17 (a bunch of new methods & functionality added)
  • Cache regex permissions when they get processed
  • Fix promote/demote commands conflicting with primary groups
  • Make prefix/suffix string optional in the meta remove commands
  • Change promote/demote behaviour at the end of tracks
  • Fix reading and writing UTF-8 characters from storage files
----------, Jan 16, 2017

Here's the changes from the past month or so. :) As always, please report any bugs/issues with this release on the GitHub issue tracker.

Notable Change: New SQL schema
When you install the latest version for the first time, the plugin will convert your existing data to use the new SQL layout. The old tables will not be deleted, so servers connected to the same database should be able to access the old data. However, be aware that the two version will become out of sync.

I encourage you therefore to install the update on one server, allow it to update your database, and then push the new version to all other servers, in order to minimise data loss. If you only have LuckPerms installed on one server, or use YAML/JSON storage, then you don't need to worry about this.

On with the other changes....

Additions:
  • New SQL schema
  • Download dependencies at runtime instead of including them in the jar (no more huge jars!)
  • Automatically sort YAML/JSON data files
  • Implemented a cached state for users/groups
  • Implemented basic clickable messages
  • Implemented clickable permission lists (click to remove, etc)
  • Implemented tab completion for permissions
  • Added verbose pastebin upload functionality
  • Add parent clear command
  • Implement group weights
  • Made all commands run on the same thread (and removed /lp queuecommand)
  • Defaulted the value to true in the set/settemp commands
  • Added cached permission comparison (slight performance improvement)
  • Improved memory footprint in low throughput caches
  • Implemented paginated permission listings
  • Added a groups weight to the group info command
  • Added a default port for each of the remote storage options
  • Added more detail to the group info command
  • API changes for context system
  • Made the node lists print true/false alongside when executed from the console (no color)
Fixes:
  • Fixed default assignments never being applied on BungeeCord
  • Fixed a potential memory leak
  • Fixed autoop sometimes causing an exception in console
  • Fixed compatibility with LilyPad networks
  • Fixed Vault setPrefix method
  • Fixed group rewrite rules not being applied to Vault
  • Fixed zPermissions migration
  • Fixed an exception with the UUID caching system
  • Added more lenient command blocking for /op /deop commands
  • Added PEX track migration
  • Lowered MySQL connection timeout and tamed the settings somewhat
  • Removed the /p alias
  • Made the PEX migration include usernames too
  • Fixed some caching issues
  • Fixed MongoDB auth-less connection
  • Properly cleanup in the case of a server reload
  • Only save after Vault operations if a change was made
  • Fixed an NPE with Vault transient permissions
----------, Jan 8, 2017

A few small changes / fixes from the last release.
  • Fixed Vault compatibility with other plugins. LuckPerms will now always enable before Vault does. This should fix any loading issues with ChatControl, Autorank, etc.
  • Fix migration commands - they didn't execute correctly in the previous release.
  • Show where meta was inherited from in the meta info command
  • Improvements to the /lp info & /lp user <user> info commands
  • Fixed issue where permissions wouldn't be removed when using /lp sync with YAML or JSON storage
Aside from that, I've been spending some time working on the wiki & improving ease of use. You might have noticed the shiny new comparison chart on the release page, and the new & improved Command Usage wiki page. :)

As always, thanks for your continued support.
----------, Nov 20, 2016

Pretty small changelog. Most changes made over the past ~3 weeks have been mostly going over and cleaning up some of the older code in the plugin, and redesigning some internals to reduce code redundancy. This release also tidies up a few small lurking bugs from the previous release. Thanks to everyone who has been reporting issues.

Additions:
  • Implement proper support for Bukkit child permissions (this didn't work correctly before, whoops.)
  • Cache context lookups - slight performance improvement as a result
  • Add verbose command
  • Add parent set command
  • Release API 2.14
  • Replace showtracks command with something better
  • Improve meta info command
  • Fix parents being cleared on promote/demote
  • Improve track functionality - they now work for all groups, not just the user's "primary" group.
  • Implement proper meta inheritance handling - now faster & more reliable
  • Add Vault Primary Group overrides
  • Lots of internal refactors to a number of core classes
  • Implement support for group weights
Fixes:
  • Fix commands taking ages to execute
  • Stability fix for importing/exporting data
  • Fix GroupManager group/primary group migration
  • Fix data not being loaded synchronously when the plugin starts - should fix issues with other plugins querying data from Vault when they first startup
  • Keep player data loaded for a little longer when players leave the server - should fix any issues with silent leave/join plugins
  • Fix a possible crash error
  • Move haspermission/inheritspermission commands to parent subcommand
  • Replace some ugly messages
  • Fix slow storage performance when using the native API
  • Fix split storage not working correctly
As always, thank you for your continued support.
----------, Nov 12, 2016

This quick update fixes an issue in the previous release where users would never be unloaded from the plugin's cache, causing a memory leak.

I'm sorry for the inconvenience. :( (it was a stupid mistake too, I'm sad.)
https://github.com/lucko/LuckPerms/commit/46b122a1674e4dd4fbf34d869178a5eb58f01c2e
----------, Oct 25, 2016

This changelog reflects what I've been working on over the last couple of weeks.

A lot of work has gone into profiling the plugin and working on a new and improved global caching system, which is why you might not see as many noticeable changes this update. Hopefully that's made up for by the performance improvements.

I'm slowly getting to a point whereby the main thread "TPS" impact of LuckPerms is absolutely tiny. There's still a few more improvements to be made, but as of right now, LuckPerms' Permissible permission check lookups & refreshes are actually faster than the ones provided by Bukkit. :)

Anyways, thanks for your continued support.


Additions:
  • Moved some commands and command menus around. (backwards compatible.)
  • Reorganised the command permissions to allow for greater ease of use (also backwards compatible)
  • New caching system - significantly faster and more reliable
  • Implement buffering - significant performance improvements when performing automated operations
  • Added a new default assignments system allowing you to:
  • - Specifiy and modify a user's permissions/groups automatically when they login
  • - Change the "default" group
  • - Added option to grant a wider range of defaults. (no longer limited to only one group)
  • - Added ability to cleanup a user's groups. (great for prison/rankup/leveled servers)
  • Added support for instant data progagation using Redis
  • Added server and world args to the clear command
  • Added a command to clear a user's prefixes & suffixes
  • Added a config option to ignore vault world parameters
  • Lots of API additions
  • Better performance for PlaceholderAPI users (lookups are now cached)
  • Much better preprocessing when players login.
  • Better performance/stability for MySQL users
  • Make the MySQL connection pool size configurable
  • More reliable permission lookups - the caching system is now standardized across the plugin, instead of being separately implemented
  • Faster vault operations - now makes use of the global LuckPerms caching system

Fixes:
  • Allow the plugin prefix to be modified by the lang file
  • Fix NPE when refreshing users
  • Fix issue where the default group was wrongly forced upon users
  • Fix Vault chat debug messages
  • Fix prefix/suffix priorities being ignored
  • Fix global permissions and groups sometimes not applying
  • Fix the bulk group editing primary group check
  • Fix per-world permissions not working until a user switches worlds
  • Fix temporary permission expirations never persisting to storage
  • Fix up some possible connection leaks
  • Properly prevent logins until the plugin has started
  • Fix export command not properly exporting permissions with spaces
----------, Oct 24, 2016

Sorry for the lack of updates recently. I have been working on the project, just haven't had a chance to push to Spigot.

Hopefully this update makes up for that. :)

Additions:
  • Added locale file support
  • Added bulk change commands
  • Added detailed command usage and argument messages in-game
  • Added group/track clone commands
  • Better support for wildcard and regex permissions
  • Made significant optimisations to the standard Bukkit defaults system (now much faster)
  • Show exactly where a permission was inherited from in the inheritspermission command
  • Made some commands and messages easier to read
  • Better support for per-world and per-server groups
  • Permission nodes are now ordered alphabetically in command output
  • Added world and group name rewriting
  • Add commands to view inherited groups
  • Implement locks to hopefully resolve race conditions with I/O
  • Implement bulk prefix/suffix removal
  • Cache permission node deserialization
  • Fix users sometimes not receiving permission updates
  • Pre-process permissions before a user logs in, so plugins can check for permissions as players login to the server
  • Fix issue where users who weren't in the default group were not exported correctly
  • Multiple other performance improvements. The LuckPerms permissible implementation is now significantly faster than Bukkit's default.

Fixes:
  • Fix no permissions applying with include-global is false
  • Huge improvements to permission calculation
  • Speeded up some SQL queries
  • Fix default permissions not properly applying
  • Vault lookups are now cached
  • Other fixes to Vault (again!) - thanks @Boomclaw
  • Fix permission checks being case sensitive
  • Fixes to the inheritance system
  • Fix issue with permissions sometimes not being removed
  • Cache internal structure to avoid unnecessary lookups
  • Fixed IllegalStateException with temporary permissions
  • Reimplemented world and server specific permissions with caching
----------, Oct 5, 2016

Changes
  • Significant performance improvements
  • Properly implement wildcards - they work now even if plugin authors don't declare their permissions to the server
  • Implement permission lookup caching to further improve performance when permissions are checked by plugins frequently
  • Add an option to log every time a plugin checks for a permission

Fixes
  • Fixed a possible race condition with messages not always sending
  • Fixed export command not working for SQL storage types
  • Small bug fixes for offline mode servers
----------, Sep 16, 2016

Additions
  • Added bPermissions migration support
  • Added some more shorthand node types (ranges) - see the wiki for info
  • Some minor performance improvements
  • Added config option to disable the vanilla OP system
  • Added config option to prevent OPs from being able to use LuckPerms commands
  • Added a better system for exporting data (see /luckperms export)
  • Added a better system for moving data between different datastore types
  • Added luckperms.autoop permission node - disabled by default
  • Added some config options to customize the way LuckPerms hooks into Vault (+ other plugins)
Fixes
  • Multiple improvements/fixes to Vault hooks
  • Fixed blank users not receiving group permission updates
  • Fixed not being able to remove negated nodes
  • Fixed the node priority order not being applied correctly
  • Fixed higher priority nodes not overriding lower priority nodes
  • Fixes related to temporary permissions not working correctly
  • Fixed permissions not always applying on BungeeCord
  • Fixed global groups not being migrated from GroupManager
  • Fixed negated PermissionEx nodes not being migrated correctly (thanks @HeroCC)
  • Other small misc fixes
----------, Sep 9, 2016

  • Add support for split storage - groups in flatfile, users in MySQL, etc etc.
  • Add support for YAML storage
----------, Sep 2, 2016

(This update includes some important performance and stability fixes. I recommend all users to update.)
Changes:
  • Added a bunch of new commands to add/remove/view prefixes and suffixes for users and groups
  • Fixed an issue that meant temporary permissions couldn't be removed
  • A bunch of enhancements for PermissionsEx migration. (Many thanks to @Boomclaw for the super valuable help & advice)
  • Fixed a really stupid resource leak with SQL backed datastores. Should significantly improve performance.
  • Made group/server/track naming much more flexible
  • Fixed applying wildcard permissions on Bukkit.
  • Made the output of listnodes nicer to read
  • Added a config option to toggle log notifications in-game
  • Fixed an exception with getting suffixes from Vault
  • Other misc changes with the Vault permissions hook to make the LuckPerms implementation more closely match what is documented within the Vault API.
wew.
----------, Aug 30, 2016

  • Fixes an error with PermissionsEx group migration
  • Fixes a serious bug in the last update with permissions calculation, resulting in server crashes / commands not executing correctly.
----------, Aug 29, 2016

New:
  • Optimized data storage - only unique users are saved to the storage system. Default users don't take up any space.
  • Major API changes/additions - see the JavaDocs for more info (all changes are backwards compatible, but quite a few methods were deprecated)
  • Added transient permissions - accessible from the API, this allows developers to add temporary permissions, which are never saved, and expire as soon as the user logs out.
  • Huge internal changes to the way permissions are calculated. This may not be noticeable externally, but the code used to calculate permissions and inheritance is much much cleaner now.
  • Better support for saving meta/prefix/suffix data for users and groups
Important Changes:
  • The "default-group" option has been removed from the config. This was a necessary step to allow for better data storage (see above).
To replicate older setups, simply set default to inherit your old default-group.

Example:
In the last version, you had default-group set to: member

Load the latest version, and run "/luckperms group default setinherit member".
----------, Aug 29, 2016

New:
  • Added support for prefixes, suffixes and meta
  • Add two new commands to allow for renaming of groups/tracks
  • Created and implemented a number of placeholders for @clip 's PlaceholderAPI
  • Added migration support for BungeePerms
  • Implemented full Vault chat support
Fixes:
  • Performance improvements when refreshing permissions on Bukkit
  • Small bug fix for PermissionsEx migration
  • Properly cleanup database resources after PowerfulPerms migration
  • Migration actions will now log to the logging system
  • Prefixes and Suffixes will now also be migrated
  • Other misc fixes to the migration systems
----------, Aug 23, 2016

LuckPerms now supports fully automatic migration from a number of other permissions plugins.

Currently Supported:
  • GroupManager
  • zPermissions
  • PermissionsEx
  • PowerfulPerms
Enjoy :)
----------, Aug 22, 2016

Resource Information
Author:
----------
Total Downloads: 6,661,142
First Release: Aug 20, 2016
Last Update: Jun 9, 2024
Category: ---------------
All-Time Rating:
1071 ratings
Find more info at luckperms.net...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings