Fixed skinrender not working.
For the past week the skinrender service has been mostly unavailable. This was because skinrender used the API hosted at skins.minecraft.net which was taken down by Mojang. Swichting to the new API was not much of a problem and was done within a day after the old API was taken down.
However, the problem of the new API was the rate limit, namely 600 requests per 10 minutes per IP. Since skinrender exceeded this number by far, most skin requests were rejected which lead to lots of Notch skins . In this BannerBoard update, the calls to the Mojang API are done by your server, rather than by skinrender.com. The reason for this is so that we can distribute the requests over your own IP(s), rather than all from my IP. This is only done once for every new player, and should not result in any additional server load since rendering is still done fully at the skinrender side.
Please report bugs regarding skins on banners to me in person as soon as possible in private. For support regarding other questions please contact @TrinityDEV.
Server's : #Global
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.
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
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
Server's : #Global
3.5.0 - "Timeouts"
* Fixed version checker
* Added time for how long the WorldEdit player session is kept
* Added time for how long the undo is keept
* Added automatic undo cleanup