#################################################################################################### # +----------------------------------------------------------------------------------------------+ # # | __ __ ___ __ __ | # # | | | | / ` |__/ |__) |__ |__) |\/| /__` | # # | |___ \__/ \__, | \ | |___ | \ | | .__/ | # # | | # # | https://luckperms.net | # # | | # # | WIKI: https://luckperms.net/wiki | # # | DISCORD: https://discord.gg/luckperms | # # | BUG REPORTS: https://github.com/lucko/LuckPerms/issues | # # | | # # | Each option in this file is documented and explained here: | # # | ==> https://luckperms.net/wiki/Configuration | # # | | # # | New options are not added to this file automatically. Default values are used if an | # # | option cannot be found. The latest config versions can be obtained at the link above. | # # +----------------------------------------------------------------------------------------------+ # #################################################################################################### # +----------------------------------------------------------------------------------------------+ # # | | # # | ESSENTIAL SETTINGS | # # | | # # | Important settings that control how LuckPerms functions. | # # | | # # +----------------------------------------------------------------------------------------------+ # # The name of the server, used for server specific permissions. # # - When set to "global" this setting is effectively ignored. # - In all other cases, the value here is added to all players in a "server" context. # - See: https://luckperms.net/wiki/Context server: global # If the servers own UUID cache/lookup facility should be used when there is no record for a player # already in LuckPerms. # # - When this is set to 'false', commands using a player's username will not work unless the player # has joined since LuckPerms was first installed. # - To get around this, you can use a player's uuid directly in the command, or enable this option. # - When this is set to 'true', the server facility is used. This may use a number of methods, # including checking the servers local cache, or making a request to the Mojang API. use-server-uuid-cache: false # +----------------------------------------------------------------------------------------------+ # # | | # # | STORAGE SETTINGS | # # | | # # | Controls which storage method LuckPerms will use to store data. | # # | | # # +----------------------------------------------------------------------------------------------+ # # How the plugin should store data # # - The various options are explained in more detail on the wiki: # https://luckperms.net/wiki/Storage-types # # - Possible options: # # | Remote databases - require connection information to be configured below # |=> MySQL # |=> MariaDB (preferred over MySQL) # |=> PostgreSQL # |=> MongoDB # # | Flatfile/local database - don't require any extra configuration # |=> H2 (preferred over SQLite) # |=> SQLite # # | Readable & editable text files - don't require any extra configuration # |=> YAML (.yml files) # |=> JSON (.json files) # |=> HOCON (.conf files) # |=> TOML (.toml files) # | # | By default, user, group and track data is separated into different files. Data can be combined # | and all stored in the same file by switching to a combined storage variant. # | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined' # # - A H2 database is the default option. # - If you want to edit data manually in "traditional" storage files, we suggest using YAML. storage-method: h2 # The following block defines the settings for remote database storage methods. # # - You don't need to touch any of the settings here if you're using a local storage method! # - The connection detail options are shared between all remote storage types. data: # Define the address and port for the database. # - The standard DB engine port is used by default # (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017) # - Specify as "host:port" if differs address: localhost # The name of the database to store LuckPerms data in. # - This must be created already. Don't worry about this setting if you're using MongoDB. database: minecraft # Credentials for the database. username: root password: '' # These settings apply to the MySQL connection pool. # - The default values will be suitable for the majority of users. # - Do not change these settings unless you know what you're doing! pool-settings: # Sets the maximum size of the MySQL connection pool. # - Basically this value will determine the maximum number of actual # connections to the database backend. # - More information about determining the size of connection pools can be found here: # https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing maximum-pool-size: 10 # Sets the minimum number of idle connections that the pool will try to maintain. # - For maximum performance and responsiveness to spike demands, it is recommended to not set # this value and instead allow the pool to act as a fixed size connection pool. # (set this value to the same as 'maximum-pool-size') minimum-idle: 10 # This setting controls the maximum lifetime of a connection in the pool in milliseconds. # - The value should be at least 30 seconds less than any database or infrastructure imposed # connection time limit. maximum-lifetime: 1800000 # 30 minutes # This setting controls how frequently the pool will 'ping' a connection in order to prevent it # from being timed out by the database or network infrastructure, measured in milliseconds. # - The value should be less than maximum-lifetime and greater than 30000 (30 seconds). # - Setting the value to zero will disable the keepalive functionality. keepalive-time: 0 # This setting controls the maximum number of milliseconds that the plugin will wait for a # connection from the pool, before timing out. connection-timeout: 5000 # 5 seconds # This setting allows you to define extra properties for connections. # # By default, the following options are set to enable utf8 encoding. (you may need to remove # these if you are using PostgreSQL) # useUnicode: true # characterEncoding: utf8 # # You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and # 'verifyServerCertificate' options below. properties: useUnicode: true characterEncoding: utf8 #useSSL: false #verifyServerCertificate: false # The prefix for all LuckPerms SQL tables. # # - This only applies for remote SQL storage types (MySQL, MariaDB, etc). # - Change this if you want to use different tables for different servers. table-prefix: 'luckperms_' # The prefix to use for all LuckPerms MongoDB collections. # # - This only applies for the MongoDB storage type. # - Change this if you want to use different collections for different servers. The default is no # prefix. mongodb-collection-prefix: '' # The connection string URI to use to connect to the MongoDB instance. # # - When configured, this setting will override anything defined in the address, database, # username or password fields above. # - If you have a connection string that starts with 'mongodb://' or 'mongodb+srv://', enter it # below. # - For more information, please see https://docs.mongodb.com/manual/reference/connection-string/ mongodb-connection-uri: '' # Define settings for a "split" storage setup. # # - This allows you to define a storage method for each type of data. # - The connection options above still have to be correct for each type here. split-storage: # Don't touch this if you don't want to use split storage! enabled: false methods: # These options don't need to be modified if split storage isn't enabled. user: h2 group: h2 track: h2 uuid: h2 log: h2 # +----------------------------------------------------------------------------------------------+ # # | | # # | UPDATE PROPAGATION & MESSAGING SERVICE | # # | | # # | Controls the ways in which LuckPerms will sync data & notify other servers of changes. | # # | These options are documented on greater detail on the wiki under "Instant Updates". | # # | | # # +----------------------------------------------------------------------------------------------+ # # This option controls how frequently LuckPerms will perform a sync task. # # - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is # being used by the plugin. # - This is disabled by default, as most users will not need it. However, if you're using a remote # storage type without a messaging service setup, you may wish to set this to something like 3. # - Set to -1 to disable the task completely. sync-minutes: -1 # If the file watcher should be enabled. # # - When using a file-based storage type, LuckPerms can monitor the data files for changes, and # automatically update when changes are detected. # - If you don't want this feature to be active, set this option to false. watch-files: true # Define which messaging service should be used by the plugin. # # - If enabled and configured, LuckPerms will use the messaging service to inform other connected # servers of changes. # - Use the command "/lp networksync" to manually push changes. # - Data is NOT stored using this service. It is only used as a messaging platform. # # - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need # for LuckPerms to poll the database for changes. # # - Possible options: # => sql Uses the SQL database to form a queue system for communication. Will only work when # 'storage-method' is set to MySQL or MariaDB. This is chosen by default if the # option is set to 'auto' and SQL storage is in use. Set to 'notsql' to disable this. # => pluginmsg Uses the plugin messaging channels to communicate with the proxy. # LuckPerms must be installed on your proxy & all connected servers backend servers. # Won't work if you have more than one proxy. # => lilypad Uses LilyPad pub-sub to push changes. You need to have the LilyPad-Connect plugin # installed. # => redis Uses Redis pub-sub to push changes. Your server connection info must be configured # below. # => rabbitmq Uses RabbitMQ pub-sub to push changes. Your server connection info must be # configured below. # => custom Uses a messaging service provided using the LuckPerms API. # => auto Attempts to automatically setup a messaging service using redis or sql. messaging-service: auto # If LuckPerms should automatically push updates after a change has been made with a command. auto-push-updates: true # If LuckPerms should push logging entries to connected servers via the messaging service. push-log-entries: true # If LuckPerms should broadcast received logging entries to players on this platform. # # - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you # should set this option to false on either your backends or your proxies, to avoid players being # messaged twice about log entries. broadcast-received-log-entries: true # Settings for Redis. # Port 6379 is used by default; set address to "host:port" if differs redis: enabled: false address: localhost username: '' password: '' # Settings for RabbitMQ. # Port 5672 is used by default; set address to "host:port" if differs rabbitmq: enabled: false address: localhost vhost: '/' username: 'guest' password: 'guest' # +----------------------------------------------------------------------------------------------+ # # | | # # | CUSTOMIZATION SETTINGS | # # | | # # | Settings that allow admins to customize the way LuckPerms operates. | # # | | # # +----------------------------------------------------------------------------------------------+ # # Controls how temporary permissions/parents/meta should be accumulated. # # - The default behaviour is "deny". # - This behaviour can also be specified when the command is executed. See the command usage # documentation for more info. # # - Possible options: # => accumulate durations will be added to the existing expiry time # => replace durations will be replaced if the new duration is later than the current # expiration # => deny the command will just fail if you try to add another node with the same expiry temporary-add-behaviour: deny # Controls how LuckPerms will determine a users "primary" group. # # - The meaning and influence of "primary groups" are explained in detail on the wiki. # - The preferred approach is to let LuckPerms automatically determine a users primary group # based on the relative weight of their parent groups. # # - Possible options: # => stored use the value stored against the users record in the file/database # => parents-by-weight just use the users most highly weighted parent # => all-parents-by-weight same as above, but calculates based upon all parents inherited from # both directly and indirectly primary-group-calculation: parents-by-weight # If the plugin should check for "extra" permissions with users run LP commands. # # - These extra permissions allow finer control over what users can do with each command, and who # they have access to edit. # - The nature of the checks are documented on the wiki under "Argument based command permissions". # - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon # the arguments given within the command. argument-based-command-permissions: false # If the plugin should check whether senders are a member of a given group before they're able to # edit the groups data or add/remove other users to/from it. # Note: these limitations do not apply to the web editor! require-sender-group-membership-to-modify: false # If the plugin should send log notifications to users whenever permissions are modified. # # - Notifications are only sent to those with the appropriate permission to receive them # - They can also be temporarily enabled/disabled on a per-user basis using # '/lp log notify ' log-notify: true # Defines a list of log entries which should not be sent as notifications to users. # # - Each entry in the list is a RegEx expression which is matched against the log entry description. log-notify-filtered-descriptions: # - "parent add example" # If LuckPerms should automatically install translation bundles and periodically update them. auto-install-translations: true # Defines the options for prefix and suffix stacking. # # - The feature allows you to display multiple prefixes or suffixes alongside a players username in # chat. # - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking". # # - The options are divided into separate sections for prefixes and suffixes. # - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all', # 'first-only' or 'last-only'. # - The value of 'start-spacer' is included at the start of the resultant prefix/suffix. # - The value of 'end-spacer' is included at the end of the resultant prefix/suffix. # - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix. # # - Possible format options: # => highest Selects the value with the highest weight, from all values # held by or inherited by the player. # # => lowest Same as above, except takes the one with the lowest weight. # # => highest_own Selects the value with the highest weight, but will not # accept any inherited values. # # => lowest_own Same as above, except takes the value with the lowest weight. # # => highest_inherited Selects the value with the highest weight, but will only # accept inherited values. # # => lowest_inherited Same as above, except takes the value with the lowest weight. # # => highest_on_track_ Selects the value with the highest weight, but only if the # value was inherited from a group on the given track. # # => lowest_on_track_ Same as above, except takes the value with the lowest weight. # # => highest_not_on_track_ Selects the value with the highest weight, but only if the # value was inherited from a group not on the given track. # # => lowest_not_on_track_ Same as above, except takes the value with the lowest weight. # # => highest_from_group_ Selects the value with the highest weight, but only if the # value was inherited from the given group. # # => lowest_from_group_ Same as above, except takes the value with the lowest weight. # # => highest_not_from_group_ Selects the value with the highest weight, but only if the # value was not inherited from the given group. # # => lowest_not_from_group_ Same as above, except takes the value with the lowest weight. meta-formatting: prefix: format: - "highest" duplicates: first-only start-spacer: "" middle-spacer: " " end-spacer: "" suffix: format: - "highest" duplicates: first-only start-spacer: "" middle-spacer: " " end-spacer: "" # +----------------------------------------------------------------------------------------------+ # # | | # # | PERMISSION CALCULATION AND INHERITANCE | # # | | # # | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # # | | # # +----------------------------------------------------------------------------------------------+ # # The algorithm LuckPerms should use when traversing the "inheritance tree". # # - Possible options: # => breadth-first See: https://en.wikipedia.org/wiki/Breadth-first_search # => depth-first-pre-order See: https://en.wikipedia.org/wiki/Depth-first_search # => depth-first-post-order See: https://en.wikipedia.org/wiki/Depth-first_search inheritance-traversal-algorithm: depth-first-pre-order # If a final sort according to "inheritance rules" should be performed after the traversal algorithm # has resolved the inheritance tree. # # "Inheritance rules" refers to things such as group weightings, primary group status, and the # natural contextual ordering of the group nodes. # # Setting this to 'true' will allow for the inheritance rules to take priority over the structure of # the inheritance tree. # # Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards, # and when this setting is 'false':, the rules are just applied during each step of the traversal. post-traversal-inheritance-sort: false # Defines the mode used to determine whether a set of contexts are satisfied. # # - Possible options: # => at-least-one-value-per-key Set A will be satisfied by another set B, if at least one of the # key-value entries per key in A are also in B. # => all-values-per-key Set A will be satisfied by another set B, if all key-value # entries in A are also in B. context-satisfy-mode: at-least-one-value-per-key # LuckPerms has a number of built-in contexts. These can be disabled by adding the context key to # the list below. disabled-contexts: # - "world" # +----------------------------------------------------------------------------------------------+ # # | Permission resolution settings | # # +----------------------------------------------------------------------------------------------+ # # If users on this server should have their global permissions applied. # When set to false, only server specific permissions will apply for users on this server include-global: true # If users on this server should have their global world permissions applied. # When set to false, only world specific permissions will apply for users on this server include-global-world: true # If users on this server should have global (non-server specific) groups applied apply-global-groups: true # If users on this server should have global (non-world specific) groups applied apply-global-world-groups: true # +----------------------------------------------------------------------------------------------+ # # | Meta lookup settings | # # +----------------------------------------------------------------------------------------------+ # # Defines how meta values should be selected. # # - Possible options: # => inheritance Selects the meta value that was inherited first # => highest-number Selects the highest numerical meta value # => lowest-number Selects the lowest numerical meta value meta-value-selection-default: inheritance # Defines how meta values should be selected per key. meta-value-selection: # max-homes: highest-number # +----------------------------------------------------------------------------------------------+ # # | Inheritance settings | # # +----------------------------------------------------------------------------------------------+ # # If the plugin should apply wildcard permissions. # # - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered # permissions matching the wildcard. apply-wildcards: true # If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard # inheritance system. # # - That being: If a user has been granted "example", then the player should have also be # automatically granted "example.function", "example.another", "example.deeper.nesting", # and so on. apply-sponge-implicit-wildcards: false # If the plugin should apply negated Bukkit default permissions before it considers wildcard # assignments. # # - Plugin authors can define permissions which explicitly should not be given automatically to OPs. # This is usually used for so called "anti-permissions" - permissions which, when granted, apply # something negative. # - If this option is set to true, LuckPerms will consider any negated declarations made by # plugins before it considers wildcards. (similar to the way the OP system works) # - If this option is set to false, LuckPerms will consider any wildcard assignments first. apply-default-negated-permissions-before-wildcards: false # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the # node, and resolve & apply all registered permissions matching the regex. apply-regex: true # If the plugin should complete and apply shorthand permissions. # # - If set to true, LuckPerms will detect and expand shorthand node patterns. apply-shorthand: true # If the plugin should apply Bukkit child permissions. # # - Plugin authors can define custom permissions structures for their plugin, which will be resolved # and used by LuckPerms if this setting is enabled. apply-bukkit-child-permissions: true # If the plugin should apply Bukkit default permissions. # # - Plugin authors can define permissions which should be given to all users by default, or setup # permissions which should/shouldn't be given to opped players. # - If this option is set to false, LuckPerms will ignore these defaults. apply-bukkit-default-permissions: true # If the plugin should apply attachment permissions. # # - Other plugins on the server are able to add their own "permission attachments" to players. # - This allows them to grant players additional permissions which last until the end of the # session, or until they're removed. # - If this option is set to false, LuckPerms will not include these attachment permissions when # considering if a player should have access to a certain permission. apply-bukkit-attachment-permissions: true # +----------------------------------------------------------------------------------------------+ # # | Extra settings | # # +----------------------------------------------------------------------------------------------+ # # A list of context calculators which will be skipped when calculating contexts. # # - You can disable context calculators by either: # => specifying the Java class name used by the calculator (e.g. com.example.ExampleCalculator) # => specifying a sub-section of the Java package used by the calculator (e.g. com.example) disabled-context-calculators: [] # Allows you to set "aliases" for the worlds sent forward for context calculation. # # - These aliases are provided in addition to the real world name. Applied recursively. # - Remove the comment characters for the default aliases to apply. world-rewrite: # world_nether: world # world_the_end: world # Define special group weights for this server. # # - Group weights can also be applied directly to group data, using the setweight command. # - This section allows weights to be set on a per-server basis. group-weight: # admin: 10 # +----------------------------------------------------------------------------------------------+ # # | | # # | FINE TUNING OPTIONS | # # | | # # | A number of more niche settings for tweaking and changing behaviour. The section also | # # | contains toggles for some more specialised features. It is only necessary to make changes to | # # | these options if you want to fine-tune LuckPerms behaviour. | # # | | # # +----------------------------------------------------------------------------------------------+ # # +----------------------------------------------------------------------------------------------+ # # | Server Operator (OP) settings | # # +----------------------------------------------------------------------------------------------+ # # Controls whether server operators should exist at all. # # - When set to 'false', all players will be de-opped, and the /op and /deop commands will be # disabled. Note that vanilla features like the spawn-protection require an operator on the # server to work. enable-ops: true # Enables or disables a special permission based system in LuckPerms for controlling OP status. # # - If set to true, any user with the permission "luckperms.autoop" will automatically be granted # server operator status. This permission can be inherited, or set on specific servers/worlds, # temporarily, etc. # - Additionally, setting this to true will force the "enable-ops" option above to false. All users # will be de-opped unless they have the permission node, and the op/deop commands will be # disabled. # - It is recommended that you use this option instead of assigning a single '*' permission. auto-op: false # Defines if "opped" players should be able to use all LuckPerms commands by default. # # - Set to false to only allow users who have the permissions access to the commands commands-allow-op: true # +----------------------------------------------------------------------------------------------+ # # | Vault integration settings | # # +----------------------------------------------------------------------------------------------+ # # If Vault lookups for offline players on the main server thread should be enabled. # # LuckPerms has a "catch" for plugins attempting to perform unsafe offline player data lookups # from the main server thread. This catch raises an exception (causes an error to occur) when unsafe # lookups are made, instead of allowing the lookup to happen, which would likely cause the server # to lag. # # However, if you're willing to accept the consequences, the catch can be disabled by setting this # option to 'true. vault-unsafe-lookups: false # If LuckPerms should use the 'display name' of a group when returning groups in Vault API calls. # # - When this option is set to true, the display name of the group is returned. # - When this option is set to false, the standard name/id of the group is returned. vault-group-use-displaynames: true # Controls which group LuckPerms should use for NPC players when handling Vault requests. # # - As NPCs aren't actually real players, LuckPerms does not load any user data for them. This # becomes an issue when plugins want to check for their permissions using Vault. # - As a solution, Vault checks for NPCs fallback to a group, which is defined below. vault-npc-group: default # Controls how LuckPerms should consider the OP status of NPC players when handing Vault requests. # # - If you want NPCs to have the same permissions as "normal" players, set this option to false. # - If you want NPCs to have OP status, set this option to true. vault-npc-op-status: false # If the vault-server option below should be used. # # - When this option is set to false, the server value defined above under "server" is used. use-vault-server: false # The name of the server used within Vault operations. # # - If you don't want Vault operations to be server specific, set this to "global". # - Will only take effect if use-vault-server is set to true above. vault-server: global # If global permissions should be considered when retrieving meta or player groups vault-include-global: true # If Vault operations should ignore any world arguments if supplied. vault-ignore-world: false # +----------------------------------------------------------------------------------------------+ # # | Miscellaneous (and rarely used) settings | # # +----------------------------------------------------------------------------------------------+ # # If LuckPerms should produce extra logging output when it handles logins. # # - Useful if you're having issues with UUID forwarding or data not being loaded. debug-logins: false # If LuckPerms should allow usernames with non alphanumeric characters. # # - Note that due to the design of the storage implementation, usernames must still be 16 characters # or less. allow-invalid-usernames: false # If LuckPerms should not require users to confirm bulkupdate operations. # # - When set to true, operations will be executed immediately. # - This is not recommended, as bulkupdate has the potential to irreversibly delete large amounts of # data, and is not designed to be executed automatically. # - If automation is needed, users should prefer using the LuckPerms API. skip-bulkupdate-confirmation: false # If LuckPerms should prevent bulkupdate operations. # # - When set to true, bulkupdate operations (the /lp bulkupdate command) will not work. # - When set to false, bulkupdate operations will be allowed via the console. disable-bulkupdate: false # If LuckPerms should allow a users primary group to be removed with the 'parent remove' command. # # - When this happens, the plugin will set their primary group back to default. prevent-primary-group-removal: false # If LuckPerms should update the list of commands sent to the client when permissions are changed. update-client-command-list: true # If LuckPerms should attempt to register "Brigadier" command list data for its commands. register-command-list-data: true # If LuckPerms should attempt to resolve Vanilla command target selectors for LP commands. # See here for more info: https://minecraft.gamepedia.com/Commands#Target_selectors resolve-command-selectors: false