= LuckPerms A (fairly bad) permissions implementation for Bukkit/BungeeCord. == Features * **Group inheritance** - users can be members of multiple groups, groups can inherit other groups * **Temporary permissions** - users/groups can be given permissions that expire after a given time * **Temporary groups** - users/groups can be added to/inherit other groups temporarily * **Multi-server support** - data is synced across all servers/platforms * **Per-server permissions/groups** - define user/group permissions that only apply on certain servers * **Server-specific groups** - define groups that only apply on certain servers * **Tracks / paths** - users can be promoted/demoted along multiple group tracks * **Vault Support** - hooks into Vault to integrate with other plugins * **Easy and simple setup and configuration using commands** - no editing yml files, yuck * **Efficient/lightweight** - maybe? Who knows, it might be. * **BungeeCord compatible** - permissions, users and groups are synced across Bukkit/BungeeCord instances * **Support for MySQL, SQLite & Flatfile (JSON)** - other storage methods coming soon (maybe) ===== Possible Caveats * Currently only supports MySQL, SQLite & Flatfile (JSON) (support for more methods might come in the future) * Not at all tested and could produce unexpected/buggy results and errors == Setup All configuration options are in the **config.yml** file, which is generated automagically when the plugin first starts. You can define the settings for per-server permissions, the storage method and credentials within this file. == Info === Permission Calculation Permissions are calculated based on a priority system as follows. * Temporary permissions will override non-temporary permissions. Example: if a user has a false permission set for "test.node", and a temporary true permission set for "test.node", the temporary permission will override the permanent one, and the user will be granted the true node. * Server specific permissions will override generic/global permissions. Example: if a user has a global "fly.use" permission, and then has a negated "fly.use" permission on the "factions" server, the server specific permission will override the globally defined one, and the user will be granted the negated node. * Inherited permissions will be overridden by an objects own permissions. Example: A user is a member of the default group, which grants "some.thing.perm", but the users own permissions has "some.thing.perm" set to false. The inherited permission will be overridden by the users own permissions, and the user will be granted the negative node. === Temporary Permissions Temporary permissions are checked each time a user/group is loaded, and when the sync task runs. This means if you set a temporary permission to expire after 30 seconds, it won't actually be removed until the sync task runs. The only way around this is to decrease the sync interval. == Commands Command usage is printed to the console/chat whenever invalid arguments are provided. Simply typing /perms will list all commands a user has permission to use. === Aliases | Bukkit | /luckperms | | | /perms | | | /permissions | | | /lp | | | /perm | | Bungee | /luckpermsbungee | | | /bperms | | | /bpermissions | | | /lpb | | | /bperm | Arguments: [optional] Users with OP have access to all commands. Additionally, you can use wildcards to grant users access to a selection of commands. * **All commands** - luckperms.* * **All user commands** - luckperms.user.* * **All group commands** - luckperms.group.* * **All track commands** - luckperms.track.* | **Command** | **Description** | **Permission** | | /perms | Sends plugin info and usage | N/A | | /perms sync | Runs an update task and reloads the data of all online users | luckperms.sync | | /perms info | Shows information about the plugin | luckperms.info | | /perms debug | Shows some very brief debug info about the number of users/groups loaded | luckperms.debug | | | | | | | | | | | | | | /perms creategroup | Creates a new group with the given name | luckperms.creategroup | | /perms deletegroup | Deletes an existing group | luckperms.deletegroup | | /perms listgroups | Shows a list of the groups registered within the system | luckperms.listgroups | | | | | | | | | | | | | | /perms createtrack | Creates a new track with the given name | luckperms.createtrack | | /perms deletetrack | Deletes an existing track | luckperms.deletetrack | | /perms listtracks | Shows a list of the tracks registered within the system | luckperms.listtracks | | | | | | | | | | | | | | /perms user info | Shows info about the user | luckperms.user.info | | /perms user getuuid | Shows the users Mojang UUID | luckperms.user.getuuid | | /perms user listnodes | Lists all of the permission nodes the user has | luckperms.user.listnodes | | /perms user haspermission [server] | Checks if the user has a permission on a certain server | luckperms.user.haspermission | | /perms user inheritspermission [server] | Checks if the user inherits a permission on a certain server. (This checks all parent groups unlike haspermission) | luckperms.user.inheritspermission | | /perms user set [server]| Sets a permission for the user | luckperms.user.setpermission | | /perms user unset [server] | Unsets a permission for the user | luckperms.user.unsetpermission | | /perms user addgroup [server] | Adds the user to a group | luckperms.user.addgroup | | /perms user removegroup [server] | Removes the user from a group | luckperms.user.removegroup | | /perms user settemp [server]| Sets a temporary permission for the user | luckperms.user.settemppermission | | /perms user unsettemp [server] | Unsets a temporary permission for the user | luckperms.user.unsettemppermission | | /perms user addtempgroup [server] | Adds the user to a group temporarily | luckperms.user.addtempgroup | | /perms user removetempgroup [server] | Removes the user from a temporary group | luckperms.user.removetempgroup | | /perms user setprimarygroup | Sets the users primary group | luckperms.user.setprimarygroup | | /perms user showtracks | Shows a list of the tracks the user can be promoted/demoted on | luckperms.user.showtracks | | /perms user promote | Promotes the user along a given track | luckperms.user.promote | | /perms user demote | Demotes the user along a given track | luckperms.user.demote | | /perms user showpos | Shows the users position on a given track | luckperms.user.showpos | | /perms user clear | Clears all permissions the user has | luckperms.user.clear | | | | | | | | | | | | | | /perms group info | Shows info about the group | luckperms.group.info | | /perms group listnodes | Lists all of the permission nodes the group has | luckperms.group.listnodes | | /perms group haspermission [server] | Checks if the group has a permission on a certain server | luckperms.group.haspermission | | /perms group inheritspermission [server] | Checks if the group inherits a permission on a certain server. (This checks all parent groups unlike haspermission) | luckperms.group.inheritspermission | | /perms group set [server]| Sets a permission for the group | luckperms.group.setpermission | | /perms group unset [server] | Unsets a permission for the group | luckperms.group.unsetpermission | | /perms group setinherit [server]| Sets the group to inherit all permissions from another group | luckperms.group.setinherit | | /perms group unsetinherit [server] | Unsets a previously defined inheritance rule | luckperms.group.unsetinherit | | /perms group settemp [server] | Sets a temporary permission for the group | luckperms.group.settemppermission | | /perms group unsettemp [server] | Unsets a temporary permission for the group | luckperms.group.unsettemppermission | | /perms group settempinherit [server] | Sets the group to inherit all permissions from another group temporarily | luckperms.group.settempinherit | | /perms group unsettempinherit [server] | Unsets a previously defined temporary inheritance rule | luckperms.group.unsettempinherit | | /perms group showtracks | Shows a list of the tracks that the users in the group can be promoted/demoted on | luckperms.group.showtracks | | /perms group clear | Clears all permissions the group has | luckperms.group.clear | | | | | | | | | | | | | | /perms track info | Shows info about the track | luckperms.track.info | | /perms track append | Appends a group to the end of the track | luckperms.track.append | | /perms track insert | Inserts a group at the given position on the track | luckperms.track.insert | | /perms track remove | Removes a group from the track | luckperms.track.remove | | /perms track clear | Clears all groups on the track | luckperms.track.clear | == License See LICENSE.md.