diff --git a/bukkit/src/main/resources/config.yml b/bukkit/src/main/resources/config.yml index 954fe5b9..648674d6 100644 --- a/bukkit/src/main/resources/config.yml +++ b/bukkit/src/main/resources/config.yml @@ -18,161 +18,303 @@ #################################################################################################### # +----------------------------------------------------------------------------------------------+ # -# | General | # +# | | # +# | ESSENTIAL SETTINGS | # +# | | # +# | Important settings that control how LuckPerms functions. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# The name of the server, used for server specific permissions. Set to 'global' to disable. +# 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://github.com/lucko/LuckPerms/wiki/Context server: global -# If users on this server should have their global permissions applied. -# If 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. -# If 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 - # If the servers own UUID cache/lookup facility should be used when there is no record for a player -# in the LuckPerms cache. +# 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 -# If LuckPerms should use the "server-name" property from the "server.properties" -# file as the "server" option within LuckPerms. -use-server-properties-name: false -# If set to true, LuckPerms will allow usernames with non alphanumeric characters. + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | STORAGE SETTINGS | # +# | | # +# | Controls which storage method LuckPerms will use to store data. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# How the plugin should store data # -# 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 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 the plugin should send log notifications to users whenever permissions are modified. -log-notify: true - -# Mirrors world names. Whenever LuckPerms checks what world a user is in, if the world name is in -# this list, the value assigned will be sent forward for permission calculation instead. -world-rewrite: -# world_nether: world -# world_the_end: world - -# Controls how temporary permissions/parents/meta should be accumulated +# - The various options are explained in more detail on the wiki: +# https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type # -# The default behaviour is "deny" -# If "accumulate": durations will be added to the existing expiry time -# If "replace": durations will be replaced if the new duration is later than the current expiration -# If "deny": the command will just fail if you try to add another node with the same expiry +# - 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) +# |=> HSON (.conf files) +# +# - 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 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. + properties: + useUnicode: true + characterEncoding: utf8 + + # The prefix for all LuckPerms SQL tables. + # - Change this is you want to use different tables for different servers. + table_prefix: 'luckperms_' + + # The prefix to use for all LuckPerms collections. Change this if you want to use different + # collections for different servers. The default is no prefix. + mongodb_collection_prefix: '' + + # MongoDB ClientConnectionURI for use with replica sets and custom connection options + # - 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: +# => bungee 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 BungeeCord 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. +# => none Disables the service. +messaging-service: none + +# 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 + password: '' + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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 -# How should LuckPerms determine a users "primary" group. +# Controls how LuckPerms will determine a users "primary" group. # -# Available 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 +# - 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 set to false, the plugin will allow a Users primary group to be removed with the -# 'parent remove' command, and will set their primary group back to default. -prevent-primary-group-removal: false - # 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 permissions are *not* static, unlike the 'base' permisssions, and will depend upon the -# arguments given within the command. +# - 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 - - - -# +----------------------------------------------------------------------------------------------+ # -# | Permission Calculation | # -# +----------------------------------------------------------------------------------------------+ # - -# 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 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 - -# The algorithm LuckPerms should use when traversing the "inheritance tree". +# If the plugin should send log notifications to users whenever permissions are modified. # -# The valid options are: -# - breadth-first -# - depth-first-pre-order -# - depth-first-post-order +# - 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 the options for prefix and suffix stacking. # -# See here for information about the differences between each algorithm. -# - https://en.wikipedia.org/wiki/Breadth-first_search -# - https://en.wikipedia.org/wiki/Depth-first_search -inheritance-traversal-algorithm: depth-first-pre-order - -# Define special group weights for this server. -# Default is just 0. -group-weight: -# admin: 10 - - - - -# +----------------------------------------------------------------------------------------------+ # -# | Meta Formatting & Stacking | # -# +----------------------------------------------------------------------------------------------+ # - -# Allows you to setup prefix/suffix stacking options. +# - 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". # -# Available formats: -# - highest -# - lowest -# - highest_own -# - lowest_own -# - highest_inherited -# - lowest_inherited -# - highest_on_track_ -# - lowest_on_track_ -# - highest_not_on_track_ -# - lowest_not_on_track_ +# - The options are divided into separate sections for prefixes and suffixes. +# - 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. # -# Each element is added in the order listed. +# - 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. meta-formatting: prefix: format: @@ -191,46 +333,156 @@ meta-formatting: # +----------------------------------------------------------------------------------------------+ # -# | OP (Server Operator) Settings | # +# | | # +# | PERMISSION CALCULATION AND INHERITANCE | # +# | | # +# | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# If the vanilla OP system is enabled. If set to false, all users will be de-opped, and the op/deop -# commands will be disabled. +# 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 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 | # +# +----------------------------------------------------------------------------------------------+ # + +# 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. enable-ops: true -# 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. +# Enables or disables a special permission based system in LuckPerms for controlling OP status. # -# 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 important to note that this setting is only checked when a player first joins the server, -# and when they switch worlds. Therefore, simply removing this permission from a user will not -# automatically de-op them. A player needs to relog to have the change take effect. -# -# It is recommended that you use this option instead of assigning a single '*' permission. +# - 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 important to note that this setting is only checked when a player first joins the server, +# and when they switch worlds. Therefore, simply removing this permission from a user will not +# automatically de-op them. A player needs to relog to have the change take effect. +# - It is recommended that you use this option instead of assigning a single '*' permission. auto-op: false -# If opped players should be allowed to use LuckPerms commands. Set to false to only allow users who -# have the permissions access to the commands +# 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 | # +# | Vault integration settings | # # +----------------------------------------------------------------------------------------------+ # # 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. +# +# - 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". +# The name of the server used within Vault operations. # -# Will only take effect if use-vault-server is set to true above. +# - 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 @@ -242,150 +494,37 @@ vault-ignore-world: false # If LuckPerms should print debugging info to console when a plugin uses a Vault function vault-debug: false - - - # +----------------------------------------------------------------------------------------------+ # -# | Storage | # +# | Miscellaneous (and rarely used) settings | # # +----------------------------------------------------------------------------------------------+ # -# Which storage method the plugin should use. +# If LuckPerms should produce extra logging output when it handles logins. # -# See: https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type -# Currently supported: mysql, mariadb, postgresql, sqlite, h2, json, yaml, hocon, mongodb +# - Useful if you're having issues with UUID forwarding or data not being loaded. +debug-logins: false + +# If LuckPerms should use the "server-name" property from the "server.properties" file as the +# "server" option within LuckPerms. +use-server-properties-name: false + +# If LuckPerms should allow usernames with non alphanumeric characters. # -# Fill out connection info below if you're using MySQL, MariaDB, PostgreSQL or MongoDB -# If your MySQL server supports it, the "mariadb" option is preferred over "mysql". -storage-method: h2 +# - Note that due to the design of the storage implementation, usernames must still be 16 characters +# or less. +allow-invalid-usernames: false -# When using a file-based storage type, LuckPerms can monitor the data files for changes, and then -# schedule automatic updates when changes are detected. +# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command. # -# If you don't want this to happen, set this option to false. -watch-files: true - -# This block enables support for split datastores. -split-storage: - enabled: false - methods: - user: h2 - group: h2 - track: h2 - uuid: h2 - log: h2 - -data: - # Uses standard DB engine port by default - # MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017 - # Specify as "host:port" if differs - address: localhost - - database: minecraft - 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 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. - properties: - useUnicode: true - characterEncoding: utf8 - - # The prefix for all LuckPerms tables. Change this is you want to use different tables for - # different servers. - # - # This should *not* be set to "lp_" if you have previously ran LuckPerms v2.16.81 or earlier with - # this database. - table_prefix: 'luckperms_' - - # The prefix to use for all LuckPerms collections. Change this if you want to use different - # collections for different servers. The default is no prefix. - mongodb_collection_prefix: '' - - # MongoDB ClientConnectionURI for use with replicasets and custom connection options - # See https://docs.mongodb.com/manual/reference/connection-string/ - mongodb_connection_URI: '' - - # 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 value to something like - # 3. - # - # Set to -1 to disable the task completely. - sync-minutes: -1 - -# Settings for the messaging service -# -# If enabled and configured, LuckPerms will use the messaging system to inform other -# connected servers of changes. Use the command "/luckperms networksync" to 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. -# -# Available options: -# -> bungee uses the plugin messaging channels. Must be enabled on all connected servers to work. -# -> 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 redis server must be configured below. -# -> none nothing -messaging-service: none - -# 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 - password: '' +# - When this happens, the plugin will set their primary group back to default. +prevent-primary-group-removal: false # +----------------------------------------------------------------------------------------------+ # -# | Default Assignments | # +# | | # +# | DEFAULT ASSIGNMENTS | # +# | | # # +----------------------------------------------------------------------------------------------+ # # This section allows you to define defaults to give users whenever they connect to the server. diff --git a/bungee/src/main/resources/config.yml b/bungee/src/main/resources/config.yml index f2bc458f..391f174b 100644 --- a/bungee/src/main/resources/config.yml +++ b/bungee/src/main/resources/config.yml @@ -18,158 +18,310 @@ #################################################################################################### # +----------------------------------------------------------------------------------------------+ # -# | General | # +# | | # +# | ESSENTIAL SETTINGS | # +# | | # +# | Important settings that control how LuckPerms functions. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# The name of the server, used for server specific permissions. Set to 'global' to disable. +# 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://github.com/lucko/LuckPerms/wiki/Context server: bungee -# If users on this server should have their global permissions applied. -# If 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. -# If 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 - # If the servers own UUID cache/lookup facility should be used when there is no record for a player -# in the LuckPerms cache. +# already in LuckPerms. # -# Since BungeeCord doesn't maintain it's own UUID cache, when this option is true, LuckPerms will -# try to find a uuid for a username using RedisBungee, if installed. +# - Since BungeeCord doesn't maintain it's own UUID cache, when this option is true, LuckPerms will +# try to find a uuid for a username using RedisBungee, if installed. use-server-uuid-cache: false -# If set to true, LuckPerms will 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 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 + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type +# +# - 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) +# |=> HSON (.conf files) +# +# - 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 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. + properties: + useUnicode: true + characterEncoding: utf8 + + # The prefix for all LuckPerms SQL tables. + # - Change this is you want to use different tables for different servers. + table_prefix: 'luckperms_' + + # The prefix to use for all LuckPerms collections. Change this if you want to use different + # collections for different servers. The default is no prefix. + mongodb_collection_prefix: '' + + # MongoDB ClientConnectionURI for use with replica sets and custom connection options + # - 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: +# => bungee 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 BungeeCord proxy. +# => redis Uses Redis pub-sub to push changes. Your server connection info must be +# configured below. +# => redisbungee Uses Redis pub-sub to push changes, using the RedisBungee API. You need to have +# the RedisBungee plugin installed. +# => none Disables the service. +messaging-service: none + +# 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: false + +# Settings for Redis. +# Port 6379 is used by default; set address to "host:port" if differs +redis: + enabled: false + address: localhost + password: '' + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | CUSTOMIZATION SETTINGS | # +# | | # +# | Settings that allow admins to customize the way LuckPerms operates. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # # If LuckPerms should ensure all players have permission data when they connect to the server. # -# When set to true, LuckPerms will cancel login attempts if it is unable to load permissions data -# for a user, of if the storage provider is unavailable. -# -# When set to false, LuckPerms will allow a player to connect regardless of whether their -# permissions data could be loaded. -# -# This option does not exist on other platforms, and effectively defaults to true - however, -# the option is provided on BungeeCord, as it is less likely to be so dependant on permissions. +# - When set to true, LuckPerms will cancel login attempts if it is unable to load permissions data +# for a user, of if the storage provider is unavailable. +# - When set to false, LuckPerms will allow a player to connect regardless of whether their +# permissions data could be loaded. +# - This option does not exist on other platforms, and effectively defaults to true - however, +# the option is provided on BungeeCord, as it is less likely to be so dependant on permissions. cancel-failed-logins: false -# If the plugin should send log notifications to users whenever permissions are modified. -log-notify: true - -# Mirrors world names. Whenever LuckPerms checks what world a user is in, if the world name is in -# this list, the value assigned will be sent forward for permission calculation instead. -world-rewrite: -# world_nether: world -# world_the_end: world - -# Controls how temporary permissions/parents/meta should be accumulated +# Controls how temporary permissions/parents/meta should be accumulated. # -# The default behaviour is "deny" -# If "accumulate": durations will be added to the existing expiry time -# If "replace": durations will be replaced if the new duration is later than the current expiration -# If "deny": the command will just fail if you try to add another node with the same expiry +# - 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 -# How should LuckPerms determine a users "primary" group. +# Controls how LuckPerms will determine a users "primary" group. # -# Available 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 +# - 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 set to false, the plugin will allow a Users primary group to be removed with the -# 'parent remove' command, and will set their primary group back to default. -prevent-primary-group-removal: false - # 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 permissions are *not* static, unlike the 'base' permisssions, and will depend upon the -# arguments given within the command. +# - 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 - - - -# +----------------------------------------------------------------------------------------------+ # -# | Permission Calculation | # -# +----------------------------------------------------------------------------------------------+ # - -# 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 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 the permissions & groups defined in the BungeeCord config.yml -# If set to false, LuckPerms will ignore these values. -apply-bungee-config-permissions: false - -# The algorithm LuckPerms should use when traversing the "inheritance tree". +# If the plugin should send log notifications to users whenever permissions are modified. # -# The valid options are: -# - breadth-first -# - depth-first-pre-order -# - depth-first-post-order +# - 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 the options for prefix and suffix stacking. # -# See here for information about the differences between each algorithm. -# - https://en.wikipedia.org/wiki/Breadth-first_search -# - https://en.wikipedia.org/wiki/Depth-first_search -inheritance-traversal-algorithm: depth-first-pre-order - -# Define special group weights for this server. -# Default is just 0. -group-weight: -# admin: 10 - - - - -# +----------------------------------------------------------------------------------------------+ # -# | Meta Formatting & Stacking | # -# +----------------------------------------------------------------------------------------------+ # - -# Allows you to setup prefix/suffix stacking options. +# - 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". # -# Available formats: -# - highest -# - lowest -# - highest_own -# - lowest_own -# - highest_inherited -# - lowest_inherited -# - highest_on_track_ -# - lowest_on_track_ -# - highest_not_on_track_ -# - lowest_not_on_track_ +# - The options are divided into separate sections for prefixes and suffixes. +# - 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. # -# Each element is added in the order listed. +# - 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. meta-formatting: prefix: format: @@ -188,147 +340,124 @@ meta-formatting: # +----------------------------------------------------------------------------------------------+ # -# | Storage | # +# | | # +# | PERMISSION CALCULATION AND INHERITANCE | # +# | | # +# | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# Which storage method the plugin should use. +# The algorithm LuckPerms should use when traversing the "inheritance tree". # -# See: https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type -# Currently supported: mysql, mariadb, postgresql, sqlite, h2, json, yaml, hocon, mongodb +# - 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 + +# +----------------------------------------------------------------------------------------------+ # +# | Inheritance settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If the plugin should apply wildcard permissions. # -# Fill out connection info below if you're using MySQL, MariaDB, PostgreSQL or MongoDB -# If your MySQL server supports it, the "mariadb" option is preferred over "mysql". -storage-method: h2 +# - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered +# permissions matching the wildcard. +apply-wildcards: true -# When using a file-based storage type, LuckPerms can monitor the data files for changes, and then -# schedule automatic updates when changes are detected. +# If the plugin should parse regex permissions. # -# If you don't want this to happen, set this option to false. -watch-files: true +# - 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 -# This block enables support for split datastores. -split-storage: - enabled: false - methods: - user: h2 - group: h2 - track: h2 - uuid: h2 - log: h2 - -data: - # Uses standard DB engine port by default - # MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017 - # Specify as "host:port" if differs - address: localhost - - database: minecraft - 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 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. - properties: - useUnicode: true - characterEncoding: utf8 - - # The prefix for all LuckPerms tables. Change this is you want to use different tables for - # different servers. - # - # This should *not* be set to "lp_" if you have previously ran LuckPerms v2.16.81 or earlier with - # this database. - table_prefix: 'luckperms_' - - # The prefix to use for all LuckPerms collections. Change this if you want to use different - # collections for different servers. The default is no prefix. - mongodb_collection_prefix: '' - - # MongoDB ClientConnectionURI for use with replicasets and custom connection options - # See https://docs.mongodb.com/manual/reference/connection-string/ - mongodb_connection_URI: '' - - # 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 value to something like - # 3. - # - # Set to -1 to disable the task completely. - sync-minutes: -1 - -# Settings for the messaging service +# If the plugin should complete and apply shorthand permissions. # -# If enabled and configured, LuckPerms will use the messaging system to inform other -# connected servers of changes. Use the command "/luckpermsbungee networksync" to push changes. -# Data is NOT stored using this service. It is only used as a messaging platform. +# - If set to true, LuckPerms will detect and expand shorthand node patterns. +apply-shorthand: true + +# If the plugin should apply the permissions & groups defined in the BungeeCord config.yml # -# 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. +# - If set to false, LuckPerms will ignore these values. +apply-bungee-config-permissions: false + +# +----------------------------------------------------------------------------------------------+ # +# | Extra settings | # +# +----------------------------------------------------------------------------------------------+ # + +# Allows you to set "aliases" for the worlds sent forward for context calculation. # -# Available options: -# -> bungee uses the plugin messaging channels. Must be enabled on all connected servers to -# work. -# -> redis uses redis pub sub to push changes. Your redis server must be configured below. -# -> redisbungee uses redis pub sub to push changes, using RedisBungee's API. You need to have the -# RedisBungee plugin installed. -# -> none nothing -messaging-service: none +# - 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 -# 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. +# Define special group weights for this server. # -# 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: false - -# Settings for Redis. -# Port 6379 is used by default; set address to "host:port" if differs -redis: - enabled: false - address: localhost - password: '' +# - 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 # +----------------------------------------------------------------------------------------------+ # -# | Default Assignments | # +# | | # +# | 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. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# +----------------------------------------------------------------------------------------------+ # +# | 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 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 + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | DEFAULT ASSIGNMENTS | # +# | | # # +----------------------------------------------------------------------------------------------+ # # This section allows you to define defaults to give users whenever they connect to the server. diff --git a/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java b/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java index bde8555b..cbe7ef31 100644 --- a/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java +++ b/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java @@ -33,7 +33,6 @@ import me.lucko.luckperms.common.assignments.AssignmentRule; import me.lucko.luckperms.common.config.keys.AbstractKey; import me.lucko.luckperms.common.config.keys.BooleanKey; import me.lucko.luckperms.common.config.keys.EnduringKey; -import me.lucko.luckperms.common.config.keys.IntegerKey; import me.lucko.luckperms.common.config.keys.LowercaseStringKey; import me.lucko.luckperms.common.config.keys.MapKey; import me.lucko.luckperms.common.config.keys.StringKey; @@ -81,7 +80,13 @@ public class ConfigKeys { /** * How many minutes to wait between syncs. A value <= 0 will disable syncing. */ - public static final ConfigKey SYNC_TIME = EnduringKey.wrap(IntegerKey.of("data.sync-minutes", -1)); + public static final ConfigKey SYNC_TIME = EnduringKey.wrap(AbstractKey.of(c -> { + int val = c.getInt("sync-minutes", -1); + if (val == -1) { + val = c.getInt("data.sync-minutes", -1); + } + return val; + })); /** * If permissions without a server context should be included. diff --git a/nukkit/src/main/resources/config.yml b/nukkit/src/main/resources/config.yml index fdc78420..33a9bf73 100644 --- a/nukkit/src/main/resources/config.yml +++ b/nukkit/src/main/resources/config.yml @@ -18,161 +18,298 @@ #################################################################################################### # +----------------------------------------------------------------------------------------------+ # -# | General | # +# | | # +# | ESSENTIAL SETTINGS | # +# | | # +# | Important settings that control how LuckPerms functions. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# The name of the server, used for server specific permissions. Set to 'global' to disable. +# 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://github.com/lucko/LuckPerms/wiki/Context server: global -# If users on this server should have their global permissions applied. -# If 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. -# If 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 - # If the servers own UUID cache/lookup facility should be used when there is no record for a player -# in the LuckPerms cache. +# 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 -# If LuckPerms should use the "server-name" property from the "server.properties" -# file as the "server" option within LuckPerms. -use-server-properties-name: false -# If set to true, LuckPerms will allow usernames with non alphanumeric characters. + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | STORAGE SETTINGS | # +# | | # +# | Controls which storage method LuckPerms will use to store data. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# How the plugin should store data # -# Note that due to the design of the storage implementation, usernames must still be -# 16 characters or less. -allow-invalid-usernames: true - -# 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 the plugin should send log notifications to users whenever permissions are modified. -log-notify: true - -# Mirrors world names. Whenever LuckPerms checks what world a user is in, if the world name is in -# this list, the value assigned will be sent forward for permission calculation instead. -world-rewrite: -# world_nether: world -# world_the_end: world - -# Controls how temporary permissions/parents/meta should be accumulated +# - The various options are explained in more detail on the wiki: +# https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type # -# The default behaviour is "deny" -# If "accumulate": durations will be added to the existing expiry time -# If "replace": durations will be replaced if the new duration is later than the current expiration -# If "deny": the command will just fail if you try to add another node with the same expiry +# - 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) +# |=> HSON (.conf files) +# +# - 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 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. + properties: + useUnicode: true + characterEncoding: utf8 + + # The prefix for all LuckPerms SQL tables. + # - Change this is you want to use different tables for different servers. + table_prefix: 'luckperms_' + + # The prefix to use for all LuckPerms collections. Change this if you want to use different + # collections for different servers. The default is no prefix. + mongodb_collection_prefix: '' + + # MongoDB ClientConnectionURI for use with replica sets and custom connection options + # - 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: +# => redis Uses Redis pub-sub to push changes. Your server connection info must be configured +# below. +# => none Disables the service. +messaging-service: none + +# 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 + password: '' + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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 -# How should LuckPerms determine a users "primary" group. +# Controls how LuckPerms will determine a users "primary" group. # -# Available 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 +# - 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 set to false, the plugin will allow a Users primary group to be removed with the -# 'parent remove' command, and will set their primary group back to default. -prevent-primary-group-removal: false - # 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 permissions are *not* static, unlike the 'base' permisssions, and will depend upon the -# arguments given within the command. +# - 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 - - - -# +----------------------------------------------------------------------------------------------+ # -# | Permission Calculation | # -# +----------------------------------------------------------------------------------------------+ # - -# 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 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 Nukkit 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-nukkit-child-permissions: true - -# If the plugin should apply Nukkit 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-nukkit-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-nukkit-attachment-permissions: true - -# The algorithm LuckPerms should use when traversing the "inheritance tree". +# If the plugin should send log notifications to users whenever permissions are modified. # -# The valid options are: -# - breadth-first -# - depth-first-pre-order -# - depth-first-post-order +# - 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 the options for prefix and suffix stacking. # -# See here for information about the differences between each algorithm. -# - https://en.wikipedia.org/wiki/Breadth-first_search -# - https://en.wikipedia.org/wiki/Depth-first_search -inheritance-traversal-algorithm: depth-first-pre-order - -# Define special group weights for this server. -# Default is just 0. -group-weight: -# admin: 10 - - - - -# +----------------------------------------------------------------------------------------------+ # -# | Meta Formatting & Stacking | # -# +----------------------------------------------------------------------------------------------+ # - -# Allows you to setup prefix/suffix stacking options. +# - 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". # -# Available formats: -# - highest -# - lowest -# - highest_own -# - lowest_own -# - highest_inherited -# - lowest_inherited -# - highest_on_track_ -# - lowest_on_track_ -# - highest_not_on_track_ -# - lowest_not_on_track_ +# - The options are divided into separate sections for prefixes and suffixes. +# - 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. # -# Each element is added in the order listed. +# - 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. meta-formatting: prefix: format: @@ -191,201 +328,170 @@ meta-formatting: # +----------------------------------------------------------------------------------------------+ # -# | OP (Server Operator) Settings | # +# | | # +# | PERMISSION CALCULATION AND INHERITANCE | # +# | | # +# | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# If the vanilla OP system is enabled. If set to false, all users will be de-opped, and the op/deop -# commands will be disabled. +# 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 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 Nukkit 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-nukkit-child-permissions: true + +# If the plugin should apply Nukkit 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-nukkit-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-nukkit-attachment-permissions: true + +# +----------------------------------------------------------------------------------------------+ # +# | Extra settings | # +# +----------------------------------------------------------------------------------------------+ # + +# 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. enable-ops: true -# 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. +# Enables or disables a special permission based system in LuckPerms for controlling OP status. # -# 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 important to note that this setting is only checked when a player first joins the server, -# and when they switch worlds. Therefore, simply removing this permission from a user will not -# automatically de-op them. A player needs to relog to have the change take effect. -# -# It is recommended that you use this option instead of assigning a single '*' permission. +# - 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 important to note that this setting is only checked when a player first joins the server, +# and when they switch worlds. Therefore, simply removing this permission from a user will not +# automatically de-op them. A player needs to relog to have the change take effect. +# - It is recommended that you use this option instead of assigning a single '*' permission. auto-op: false -# If opped players should be allowed to use LuckPerms commands. Set to false to only allow users who -# have the permissions access to the commands +# 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 | # +# | Miscellaneous (and rarely used) settings | # # +----------------------------------------------------------------------------------------------+ # -# 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". +# If LuckPerms should produce extra logging output when it handles logins. # -# Will only take effect if use-vault-server is set to true above. -vault-server: global +# - Useful if you're having issues with UUID forwarding or data not being loaded. +debug-logins: false -# If global permissions should be considered when retrieving meta or player groups -vault-include-global: true +# 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: true -# If Vault operations should ignore any world arguments if supplied. -vault-ignore-world: false - -# If LuckPerms should print debugging info to console when a plugin uses a Vault function -vault-debug: 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 # +----------------------------------------------------------------------------------------------+ # -# | Storage | # -# +----------------------------------------------------------------------------------------------+ # - -# Which storage method the plugin should use. -# -# See: https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type -# Currently supported: mysql, mariadb, postgresql, sqlite, h2, json, yaml, hocon, mongodb -# -# Fill out connection info below if you're using MySQL, MariaDB, PostgreSQL or MongoDB -# If your MySQL server supports it, the "mariadb" option is preferred over "mysql". -storage-method: h2 - -# When using a file-based storage type, LuckPerms can monitor the data files for changes, and then -# schedule automatic updates when changes are detected. -# -# If you don't want this to happen, set this option to false. -watch-files: true - -# This block enables support for split datastores. -split-storage: - enabled: false - methods: - user: h2 - group: h2 - track: h2 - uuid: h2 - log: h2 - -data: - # Uses standard DB engine port by default - # MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017 - # Specify as "host:port" if differs - address: localhost - - database: minecraft - 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 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. - properties: - useUnicode: true - characterEncoding: utf8 - - # The prefix for all LuckPerms tables. Change this is you want to use different tables for - # different servers. - # - # This should *not* be set to "lp_" if you have previously ran LuckPerms v2.16.81 or earlier with - # this database. - table_prefix: 'luckperms_' - - # The prefix to use for all LuckPerms collections. Change this if you want to use different - # collections for different servers. The default is no prefix. - mongodb_collection_prefix: '' - - # MongoDB ClientConnectionURI for use with replicasets and custom connection options - # See https://docs.mongodb.com/manual/reference/connection-string/ - mongodb_connection_URI: '' - - # 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 value to something like - # 3. - # - # Set to -1 to disable the task completely. - sync-minutes: -1 - -# Settings for the messaging service -# -# If enabled and configured, LuckPerms will use the messaging system to inform other -# connected servers of changes. Use the command "/luckperms networksync" to 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. -# -# Available options: -# -> bungee uses the plugin messaging channels. Must be enabled on all connected servers to work. -# -> 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 redis server must be configured below. -# -> none nothing -messaging-service: none - -# 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 - password: '' - - - - -# +----------------------------------------------------------------------------------------------+ # -# | Default Assignments | # +# | | # +# | DEFAULT ASSIGNMENTS | # +# | | # # +----------------------------------------------------------------------------------------------+ # # This section allows you to define defaults to give users whenever they connect to the server. diff --git a/sponge/src/main/resources/luckperms.conf b/sponge/src/main/resources/luckperms.conf index d4135c4e..6192d73e 100644 --- a/sponge/src/main/resources/luckperms.conf +++ b/sponge/src/main/resources/luckperms.conf @@ -18,323 +18,464 @@ #################################################################################################### # +----------------------------------------------------------------------------------------------+ # -# | General | # +# | | # +# | ESSENTIAL SETTINGS | # +# | | # +# | Important settings that control how LuckPerms functions. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# The name of the server, used for server specific permissions. Set to 'global' to disable. -server="global" - -# If users on this server should have their global permissions applied. -# If 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. -# If 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 +# 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://github.com/lucko/LuckPerms/wiki/Context +server = "global" # If the servers own UUID cache/lookup facility should be used when there is no record for a player -# in the LuckPerms cache. -use-server-uuid-cache=false - -# If set to true, LuckPerms will allow usernames with non alphanumeric characters. +# already in LuckPerms. # -# Note that due to the design of the storage implementation, usernames must still be -# 16 characters or less. -allow-invalid-usernames=false +# - 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 -# 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 the plugin should send log notifications to users whenever permissions are modified. -log-notify=true -# Mirrors world names. Whenever LuckPerms checks what world a user is in, if the world name is in -# this list, the value assigned will be sent forward for permission calculation instead. -world-rewrite { -# world_nether="world" -# world_the_end="world" + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type +# +# - 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) +# |=> HSON (.conf files) +# +# - 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 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. + properties { + useUnicode = true + characterEncoding = "utf8" + } + } + + # The prefix for all LuckPerms SQL tables. + # - Change this is you want to use different tables for different servers. + table_prefix = "luckperms_" + + # The prefix to use for all LuckPerms collections. Change this if you want to use different + # collections for different servers. The default is no prefix. + mongodb_collection_prefix = "" + + # MongoDB ClientConnectionURI for use with replica sets and custom connection options + # - 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" + } + } } -# Controls how temporary permissions/parents/meta should be accumulated -# -# The default behaviour is "deny" -# If "accumulate": durations will be added to the existing expiry time -# If "replace": durations will be replaced if the new duration is later than the current expiration -# If "deny": the command will just fail if you try to add another node with the same expiry -temporary-add-behaviour="deny" -# How should LuckPerms determine a users "primary" group. -# -# Available 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 set to false, the plugin will allow a Users primary group to be removed with the -# 'parent remove' command, and will set their primary group back to default. -prevent-primary-group-removal=false +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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: +# => bungee 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 BungeeCord proxy. +# => redis Uses Redis pub-sub to push changes. Your server connection info must be configured +# below. +# => none Disables the service. +messaging-service = "none" + +# 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" + password = "" +} + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | 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. +# - 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 send log notifications to users whenever permissions are modified. # -# The permissions are *not* static, unlike the 'base' permisssions, and will depend upon the -# arguments given within the command. -argument-based-command-permissions=false +# - 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 - - - -# +----------------------------------------------------------------------------------------------+ # -# | Permission Calculation | # -# +----------------------------------------------------------------------------------------------+ # - -# 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 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 LuckPerms should resolve and apply permissions according to Sponge's implicit wildcard -# inheritance system. +# Defines the options for prefix and suffix stacking. # -# 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. +# - 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". # -# If this option is set to false, this system will not be applied. -apply-sponge-implicit-wildcards=true - -# If the plugin should apply Sponge default subject permissions. -# Plugins can manipulate a set of default permissions granted to all users. If this option is set to -# false, LuckPerms will ignore this data when considering if a player has a permission. -apply-sponge-default-subjects=true - -# The algorithm LuckPerms should use when traversing the "inheritance tree". +# - The options are divided into separate sections for prefixes and suffixes. +# - 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. # -# The valid options are: -# - breadth-first -# - depth-first-pre-order -# - depth-first-post-order +# - Possible format options: +# => highest Selects the value with the highest weight, from all values +# held by or inherited by the player. # -# See here for information about the differences between each algorithm. -# - https://en.wikipedia.org/wiki/Breadth-first_search -# - https://en.wikipedia.org/wiki/Depth-first_search -inheritance-traversal-algorithm="depth-first-pre-order" - -# Define special group weights for this server. -# Default is just 0. -group-weight { -# admin=10 -} - - - - -# +----------------------------------------------------------------------------------------------+ # -# | Meta Formatting & Stacking | # -# +----------------------------------------------------------------------------------------------+ # - -# Allows you to setup prefix/suffix stacking options. +# => lowest Same as above, except takes the one with the lowest weight. # -# Available formats: -# - highest -# - lowest -# - highest_own -# - lowest_own -# - highest_inherited -# - lowest_inherited -# - highest_on_track_ -# - lowest_on_track_ -# - highest_not_on_track_ -# - lowest_not_on_track_ +# => highest_own Selects the value with the highest weight, but will not +# accept any inherited values. # -# Each element is added in the order listed. +# => 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. meta-formatting { prefix { format = [ "highest" ] - start-spacer="" - middle-spacer=" " - end-spacer="" + start-spacer = "" + middle-spacer = " " + end-spacer = "" } suffix { format = [ "highest" ] - start-spacer="" - middle-spacer=" " - end-spacer="" + 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" + +# +----------------------------------------------------------------------------------------------+ # +# | 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 + +# +----------------------------------------------------------------------------------------------+ # +# | 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 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 | # +# +----------------------------------------------------------------------------------------------+ # + +# 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 +} + + + # +----------------------------------------------------------------------------------------------+ # -# | Storage | # +# | | # +# | 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. | # +# | | # # +----------------------------------------------------------------------------------------------+ # -# Which storage method the plugin should use. +# +----------------------------------------------------------------------------------------------+ # +# | Miscellaneous (and rarely used) settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If LuckPerms should produce extra logging output when it handles logins. # -# See: https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type -# Currently supported: mysql, mariadb, postgresql, sqlite, h2, json, yaml, hocon, mongodb +# - 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. # -# Fill out connection info below if you're using MySQL, MariaDB, PostgreSQL or MongoDB -# If your MySQL server supports it, the "mariadb" option is preferred over "mysql". -storage-method="h2" +# - Note that due to the design of the storage implementation, usernames must still be 16 characters +# or less. +allow-invalid-usernames = false -# When using a file-based storage type, LuckPerms can monitor the data files for changes, and then -# schedule automatic updates when changes are detected. +# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command. # -# If you don't want this to happen, set this option to false. -watch-files=true - -# This block enables support for split datastores. -split-storage { - enabled=false - methods { - user="h2" - group="h2" - track="h2" - uuid="h2" - log="h2" - } -} - -data { - # Uses standard DB engine port by default - # MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017 - # Specify as "host:port" if differs - address="localhost" - - database="minecraft" - 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 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. - properties { - useUnicode=true - characterEncoding="utf8" - } - } - - # The prefix for all LuckPerms tables. Change this is you want to use different tables for - # different servers. - # - # This should *not* be set to "lp_" if you have previously ran LuckPerms v2.16.81 or earlier with - # this database. - table_prefix="luckperms_" - - # The prefix to use for all LuckPerms collections. Change this if you want to use different - # collections for different servers. The default is no prefix. - mongodb_collection_prefix="" - - # MongoDB ClientConnectionURI for use with replicasets and custom connection options - # See https://docs.mongodb.com/manual/reference/connection-string/ - mongodb_connection_URI="" - - # 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 value to something like - # 3. - # - # Set to -1 to disable the task completely. - sync-minutes=-1 -} - -# Settings for the messaging service -# -# If enabled and configured, LuckPerms will use the messaging system to inform other -# connected servers of changes. Use the command "/luckperms networksync" to 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. -# -# Available options: -# -> bungee uses the plugin messaging channels. Must be enabled on all connected servers to work. -# -> redis uses redis pub sub to push changes. Your redis server must be configured below. -# -> none nothing -messaging-service="none" - -# 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" - password="" -} +# - When this happens, the plugin will set their primary group back to default. +prevent-primary-group-removal = false # +----------------------------------------------------------------------------------------------+ # -# | Default Assignments | # +# | | # +# | DEFAULT ASSIGNMENTS | # +# | | # # +----------------------------------------------------------------------------------------------+ # # This section allows you to define defaults to give users whenever they connect to the server.