Make some ingame messages more consistent with the LP theme, general cleanup

This commit is contained in:
Luck 2017-09-11 22:21:57 +01:00
parent f3251e9407
commit a14a416193
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B
50 changed files with 570 additions and 556 deletions

View File

@ -3,50 +3,46 @@
# Author: Luck
prefix: "&7&l[&b&lL&3&lP&7&l] &c"
log-info: "&7&l[&bL&3P&7&l] &3{0}"
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[WARN] {0}"
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ERROR] {0}"
empty: "{0}"
player-online: "&aOnline"
player-offline: "&cOffline"
loading-error: "Permissions data could not be loaded. Please try again later."
loading-error: "&cPermissions data could not be loaded. Please try again later."
op-disabled: "&bThe vanilla OP system is disabled on this server."
op-disabled-sponge: "&2Server Operator status has no effect when a permission plugin is installed. Please edit user data directly."
op-disabled-sponge: "&2Please note that Server Operator status has no effect on Sponge permission checks when a permission plugin is installed. Please edit user data directly."
log-info: "&7&l[&bL&3P&7&l] &3{0}"
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[WARN] {0}"
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ERROR] {0}"
log: "&3LOG &3&l> {0}"
verbose-log: "&3VERBOSE &3&l> {0}"
verbose-log: "&3VB &3&l> {0}"
export-log: "&3EXPORT &3&l> &f{0}"
export-log-progress: "&3EXPORT &3&l> &7{0}"
migration-log: "&3MIGRATION &7[&3{0}&7] &3&l> &f{1}"
migration-log-progress: "&3MIGRATION &7[&3{0}&7] &3&l> &7{1}"
command-not-recognised: "Command not recognised."
command-no-permission: "You do not have permission to use this command!"
already-haspermission: "{0} already has this permission!"
does-not-havepermission: "{0} does not have this permission set."
already-has-temp-permission: "{0} already has this permission set temporarily!"
does-not-have-temp-permission: "{0} does not have this permission set temporarily."
user-not-found: "&bUser could not be found."
user-not-online: "&bUser &a{0}&b is not online."
user-save-error: "There was an error whilst saving the user."
group-not-found: "&bGroup could not be found."
group-save-error: "There was an error whilst saving the group."
track-not-found: "&bTrack could not be found."
track-save-error: "There was an error whilst saving the track."
user-invalid-entry: "&d{0}&c is not a valid username/uuid."
group-invalid-entry: "Group names can only contain alphanumeric characters."
track-invalid-entry: "Track names can only contain alphanumeric characters."
server-world-invalid-entry: "Server/world names can only contain alphanumeric characters and cannot exceed 36 characters in length."
use-inherit-command: "Use the 'parent add' and 'parent remove' commands instead of specifying the node."
verbose-invalid-filter: "&cInvalid verbose filter: &f{0}"
verbose-on: "&bVerbose checking output set to &aTRUE &bfor all permissions."
verbose-on-query: "&bVerbose checking output set to &aTRUE &bfor permissions matching filter: &f{0}"
verbose-off: "&bVerbose checking output set to &cFALSE&b."
verbose-recording-on: "&bVerbose recording set to &aTRUE &bfor all permissions."
verbose-recording-on-query: "&bVerbose recording set to &aTRUE &bfor permissions matching filter: &f{0}"
verbose-recording-upload-start: "&bVerbose recording was disabled. Uploading results..."
verbose-recording-url: "&aVerbose results URL:"
command-not-recognised: "&cCommand not recognised."
command-no-permission: "&cYou do not have permission to use this command!"
user-not-found: "&cA user for &4{0}&c could not be found."
user-not-online: "&aUser &b{0}&a is not online."
user-save-error: "&cThere was an error whilst saving user data for &4{0}&c."
group-not-found: "&cA group named &4{0}&c could not be found."
group-save-error: "&cThere was an error whilst saving group data for &4{0}&c."
track-not-found: "&cA track named &4{0}&c could not be found."
track-save-error: "&cThere was an error whilst saving track data for &4{0}&c."
user-invalid-entry: "&4{0}&c is not a valid username/uuid."
group-invalid-entry: "&4{0}&c is not a valid group name."
track-invalid-entry: "&4{0}&c is not a valid track name."
server-world-invalid-entry: "&cServer/world names can only contain alphanumeric characters and cannot exceed 36 characters in length."
use-inherit-command: "&cUse the 'parent add' and 'parent remove' commands instead of specifying the node."
verbose-invalid-filter: "&4{0}&c is not a valid verbose filter."
verbose-on: "&bVerbose logging &aenabled &bfor checks matching &aANY&b."
verbose-on-query: "&bVerbose logging &aenabled &bfor checks matching &a{0}&b."
verbose-off: "&bVerbose logging &cdisabled&b."
verbose-recording-on: "&bVerbose recording &aenabled &bfor checks matching &aANY&b."
verbose-recording-on-query: "&bVerbose recording &aenabled &bfor checks matching &a{0}&b."
verbose-upload-start: "&bVerbose logging &cdisabled&b. Uploading results..."
verbose-results-url: "&aVerbose results URL:"
tree-upload-start: "&bGenerating permission tree..."
tree-empty: "&aUnable to generate tree. No results were found."
tree-url: "&aPermission Tree URL:"
tree-empty: "&cUnable to generate tree. No results were found."
tree-url: "&aPermission tree URL:"
search-searching: "&aSearching for users and groups with &b{0}&a..."
search-searching-members: "&aSearching for users and groups who inherit from &b{0}&a..."
search-result: "&aFound &b{0}&a entries from &b{1}&a users and &b{2}&a groups."
@ -54,13 +50,13 @@ search-showing-users: "&bShowing user entries:"
search-showing-groups: "&bShowing group entries:"
search-showing-users-with-page: "&bShowing user entries: {0}"
search-showing-groups-with-page: "&bShowing group entries: {0}"
apply-edits-invalid-code: "&aInvalid code. &7({0})"
apply-edits-unable-to-read: "&aUnable to read data using the given code. &7({0})"
apply-edits-no-target: "&aUnable to parse the target of the edit. Please supply it as an extra argument."
apply-edits-target-group-not-exists: "&aTarget group &b{0}&a does not exist."
apply-edits-target-user-not-uuid: "&aTarget user &b{0}&a is not a valid uuid."
apply-edits-target-user-unable-to-load: "&aUnable to load target user &b{0}&a."
apply-edits-target-unknown: "&aInvalid target. &7({0})"
apply-edits-invalid-code: "&cInvalid code. &7({0})"
apply-edits-unable-to-read: "&cUnable to read data using the given code. &7({0})"
apply-edits-no-target: "&cUnable to parse the target of the edit. Please supply it as an extra argument."
apply-edits-target-group-not-exists: "&cTarget group &4{0}&c does not exist."
apply-edits-target-user-not-uuid: "&cTarget user &4{0}&c is not a valid uuid."
apply-edits-target-user-unable-to-load: "&cUnable to load target user &4{0}&c."
apply-edits-target-unknown: "&cInvalid target. &7({0})"
apply-edits-success: "&aSuccessfully applied &b{0}&a nodes to &b{1}&a."
editor-upload-failure: "&cUnable to upload permission data to the editor."
editor-url: "&aEditor URL:"
@ -69,29 +65,27 @@ create-success: "&b{0}&a was successfully created."
delete-success: "&b{0}&a was successfully deleted."
rename-success: "&b{0}&a was successfully renamed to &b{1}&a."
clone-success: "&b{0}&a was successfully cloned onto &b{1}&a."
already-inherits: "{0} already inherits '{1}'."
does-not-inherit: "{0} does not inherit '{1}'."
already-temp-inherits: "{0} already temporarily inherits '{1}'."
does-not-temp-inherit: "{0} does not temporarily inherit '{1}'."
track-already-contains: "Track {0} already contains the group '{1}'."
track-does-not-contain: "Track {0} does not contain the group '{1}'."
track-ambiguous-call: "The user specified is a member of multiple groups on this track. Unable to determine their location."
group-already-exists: "That group already exists!"
group-does-not-exist: "That group does not exist!"
group-load-error: "An unexpected error occurred. Group not loaded."
groups-load-error: "An unexpected error occurred. Unable to load all groups."
track-already-exists: "That track already exists!"
track-does-not-exist: "That track does not exist!"
track-load-error: "An unexpected error occurred. Track not loaded."
tracks-load-error: "An unexpected error occurred. Unable to load all tracks."
track-empty: "The track cannot be used as it is empty or contains only one group."
update-task-request: "&bUpdate task scheduled."
update-task-complete: "&aUpdate task finished."
update-task-complete-network: "&aUpdate task finished. Now attempting to push to other servers."
already-inherits: "&b{0}&a already inherits from &b{1}&a in context {2}&a."
does-not-inherit: "&b{0}&a does not inherit from &b{1}&a in context {2}&a."
already-temp-inherits: "&b{0}&a already temporarily inherits from &b{1}&a in context {2}&a."
does-not-temp-inherit: "&b{0}&a does not temporarily inherit from &b{1}&a in context {2}&a."
track-already-contains: "&b{0}&a already contains &b{1}&a."
track-does-not-contain: "&b{0}&a doesn't contain &b{1}&a."
track-ambiguous-call: "&4{0}&c is a member of multiple groups on this track. Unable to determine their location."
already-exists: "&4{0}&c already exists!"
does-not-exist: "&4{0}&c does not exist!"
group-load-error: "&cAn unexpected error occurred. Group not loaded."
groups-load-error: "&cAn unexpected error occurred. Unable to load all groups."
track-load-error: "&cAn unexpected error occurred. Track not loaded."
tracks-load-error: "&cAn unexpected error occurred. Unable to load all tracks."
track-empty: "&4{0}&c cannot be used as it is empty or contains only one group."
update-task-request: "&bAn update task has been requested. Please wait..."
update-task-complete: "&aUpdate task complete."
update-task-complete-network: "&aUpdate task complete. Now attempting to push to other servers."
update-task-push-success: "&aOther servers were notified via &b{0} Messaging &asuccessfully."
update-task-push-failure: "&cError whilst pushing changes to other servers."
update-task-push-failure-not-setup: "&cError whilst pushing changes to other servers. A messaging service has not been configured."
reload-config-success: "&aThe configuration file was reloaded. &7(some options will only apply after the server has restarted.)"
update-task-push-failure-not-setup: "&cError whilst pushing changes to other servers. &7(a messaging service has not been configured)"
reload-config-success: "&aThe configuration file was reloaded. &7(some options will only apply after the server has restarted)"
info-top: >
{PREFIX}&2Running &bLuckPerms v{0}&2 by &bLuck&2.\n
{PREFIX}&f- &3Platform: &f{1}\n
@ -108,25 +102,23 @@ info-middle: >
{PREFIX}&f- &3Context Calculators: &a{8}\n
{PREFIX}&f- &3Known permissions: &a{9}\n
{PREFIX}&f- &3Active processors: &7{10}
create-group-error: "There was an error whilst creating the group."
delete-group-error: "There was an error whilst deleting the group."
delete-group-error-default: "You cannot delete the default group."
create-error: "&cThere was an error whilst creating &4{0}&c."
delete-error: "&cThere was an error whilst deleting &4{0}&c."
delete-group-error-default: "&cYou cannot delete the default group."
groups-list: "&aGroups: &7(name, weight, tracks)"
groups-list-entry: "&f- &3{0} &7- &b{1}"
groups-list-entry-with-tracks: "&f- &3{0} &7- &b{1} &7- [&3{2}&7]"
create-track-error: "There was an error whilst creating the track."
delete-track-error: "There was an error whilst deleting the track."
tracks-list: "&aTracks: {0}"
listnodes: "&b{0}'s Nodes:"
listnodes-with-page: "&b{0}'s Nodes: {1}"
listnodes-temp: "&b{0}'s Temporary Nodes:"
listnodes-temp-with-page: "&b{0}'s Temporary Nodes: {1}"
listnodes: "&b{0}'s Permissions:"
listnodes-with-page: "&b{0}'s Permissions: {1}"
listnodes-temp: "&b{0}'s Temporary Permissions:"
listnodes-temp-with-page: "&b{0}'s Temporary Permissions: {1}"
listparents: "&b{0}'s Parent Groups:"
listparents-temp: "&b{0}'s Temporary Parent Groups:"
list-tracks: >
&b{0}'s Tracks:\n
{1}
list-tracks-empty: "{0} is not on any tracks."
list-tracks-empty: "&b{0}&a is not on any tracks."
context-pair-inline: "&3{0}=&b{1}"
context-pair--global-inline: "&eglobal"
context-pair-sep: "&a, "
@ -134,9 +126,13 @@ context-pair: "&8(&7{0}=&f{1}&8)"
check-permission: "&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a."
check-inherits-permission: "&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a. &7(inherited from &a{4}&7)"
setpermission-success: "&aSet &b{0}&a to &b{1}&a for &b{2}&a in context {3}&a."
already-haspermission: "&b{0}&a already has &b{1}&a set in context {2}&a."
setpermission-temp-success: "&aSet &b{0}&a to &b{1}&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
already-has-temp-permission: "&b{0}&a already has &b{1}&a set temporarily in context {2}&a."
unsetpermission-success: "&aUnset &b{0}&a for &b{1}&a in context {2}&a."
does-not-have-permission: "&b{0}&a does not have &b{1}&a set in context {2}&a."
unset-temp-permission-success: "&aUnset temporary permission &b{0}&a for &b{1}&a in context {2}&a."
does-not-have-temp-permission: "&b{0}&a does not have &b{1}&a set temporarily in context {2}&a."
set-inherit-success: "&b{0}&a now inherits permissions from &b{1}&a in context {2}&a."
set-temp-inherit-success: "&b{0}&a now inherits permissions from &b{1}&a for a duration of &b{2}&a in context {3}&a."
set-parent-success: "&b{0}&a had their existing parent groups cleared, and now only inherits &b{1}&a in context {2}&a."
@ -151,35 +147,40 @@ parent-clear-track-success: "&b{0}&a's parents on track &b{1}&a were cleared in
parent-clear-track-success-singular: "&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. (&b{3}&a node was removed.)"
meta-clear-success: "&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a nodes were removed.)"
meta-clear-success-singular: "&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a node was removed.)"
illegal-date-error: "Could not parse date '{0}'."
past-date-error: "You cannot set a date in the past!"
illegal-date-error: "&cCould not parse date &4{0}&c."
past-date-error: "&cYou cannot set a date in the past!"
chat-meta-prefix-header: "&b{0}'s Prefixes"
chat-meta-suffix-header: "&b{0}'s Suffixes"
meta-header: "&b{0}'s Meta"
chat-meta-entry: "&b-> {0} &f- &f\"{1}&f\" &8(&7inherited from &a{2}&8)"
chat-meta-entry-with-context: "&b-> {0} &f- &f\"{1}&f\" &8(&7inherited from &a{2}&8){3}"
meta-entry: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7inherited from &a{2}&8)"
meta-entry-with-context: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7inherited from &a{2}&8){3}"
chat-meta-entry: "&b-> {0} &f- &f'{1}&f' &8(&7inherited from &a{2}&8)"
chat-meta-entry-with-context: "&b-> {0} &f- &f'{1}&f' &8(&7inherited from &a{2}&8){3}"
meta-entry: "&b-> &a{0} &f= &f'{1}&f' &8(&7inherited from &a{2}&8)"
meta-entry-with-context: "&b-> &a{0} &f= &f'{1}&f' &8(&7inherited from &a{2}&8){3}"
chat-meta-prefix-none: "&b{0} has no prefixes."
chat-meta-suffix-none: "&b{0} has no suffixes."
meta-none: "&b{0} has no meta."
meta-invalid-priority: "Invalid priority '{0}'. Expected a number."
already-has-chat-meta: "{0} already has that {1} set."
does-not-have-chat-meta: "{0} doesn't have that {1} set."
add-chatmeta-success: "&b{0}&a had {1} &f\"{2}&f\"&a set at a priority of &b{3}&a in context {4}&a."
add-temp-chatmeta-success: "&b{0}&a had {1} &f\"{2}&f\"&a set at a priority of &b{3}&a for a duration of &b{4}&a in context {5}&a."
remove-chatmeta-success: "&b{0}&a had {1} &f\"{2}&f\"&a at priority &b{3}&a removed in context {4}&a."
meta-invalid-priority: "&cInvalid priority &4{0}&c. Expected a number."
already-has-chat-meta: "&b{0}&a already has {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
already-has-temp-chat-meta: "&b{0}&a already has {1} &f'{2}&f'&a set temporarily at a priority of &b{3}&a in context {4}&a."
does-not-have-chat-meta: "&b{0}&a doesn't have {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
does-not-have-temp-chat-meta: "&b{0}&a doesn't have {1} &f'{2}&f'&a set temporarily at a priority of &b{3}&a in context {4}&a."
add-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
add-temp-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a set at a priority of &b{3}&a for a duration of &b{4}&a in context {5}&a."
remove-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a at priority &b{3}&a removed in context {4}&a."
bulk-remove-chatmeta-success: "&b{0}&a had all {1}es at priority &b{2}&a removed in context {3}&a."
remove-temp-chatmeta-success: "&b{0}&a had temporary {1} &f\"{2}&f\"&a at priority &b{3}&a removed in context {4}&a."
remove-temp-chatmeta-success: "&b{0}&a had temporary {1} &f'{2}&f'&a at priority &b{3}&a removed in context {4}&a."
bulk-remove-temp-chatmeta-success: "&b{0}&a had all temporary {1}es at priority &b{2}&a removed in context {3}&a."
already-has-meta: "{0} already has that meta key value pair set."
set-meta-success: "&aSet meta value for key &f\"{0}&f\"&a to &f\"{1}&f\"&a for &b{2}&a in context {3}&a."
set-meta-temp-success: "&aSet meta value for key &f\"{0}&f\"&a to &f\"{1}&f\"&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
unset-meta-success: "&aUnset meta value with key &f\"{0}&f\"&a for &b{1}&a in context {2}&a."
unset-meta-temp-success: "&aUnset temporary meta value with key &f\"{0}&f\"&a for &b{1}&a in context {2}&a."
bulk-update-invalid-data-type: "Invalid type. Was expecting 'all', 'users' or 'groups'."
bulk-update-invalid-constraint: "Invalid constraint &4{0}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'."
bulk-update-invalid-comparison: "Invalid comparison operator '&4{0}&c'. Expected one of the following: &f== != ~~ ~!"
already-has-meta: "&b{0}&a already has meta key &f'{1}&f'&a set to &f'{2}&f'&a in context {3}&a."
already-has-temp-meta: "&b{0}&a already has meta key &f'{1}&f'&a temporarily set to &f'{2}&f'&a in context {3}&a."
doesnt-have-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set in context {2}&a."
doesnt-have-temp-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set temporarily in context {2}&a."
set-meta-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a in context {3}&a."
set-meta-temp-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
unset-meta-success: "&aUnset meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
unset-meta-temp-success: "&aUnset temporary meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
bulk-update-invalid-data-type: "&cInvalid type. Was expecting 'all', 'users' or 'groups'."
bulk-update-invalid-constraint: "&cInvalid constraint &4{0}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'."
bulk-update-invalid-comparison: "&cInvalid comparison operator '&4{0}&c'. Expected one of the following: &f== != ~~ ~!"
bulk-update-queued: "&aBulk update operation was queued. &7(&f{0}&7)"
bulk-update-confirm: "&aRun &b/{0} bulkupdate confirm {1} &ato execute the update."
bulk-update-unknown-id: "&aOperation with id &b{0}&a does not exist or has expired."
@ -192,8 +193,8 @@ user-info-general: >
{PREFIX}&f- &3Status: {2}\n
{PREFIX}&f- &3Primary Group: &f{3}\n
{PREFIX}&f- &aCounts:\n
{PREFIX}&f- &3Permissions: &a{4}\n
{PREFIX}&f- &3Temporary Permissions: &a{5}\n
{PREFIX}&f- &3Nodes: &a{4}\n
{PREFIX}&f- &3Permissions: &a{5}\n
{PREFIX}&f- &3Prefixes: &a{6}\n
{PREFIX}&f- &3Suffixes: &a{7}\n
{PREFIX}&f- &3Meta: &a{8}
@ -205,30 +206,30 @@ user-info-data: >
{PREFIX}&f- &3Current Suffix: {3}
info-parent-header: "&f- &aParent Groups:"
info-temp-parent-header: "&f- &aTemporary Parent Groups:"
user-removegroup-error-primary: "You cannot remove a user from their primary group."
user-removegroup-error-primary: "&aYou cannot remove a user from their primary group."
user-primarygroup-success: "&b{0}&a's primary group was set to &b{1}&a."
user-primarygroup-warn-option: "&cWarning: The primary group calculation method being used by this server &7({0}) &cmay not reflect this change."
user-primarygroup-error-alreadyhas: "The user already has this group set as their primary group."
user-primarygroup-warn-option: "&aWarning: The primary group calculation method being used by this server &7({0}) &amay not reflect this change."
user-primarygroup-error-alreadyhas: "&b{0}&a already has &b{1}&a set as their primary group."
user-primarygroup-error-notmember: "&b{0}&a was not already a member of &b{1}&a, adding them now."
user-track-error-not-contain-group: "The user specified isn't already in any groups on this track."
user-track-error-not-contain-group: "&b{0}&a isn't already in any groups on &b{1}&a."
user-track-added-to-first: "&b{0}&a isn't in any groups on this track, so they were added to the first group, &b{1}&a in context {2}&a."
user-promote-success: "&aPromoting user along track &b{0}&a from &b{1}&a to &b{2}&a in context {3}&a."
user-promote-error-endoftrack: "The end of track &4{0}&c was reached. Unable to promote user."
user-promote-success: "&aPromoting &b{0}&a along track &b{1}&a from &b{2}&a to &b{3}&a in context {4}&a."
user-promote-error-endoftrack: "&aThe end of track &b{0}&a was reached. Unable to promote &b{1}&a."
user-promote-error-malformed: >
{PREFIX}The next group on the track, {0}, no longer exists. Unable to promote user.\n
{PREFIX}Either create the group, or remove it from the track and try again.
user-demote-success: "&aDemoting user along track &b{0}&a from &b{1}&a to &b{2}&a in context {3}&a."
user-demote-endoftrack: "The end of track &4{0}&c was reached, so &4{1}&c was removed from &4{2}&c."
{PREFIX}&aThe next group on the track, &b{0}&a, no longer exists. Unable to promote user.\n
{PREFIX}&aEither create the group, or remove it from the track and try again.
user-demote-success: "&aDemoting &b{0}&a along track &b{1}&a from &b{2}&a to &b{3}&a in context {4}&a."
user-demote-endoftrack: "&aThe end of track &b{0}&a was reached, so &b{1}&a was removed from &b{2}&a."
user-demote-error-malformed: >
{PREFIX}The previous group on the track, {0}, no longer exists. Unable to demote user.\n
{PREFIX}Either create the group, or remove it from the track and try again.
{PREFIX}&aThe previous group on the track, &b{0}&a, no longer exists. Unable to demote user.\n
{PREFIX}&aEither create the group, or remove it from the track and try again.
group-info-general: >
{PREFIX}&b&l> &bGroup Info: &f{0}\n
{PREFIX}&f- &3Display Name: &f{1}\n
{PREFIX}&f- &3Weight: &f{2}\n
{PREFIX}&f- &aCounts:\n
{PREFIX}&f- &3Permissions: &a{3}\n
{PREFIX}&f- &3Temporary Permissions: &a{4}\n
{PREFIX}&f- &3Nodes: &a{3}\n
{PREFIX}&f- &3Permissions: &a{4}\n
{PREFIX}&f- &3Prefixes: &a{5}\n
{PREFIX}&f- &3Suffixes: &a{6}\n
{PREFIX}&f- &3Meta: &a{7}
@ -237,40 +238,40 @@ track-info: >
{PREFIX}&b&l> &bShowing Track: &f{0}\n
{PREFIX}&f- &7Path: &f{1}
track-clear: "&b{0}&a's groups track was cleared."
track-append-success: "&aGroup &b{0}&a was successfully appended to track &b{1}&a."
track-insert-success: "&aGroup &b{0}&a was successfully inserted into track &b{1}&a at position &b{2}&a."
track-insert-error-number: "Expected number but instead received: {0}"
track-insert-error-invalid-pos: "Unable to insert at position {0}. Index out of bounds."
track-remove-success: "&aGroup &b{0}&a was successfully removed from track &b{1}&a."
log-load-error: "The log could not be loaded."
log-invalid-page: "Invalid page number."
log-invalid-page-range: "Invalid page number. Please enter a value between 1 and {0}."
track-append-success: "&aGroup &b{0}&a was appended to track &b{1}&a."
track-insert-success: "&aGroup &b{0}&a was inserted into track &b{1}&a at position &b{2}&a."
track-insert-error-number: "&cExpected number but instead received: {0}"
track-insert-error-invalid-pos: "&cUnable to insert at position &4{0}&c. &7(invalid position)"
track-remove-success: "&aGroup &b{0}&a was removed from track &b{1}&a."
log-load-error: "&cThe log could not be loaded."
log-invalid-page: "&cInvalid page number."
log-invalid-page-range: "&cInvalid page number. Please enter a value between &41&c and &4{0}&c."
log-no-entries: "&bNo log entries to show."
log-entry: "&b#{0} -> &8(&7{1} ago&8) {2}"
log-notify-console: "&cCannot toggle notifications for console."
log-notify-toggle-on: "&aEnabled&b logging output."
log-notify-toggle-off: "&cDisabled&b logging output."
log-notify-already-on: "You are already receiving notifications."
log-notify-already-off: "You aren't currently receiving notifications."
log-notify-unknown: "State unknown. Expecting \"on\" or \"off\"."
log-notify-already-on: "&cYou are already receiving notifications."
log-notify-already-off: "&cYou aren't currently receiving notifications."
log-notify-unknown: "&cState unknown. Expecting \"on\" or \"off\"."
log-search-header: "&aShowing recent actions for query &b{0} &a(page &f{1}&a of &f{2}&a)"
log-recent-header: "&aShowing recent actions (page &f{0}&a of &f{1}&a)"
log-recent-by-header: "&aShowing recent actions by &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-user-header: "&aShowing history for user &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-group-header: "&aShowing history for group &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-track-header: "&aShowing history for track &b{0} &a(page &f{1}&a of &f{2}&a)"
log-export-already-exists: "Error: File {0} already exists."
log-export-not-writable: "Error: File {0} is not writable."
log-export-empty: "The log is empty and therefore cannot be exported."
log-export-failure: "An unexpected error occured whilst writing to the file."
log-export-already-exists: "&cError: File &4{0}&c already exists."
log-export-not-writable: "&cError: File &4{0}&c is not writable."
log-export-empty: "&cThe log is empty and therefore cannot be exported."
log-export-failure: "&cAn unexpected error occured whilst writing to the file."
log-export-success: "&aSuccessfully exported the log to &b{0}&a."
import-already-running: "Another import process is already running. Please wait for it to finish and try again."
export-already-running: "Another export process is already running. Please wait for it to finish and try again."
import-log-doesnt-exist: "Error: File {0} does not exist."
import-log-not-readable: "Error: File {0} is not readable."
import-log-failure: "An unexpected error occured whilst reading from the log file."
import-progress: "&b(Import) &b-> &f{0} &fpercent complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferrors."
import-progress-sin: "&b(Import) &b-> &f{0} &fpercent complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferror."
import-already-running: "&cAnother import process is already running. Please wait for it to finish and try again."
export-already-running: "&cAnother export process is already running. Please wait for it to finish and try again."
import-log-doesnt-exist: "&cError: File &4{0}&c does not exist."
import-log-not-readable: "&cError: File &4{0}&c is not readable."
import-log-failure: "&cAn unexpected error occured whilst reading from the log file."
import-progress: "&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferrors."
import-progress-sin: "&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferror."
import-start: "&b(Import) &b-> &fStarting import process."
import-end-complete: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &7No errors."
import-end-complete-err: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} errors."
@ -309,6 +310,7 @@ command-specs:
args:
"on|record|off|paste": "whether to enable/disable logging, or to paste the logged output"
"filter": "the filter to match entries against"
"--slim": "add \"--slim\" to exclude trace data from the pasted output"
tree:
description: "Generate a tree view of permissions"
usage: "/%s tree [selection] [max level] [player]"

View File

@ -189,7 +189,7 @@ public abstract class SubCommand<T> extends Command<T, Void> {
}
if (!success) {
Message.USER_SAVE_ERROR.send(sender);
Message.USER_SAVE_ERROR.send(sender, user.getFriendlyName());
}
}
@ -210,7 +210,7 @@ public abstract class SubCommand<T> extends Command<T, Void> {
}
if (!success) {
Message.GROUP_SAVE_ERROR.send(sender);
Message.GROUP_SAVE_ERROR.send(sender, group.getFriendlyName());
}
}
@ -231,7 +231,7 @@ public abstract class SubCommand<T> extends Command<T, Void> {
}
if (!success) {
Message.TRACK_SAVE_ERROR.send(sender);
Message.TRACK_SAVE_ERROR.send(sender, track.getName());
}
}
}

View File

@ -100,7 +100,7 @@ public class MetaAddChatMeta extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_HAS_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase());
Message.ALREADY_HAS_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase(), meta, priority, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -110,7 +110,7 @@ public class MetaAddTempChatMeta extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_HAS_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase());
Message.ALREADY_HAS_TEMP_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase(), meta, priority, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -114,7 +114,7 @@ public class MetaRemoveChatMeta extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_HAVE_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase());
Message.DOES_NOT_HAVE_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase(), meta, priority, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -114,7 +114,7 @@ public class MetaRemoveTempChatMeta extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_HAVE_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase());
Message.DOES_NOT_HAVE_TEMP_CHAT_META.send(sender, holder.getFriendlyName(), type.name().toLowerCase(), meta, priority, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -80,7 +80,7 @@ public class MetaSet extends SharedSubCommand {
Node n = NodeFactory.makeMetaNode(key, value).withExtraContext(context).build();
if (holder.hasPermission(n).asBoolean()) {
Message.ALREADY_HAS_META.send(sender, holder.getFriendlyName());
Message.ALREADY_HAS_META.send(sender, holder.getFriendlyName(), key, value, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}

View File

@ -86,7 +86,7 @@ public class MetaSetTemp extends SharedSubCommand {
Node n = NodeFactory.makeMetaNode(key, value).withExtraContext(context).setExpiry(duration).build();
if (holder.hasPermission(n).asBoolean()) {
Message.ALREADY_HAS_META.send(sender, holder.getFriendlyName());
Message.ALREADY_HAS_TEMP_META.send(sender, holder.getFriendlyName(), key, value, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}

View File

@ -80,7 +80,7 @@ public class MetaUnset extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOESNT_HAVE_META.send(sender, holder.getFriendlyName());
Message.DOESNT_HAVE_META.send(sender, holder.getFriendlyName(), key, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -80,7 +80,7 @@ public class MetaUnsetTemp extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOESNT_HAVE_META.send(sender, holder.getFriendlyName());
Message.DOESNT_HAVE_TEMP_META.send(sender, holder.getFriendlyName(), key, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -65,13 +65,13 @@ public class ParentAdd extends SharedSubCommand {
MutableContextSet context = ArgumentUtils.handleContext(1, args, plugin);
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.LOADING_ERROR;
}
@ -97,7 +97,7 @@ public class ParentAdd extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName());
Message.ALREADY_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName(), Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -73,13 +73,13 @@ public class ParentAddTemp extends SharedSubCommand {
TemporaryModifier modifier = plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR);
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
@ -94,7 +94,7 @@ public class ParentAddTemp extends SharedSubCommand {
}
if (group.getName().equalsIgnoreCase(holder.getObjectName())) {
Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName());
Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName(), Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
@ -111,7 +111,7 @@ public class ParentAddTemp extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName());
Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getDisplayName(), Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -64,23 +64,23 @@ public class ParentClearTrack extends SharedSubCommand {
final String trackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(trackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
Track track = plugin.getTrackManager().getIfLoaded(trackName);
if (track == null) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.LOADING_ERROR;
}
if (track.getSize() <= 1) {
Message.TRACK_EMPTY.send(sender);
Message.TRACK_EMPTY.send(sender, track.getName());
return CommandResult.STATE_ERROR;
}

View File

@ -71,11 +71,11 @@ public class ParentInfo extends SharedSubCommand {
}
Component ent = permGroupsToMessage(holder.getOwnNodesSorted(), holder, label);
Message.LISTNODES.send(sender, holder.getFriendlyName());
Message.LISTPARENTS.send(sender, holder.getFriendlyName());
sender.sendMessage(ent);
Component tempEnt = tempGroupsToMessage(holder.getOwnNodesSorted(), holder, label);
Message.LISTNODES_TEMP.send(sender, holder.getFriendlyName());
Message.LISTPARENTS_TEMP.send(sender, holder.getFriendlyName());
sender.sendMessage(tempEnt);
return CommandResult.SUCCESS;

View File

@ -105,7 +105,7 @@ public class ParentRemove extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_INHERIT.send(sender, holder.getFriendlyName(), groupName);
Message.DOES_NOT_INHERIT.send(sender, holder.getFriendlyName(), groupName, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -86,7 +86,7 @@ public class ParentRemoveTemp extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_TEMP_INHERIT.send(sender, holder.getFriendlyName(), groupName);
Message.DOES_NOT_TEMP_INHERIT.send(sender, holder.getFriendlyName(), groupName, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -65,13 +65,13 @@ public class ParentSet extends SharedSubCommand {
MutableContextSet context = ArgumentUtils.handleContext(1, args, plugin);
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.LOADING_ERROR;
}

View File

@ -65,23 +65,23 @@ public class ParentSetTrack extends SharedSubCommand {
final String trackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(trackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
Track track = plugin.getTrackManager().getIfLoaded(trackName);
if (track == null) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.LOADING_ERROR;
}
if (track.getSize() <= 1) {
Message.TRACK_EMPTY.send(sender);
Message.TRACK_EMPTY.send(sender, track.getName());
return CommandResult.STATE_ERROR;
}
@ -90,7 +90,7 @@ public class ParentSetTrack extends SharedSubCommand {
if (index > 0) {
List<String> trackGroups = track.getGroups();
if ((index - 1) >= trackGroups.size()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, index);
return CommandResult.INVALID_ARGS;
}
groupName = track.getGroups().get(index - 1);
@ -105,13 +105,13 @@ public class ParentSetTrack extends SharedSubCommand {
MutableContextSet context = ArgumentUtils.handleContext(2, args, plugin);
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.LOADING_ERROR;
}

View File

@ -140,13 +140,11 @@ public class PermissionInfo extends SharedSubCommand {
List<Node> l = new ArrayList<>();
for (Node node : nodes) {
if (nodeFilter != null && !node.getPermission().startsWith(nodeFilter)) {
continue;
}
if (contextFilter != null && !node.getFullContexts().hasIgnoreCase(contextFilter.getKey(), contextFilter.getValue())) {
continue;
}
if (node.isGroupNode() || node.isPrefix() || node.isSuffix() || node.isMeta()) continue;
if (nodeFilter != null && !node.getPermission().startsWith(nodeFilter)) continue;
if (contextFilter != null && !node.getFullContexts().hasIgnoreCase(contextFilter.getKey(), contextFilter.getValue())) continue;
if (temp != node.isTemporary()) continue;
l.add(node);
}

View File

@ -88,7 +88,7 @@ public class PermissionSet extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_HASPERMISSION.send(sender, holder.getFriendlyName());
Message.ALREADY_HASPERMISSION.send(sender, holder.getFriendlyName(), node, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -96,7 +96,7 @@ public class PermissionSetTemp extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.ALREADY_HAS_TEMP_PERMISSION.send(sender, holder.getFriendlyName());
Message.ALREADY_HAS_TEMP_PERMISSION.send(sender, holder.getFriendlyName(), node, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -93,7 +93,7 @@ public class PermissionUnset extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_HAVEPERMISSION.send(sender, holder.getFriendlyName());
Message.DOES_NOT_HAVE_PERMISSION.send(sender, holder.getFriendlyName(), node, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -86,7 +86,7 @@ public class PermissionUnsetTemp extends SharedSubCommand {
save(holder, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOES_NOT_HAVE_TEMP_PERMISSION.send(sender, holder.getFriendlyName());
Message.DOES_NOT_HAVE_TEMP_PERMISSION.send(sender, holder.getFriendlyName(), node, Util.contextSetToString(context));
return CommandResult.STATE_ERROR;
}
}

View File

@ -54,17 +54,17 @@ public class CreateGroup extends SingleCommand {
String groupName = args.get(0).toLowerCase();
if (!DataConstraints.GROUP_NAME_TEST.test(groupName)) {
Message.GROUP_INVALID_ENTRY.send(sender);
Message.GROUP_INVALID_ENTRY.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
if (plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_ALREADY_EXISTS.send(sender);
Message.ALREADY_EXISTS.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().createAndLoadGroup(groupName, CreationCause.COMMAND).join()) {
Message.CREATE_GROUP_ERROR.send(sender);
Message.CREATE_ERROR.send(sender, groupName);
return CommandResult.FAILURE;
}

View File

@ -62,7 +62,7 @@ public class DeleteGroup extends SingleCommand {
}
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
@ -73,7 +73,7 @@ public class DeleteGroup extends SingleCommand {
}
if (!plugin.getStorage().deleteGroup(group, DeletionCause.COMMAND).join()) {
Message.DELETE_GROUP_ERROR.send(sender);
Message.DELETE_ERROR.send(sender, group.getFriendlyName());
return CommandResult.FAILURE;
}

View File

@ -57,7 +57,7 @@ public class GroupClone extends SubCommand<Group> {
String newGroupName = args.get(0).toLowerCase();
if (!DataConstraints.GROUP_NAME_TEST.test(newGroupName)) {
Message.GROUP_INVALID_ENTRY.send(sender);
Message.GROUP_INVALID_ENTRY.send(sender, newGroupName);
return CommandResult.INVALID_ARGS;
}

View File

@ -61,8 +61,8 @@ public class GroupInfo extends SubCommand<Group> {
group.getId(),
group.getDisplayName(),
group.getWeight().isPresent() ? group.getWeight().getAsInt() : "None",
group.getPermanentNodes().size(),
group.getTemporaryNodes().size(),
group.getOwnNodes().size(),
group.getOwnNodes().stream().filter(n -> !(n.isGroupNode() || n.isPrefix() || n.isSuffix() || n.isMeta())).mapToInt(n -> 1).sum(),
group.getPrefixNodes().size(),
group.getSuffixNodes().size(),
group.getMetaNodes().size()

View File

@ -84,13 +84,13 @@ public class GroupMainCommand extends MainCommand<Group, String> {
@Override
protected Group getTarget(String target, LuckPermsPlugin plugin, Sender sender) {
if (!plugin.getStorage().loadGroup(target).join()) {
Message.GROUP_NOT_FOUND.send(sender);
Message.GROUP_NOT_FOUND.send(sender, target);
return null;
}
Group group = plugin.getGroupManager().getIfLoaded(target);
if (group == null) {
Message.GROUP_NOT_FOUND.send(sender);
Message.GROUP_NOT_FOUND.send(sender, target);
return null;
}

View File

@ -52,17 +52,17 @@ public class GroupRename extends SubCommand<Group> {
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Group group, List<String> args, String label) throws CommandException {
String newGroupName = args.get(0).toLowerCase();
if (!DataConstraints.GROUP_NAME_TEST.test(newGroupName)) {
Message.GROUP_INVALID_ENTRY.send(sender);
Message.GROUP_INVALID_ENTRY.send(sender, newGroupName);
return CommandResult.INVALID_ARGS;
}
if (plugin.getStorage().loadGroup(newGroupName).join()) {
Message.GROUP_ALREADY_EXISTS.send(sender);
Message.ALREADY_EXISTS.send(sender, newGroupName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().createAndLoadGroup(newGroupName, CreationCause.COMMAND).join()) {
Message.CREATE_GROUP_ERROR.send(sender);
Message.CREATE_ERROR.send(sender, newGroupName);
return CommandResult.FAILURE;
}
@ -73,7 +73,7 @@ public class GroupRename extends SubCommand<Group> {
}
if (!plugin.getStorage().deleteGroup(group, DeletionCause.COMMAND).join()) {
Message.DELETE_GROUP_ERROR.send(sender);
Message.DELETE_ERROR.send(sender, group.getFriendlyName());
return CommandResult.FAILURE;
}

View File

@ -65,7 +65,7 @@ public class LogGroupHistory extends SubCommand<Log> {
}
if (!DataConstraints.GROUP_NAME_TEST.test(group)) {
Message.GROUP_INVALID_ENTRY.send(sender);
Message.GROUP_INVALID_ENTRY.send(sender, group);
return CommandResult.INVALID_ARGS;
}

View File

@ -32,6 +32,7 @@ import me.lucko.luckperms.common.commands.CommandResult;
import me.lucko.luckperms.common.commands.abstraction.SubCommand;
import me.lucko.luckperms.common.commands.sender.Sender;
import me.lucko.luckperms.common.commands.utils.Util;
import me.lucko.luckperms.common.config.ConfigKeys;
import me.lucko.luckperms.common.constants.CommandPermission;
import me.lucko.luckperms.common.constants.DataConstraints;
import me.lucko.luckperms.common.locale.CommandSpec;
@ -69,51 +70,37 @@ public class LogRecent extends SubCommand<Log> {
}
// User and possibly page
final String s = args.get(0);
UUID u;
u = Util.parseUuid(s);
if (u == null) {
if (s.length() <= 16) {
if (!DataConstraints.PLAYER_USERNAME_TEST.test(s)) {
Message.USER_INVALID_ENTRY.send(sender, s);
return CommandResult.INVALID_ARGS;
}
UUID uuid = plugin.getStorage().getUUID(s).join();
if (uuid == null) {
Message.USER_NOT_FOUND.send(sender);
return CommandResult.INVALID_ARGS;
}
if (args.size() != 2) {
// Just user
return showLog(log.getRecentMaxPages(uuid), uuid, sender, log);
}
try {
int p = Integer.parseInt(args.get(1));
// User and page
return showLog(p, uuid, sender, log);
} catch (NumberFormatException e) {
// Invalid page
return showLog(-1, null, sender, log);
}
final String target = args.get(0);
UUID uuid = Util.parseUuid(target.toLowerCase());
if (uuid == null) {
if (!DataConstraints.PLAYER_USERNAME_TEST.test(target)) {
Message.USER_INVALID_ENTRY.send(sender, target);
return CommandResult.INVALID_ARGS;
}
Message.USER_INVALID_ENTRY.send(sender, s);
return CommandResult.INVALID_ARGS;
uuid = plugin.getStorage().getUUID(target.toLowerCase()).join();
if (uuid == null) {
if (!plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUID_CACHE)) {
Message.USER_NOT_FOUND.send(sender, target);
return CommandResult.INVALID_ARGS;
}
uuid = plugin.lookupUuid(target).orElse(null);
if (uuid == null) {
Message.USER_NOT_FOUND.send(sender, target);
return CommandResult.INVALID_ARGS;
}
}
}
if (args.size() != 2) {
// Just user
return showLog(log.getRecentMaxPages(u), u, sender, log);
return showLog(log.getRecentMaxPages(uuid), uuid, sender, log);
} else {
try {
int p = Integer.parseInt(args.get(1));
// User and page
return showLog(p, u, sender, log);
return showLog(p, uuid, sender, log);
} catch (NumberFormatException e) {
// Invalid page
return showLog(-1, null, sender, log);

View File

@ -65,7 +65,7 @@ public class LogTrackHistory extends SubCommand<Log> {
}
if (!DataConstraints.TRACK_NAME_TEST.test(track)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, track);
return CommandResult.INVALID_ARGS;
}

View File

@ -32,6 +32,7 @@ import me.lucko.luckperms.common.commands.CommandResult;
import me.lucko.luckperms.common.commands.abstraction.SubCommand;
import me.lucko.luckperms.common.commands.sender.Sender;
import me.lucko.luckperms.common.commands.utils.Util;
import me.lucko.luckperms.common.config.ConfigKeys;
import me.lucko.luckperms.common.constants.CommandPermission;
import me.lucko.luckperms.common.constants.DataConstraints;
import me.lucko.luckperms.common.locale.CommandSpec;
@ -53,7 +54,7 @@ public class LogUserHistory extends SubCommand<Log> {
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Log log, List<String> args, String label) throws CommandException {
String user = args.get(0);
String target = args.get(0);
int page = -999;
if (args.size() == 2) {
@ -65,37 +66,33 @@ public class LogUserHistory extends SubCommand<Log> {
}
}
UUID uuid = Util.parseUuid(user);
if (uuid != null) {
if (page == -999) {
page = log.getUserHistoryMaxPages(uuid);
UUID uuid = Util.parseUuid(target.toLowerCase());
if (uuid == null) {
if (!DataConstraints.PLAYER_USERNAME_TEST.test(target)) {
Message.USER_INVALID_ENTRY.send(sender, target);
return null;
}
return showLog(page, uuid, sender, log);
uuid = plugin.getStorage().getUUID(target.toLowerCase()).join();
if (uuid == null) {
if (!plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUID_CACHE)) {
Message.USER_NOT_FOUND.send(sender, target);
return null;
}
uuid = plugin.lookupUuid(target).orElse(null);
if (uuid == null) {
Message.USER_NOT_FOUND.send(sender, target);
return null;
}
}
}
if (user.length() <= 16) {
if (!DataConstraints.PLAYER_USERNAME_TEST.test(user)) {
Message.USER_INVALID_ENTRY.send(sender, user);
return CommandResult.INVALID_ARGS;
}
UUID uuid1 = plugin.getStorage().getUUID(user).join();
if (uuid1 == null) {
Message.USER_NOT_FOUND.send(sender);
return CommandResult.INVALID_ARGS;
}
if (page == -999) {
page = log.getUserHistoryMaxPages(uuid1);
}
return showLog(page, uuid1, sender, log);
if (page == -999) {
page = log.getUserHistoryMaxPages(uuid);
}
Message.USER_INVALID_ENTRY.send(sender, user);
return CommandResult.INVALID_ARGS;
return showLog(page, uuid, sender, log);
}
private static CommandResult showLog(int page, UUID user, Sender sender, Log log) {

View File

@ -64,6 +64,7 @@ public class VerboseCommand extends SingleCommand {
}
boolean noTraces = args.remove("--notrace") || args.remove("--notraces") || args.remove("--slim") || args.remove("-s");
boolean attachRaw = args.remove("--raw");
String mode = args.get(0).toLowerCase();
if (mode.equals("on") || mode.equals("true") || mode.equals("record")) {
@ -107,14 +108,14 @@ public class VerboseCommand extends SingleCommand {
if (listener == null) {
Message.VERBOSE_OFF.send(sender);
} else {
Message.VERBOSE_RECORDING_UPLOAD_START.send(sender);
Message.VERBOSE_UPLOAD_START.send(sender);
String url = listener.uploadPasteData(!noTraces);
String url = listener.uploadPasteData(!noTraces, attachRaw);
if (url == null) {
url = "null";
}
Message.VERBOSE_RECORDING_URL.send(sender);
Message.VERBOSE_RESULTS_URL.send(sender);
Component message = TextComponent.builder(url).color(TextColor.AQUA)
.clickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url))

View File

@ -54,17 +54,17 @@ public class CreateTrack extends SingleCommand {
String trackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(trackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_ALREADY_EXISTS.send(sender);
Message.ALREADY_EXISTS.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().createAndLoadTrack(trackName, CreationCause.COMMAND).join()) {
Message.CREATE_TRACK_ERROR.send(sender);
Message.CREATE_ERROR.send(sender, trackName);
return CommandResult.FAILURE;
}

View File

@ -55,7 +55,7 @@ public class DeleteTrack extends SingleCommand {
String trackName = args.get(0).toLowerCase();
if (!plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
@ -66,7 +66,7 @@ public class DeleteTrack extends SingleCommand {
}
if (!plugin.getStorage().deleteTrack(track, DeletionCause.COMMAND).join()) {
Message.DELETE_TRACK_ERROR.send(sender);
Message.DELETE_ERROR.send(sender, track.getName());
return CommandResult.FAILURE;
}

View File

@ -58,13 +58,13 @@ public class TrackAppend extends SubCommand<Track> {
}
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.LOADING_ERROR;
}

View File

@ -51,7 +51,7 @@ public class TrackClone extends SubCommand<Track> {
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Track track, List<String> args, String label) throws CommandException {
String newTrackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(newTrackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, newTrackName);
return CommandResult.INVALID_ARGS;
}

View File

@ -66,13 +66,13 @@ public class TrackInsert extends SubCommand<Track> {
}
if (!plugin.getStorage().loadGroup(groupName).join()) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.INVALID_ARGS;
}
Group group = plugin.getGroupManager().getIfLoaded(groupName);
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, groupName);
return CommandResult.LOADING_ERROR;
}

View File

@ -74,13 +74,13 @@ public class TrackMainCommand extends MainCommand<Track, String> {
@Override
protected Track getTarget(String target, LuckPermsPlugin plugin, Sender sender) {
if (!plugin.getStorage().loadTrack(target).join()) {
Message.TRACK_NOT_FOUND.send(sender);
Message.TRACK_NOT_FOUND.send(sender, target);
return null;
}
Track track = plugin.getTrackManager().getIfLoaded(target);
if (track == null) {
Message.TRACK_NOT_FOUND.send(sender);
Message.TRACK_NOT_FOUND.send(sender, target);
return null;
}

View File

@ -52,17 +52,17 @@ public class TrackRename extends SubCommand<Track> {
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Track track, List<String> args, String label) throws CommandException {
String newTrackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(newTrackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, newTrackName);
return CommandResult.INVALID_ARGS;
}
if (plugin.getStorage().loadTrack(newTrackName).join()) {
Message.TRACK_ALREADY_EXISTS.send(sender);
Message.ALREADY_EXISTS.send(sender, newTrackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().createAndLoadTrack(newTrackName, CreationCause.COMMAND).join()) {
Message.CREATE_TRACK_ERROR.send(sender);
Message.CREATE_ERROR.send(sender, newTrackName);
return CommandResult.FAILURE;
}
@ -73,7 +73,7 @@ public class TrackRename extends SubCommand<Track> {
}
if (!plugin.getStorage().deleteTrack(track, DeletionCause.COMMAND).join()) {
Message.DELETE_TRACK_ERROR.send(sender);
Message.DELETE_ERROR.send(sender, track.getName());
return CommandResult.FAILURE;
}

View File

@ -68,23 +68,23 @@ public class UserDemote extends SubCommand<User> {
final String trackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(trackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
Track track = plugin.getTrackManager().getIfLoaded(trackName);
if (track == null) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.LOADING_ERROR;
}
if (track.getSize() <= 1) {
Message.TRACK_EMPTY.send(sender);
Message.TRACK_EMPTY.send(sender, track.getName());
return CommandResult.STATE_ERROR;
}
@ -106,12 +106,12 @@ public class UserDemote extends SubCommand<User> {
nodes.removeIf(g -> !track.containsGroup(g.getGroupName()));
if (nodes.isEmpty()) {
Message.USER_TRACK_ERROR_NOT_CONTAIN_GROUP.send(sender);
Message.USER_TRACK_ERROR_NOT_CONTAIN_GROUP.send(sender, user.getFriendlyName(), track.getName());
return CommandResult.FAILURE;
}
if (nodes.size() != 1) {
Message.TRACK_AMBIGUOUS_CALL.send(sender);
Message.TRACK_AMBIGUOUS_CALL.send(sender, user.getFriendlyName());
return CommandResult.FAILURE;
}

View File

@ -65,8 +65,8 @@ public class UserInfo extends SubCommand<User> {
user.getUuid(),
plugin.getPlayerStatus(user.getUuid()).asString(plugin.getLocaleManager()),
user.getPrimaryGroup().getValue(),
user.getPermanentNodes().size(),
user.getTemporaryNodes().size(),
user.getOwnNodes().size(),
user.getOwnNodes().stream().filter(n -> !(n.isGroupNode() || n.isPrefix() || n.isSuffix() || n.isMeta())).mapToInt(n -> 1).sum(),
user.getPrefixNodes().size(),
user.getSuffixNodes().size(),
user.getMetaNodes().size()

View File

@ -91,13 +91,13 @@ public class UserMainCommand extends MainCommand<User, UserIdentifier> {
uuid = plugin.getStorage().getUUID(target.toLowerCase()).join();
if (uuid == null) {
if (!plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUID_CACHE)) {
Message.USER_NOT_FOUND.send(sender);
Message.USER_NOT_FOUND.send(sender, target);
return null;
}
uuid = plugin.lookupUuid(target).orElse(null);
if (uuid == null) {
Message.USER_NOT_FOUND.send(sender);
Message.USER_NOT_FOUND.send(sender, target);
return null;
}
}

View File

@ -66,23 +66,23 @@ public class UserPromote extends SubCommand<User> {
final String trackName = args.get(0).toLowerCase();
if (!DataConstraints.TRACK_NAME_TEST.test(trackName)) {
Message.TRACK_INVALID_ENTRY.send(sender);
Message.TRACK_INVALID_ENTRY.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
if (!plugin.getStorage().loadTrack(trackName).join()) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.INVALID_ARGS;
}
Track track = plugin.getTrackManager().getIfLoaded(trackName);
if (track == null) {
Message.TRACK_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, trackName);
return CommandResult.LOADING_ERROR;
}
if (track.getSize() <= 1) {
Message.TRACK_EMPTY.send(sender);
Message.TRACK_EMPTY.send(sender, track.getName());
return CommandResult.STATE_ERROR;
}
@ -129,7 +129,7 @@ public class UserPromote extends SubCommand<User> {
}
if (nodes.size() != 1) {
Message.TRACK_AMBIGUOUS_CALL.send(sender);
Message.TRACK_AMBIGUOUS_CALL.send(sender, user.getFriendlyName());
return CommandResult.FAILURE;
}
@ -144,7 +144,7 @@ public class UserPromote extends SubCommand<User> {
}
if (next == null) {
Message.USER_PROMOTE_ERROR_ENDOFTRACK.send(sender, track.getName());
Message.USER_PROMOTE_ERROR_ENDOFTRACK.send(sender, track.getName(), user.getFriendlyName());
return CommandResult.STATE_ERROR;
}
@ -171,7 +171,7 @@ public class UserPromote extends SubCommand<User> {
user.getPrimaryGroup().setStoredValue(nextGroup.getName());
}
Message.USER_PROMOTE_SUCCESS.send(sender, track.getName(), old, nextGroup.getDisplayName(), Util.contextSetToString(context));
Message.USER_PROMOTE_SUCCESS.send(sender, user.getFriendlyName(), track.getName(), old, nextGroup.getDisplayName(), Util.contextSetToString(context));
if (!silent) {
Message.EMPTY.send(sender, Util.listToArrowSep(track.getGroups(), old, nextGroup.getDisplayName(), false));
}

View File

@ -63,12 +63,12 @@ public class UserSwitchPrimaryGroup extends SubCommand<User> {
Group group = plugin.getGroupManager().getIfLoaded(args.get(0).toLowerCase());
if (group == null) {
Message.GROUP_DOES_NOT_EXIST.send(sender);
Message.DOES_NOT_EXIST.send(sender, args.get(0).toLowerCase());
return CommandResult.INVALID_ARGS;
}
if (user.getPrimaryGroup().getStoredValue().equalsIgnoreCase(group.getName())) {
Message.USER_PRIMARYGROUP_ERROR_ALREADYHAS.send(sender);
Message.USER_PRIMARYGROUP_ERROR_ALREADYHAS.send(sender, user.getFriendlyName(), group.getFriendlyName());
return CommandResult.STATE_ERROR;
}

View File

@ -25,11 +25,11 @@
package me.lucko.luckperms.common.locale;
import lombok.AllArgsConstructor;
import lombok.Getter;
import me.lucko.luckperms.common.commands.sender.Sender;
import me.lucko.luckperms.common.commands.utils.Util;
import me.lucko.luckperms.common.utils.TextUtils;
/**
* An enumeration of some of the messages used within the plugin.
@ -38,7 +38,6 @@ import me.lucko.luckperms.common.commands.utils.Util;
* {@link LocaleManager}.</p>
*/
@SuppressWarnings("SpellCheckingInspection")
@AllArgsConstructor
public enum Message {
/*
@ -46,371 +45,383 @@ public enum Message {
*/
PREFIX("&7&l[&b&lL&3&lP&7&l] &c", false),
LOG_INFO("&7&l[&bL&3P&7&l] &3{0}", false),
LOG_WARN("&7&l[&bLuck&3Perms&7&l] &c[WARN] {0}", false),
LOG_ERROR("&7&l[&bLuck&3Perms&7&l] &4[ERROR] {0}", false),
EMPTY("{0}", true),
EMPTY("{}", true),
PLAYER_ONLINE("&aOnline", false),
PLAYER_OFFLINE("&cOffline", false),
LOADING_ERROR("Permissions data could not be loaded. Please try again later.", true),
LOADING_ERROR("&cPermissions data could not be loaded. Please try again later.", true),
OP_DISABLED("&bThe vanilla OP system is disabled on this server.", false),
OP_DISABLED_SPONGE("&2Server Operator status has no effect when a permission plugin is installed. Please edit user data directly.", true),
LOG("&3LOG &3&l> {0}", true),
VERBOSE_LOG("&3VB &3&l> {0}", true),
OP_DISABLED_SPONGE("&2Please note that Server Operator status has no effect on Sponge permission checks when a permission plugin is installed. Please edit user data directly.", true),
EXPORT_LOG("&3EXPORT &3&l> &f{0}", true),
EXPORT_LOG_PROGRESS("&3EXPORT &3&l> &7{0}", true),
MIGRATION_LOG("&3MIGRATION &7[&3{0}&7] &3&l> &f{1}", true),
MIGRATION_LOG_PROGRESS("&3MIGRATION &7[&3{0}&7] &3&l> &7{1}", true),
/*
* Logging
*/
LOG_INFO("&7&l[&bL&3P&7&l] &3{}", false),
LOG_WARN("&7&l[&bLuck&3Perms&7&l] &c[WARN] {}", false),
LOG_ERROR("&7&l[&bLuck&3Perms&7&l] &4[ERROR] {}", false),
LOG("&3LOG &3&l> {}", true),
VERBOSE_LOG("&3VB &3&l> {}", true),
EXPORT_LOG("&3EXPORT &3&l> &f{}", true),
EXPORT_LOG_PROGRESS("&3EXPORT &3&l> &7{}", true),
MIGRATION_LOG("&3MIGRATION &7[&3{}&7] &3&l> &f{}", true),
MIGRATION_LOG_PROGRESS("&3MIGRATION &7[&3{}&7] &3&l> &7{}", true),
COMMAND_NOT_RECOGNISED("Command not recognised.", true),
COMMAND_NO_PERMISSION("You do not have permission to use this command!", true),
ALREADY_HASPERMISSION("{0} already has this permission!", true),
DOES_NOT_HAVEPERMISSION("{0} does not have this permission set.", true),
ALREADY_HAS_TEMP_PERMISSION("{0} already has this permission set temporarily!", true),
DOES_NOT_HAVE_TEMP_PERMISSION("{0} does not have this permission set temporarily.", true),
/*
* Misc commands
*/
COMMAND_NOT_RECOGNISED("&cCommand not recognised.", true),
COMMAND_NO_PERMISSION("&cYou do not have permission to use this command!", true),
/*
* Loading / Saving
*/
USER_NOT_FOUND("&bUser could not be found.", true),
USER_NOT_ONLINE("&bUser &a{0}&b is not online.", true),
USER_SAVE_ERROR("There was an error whilst saving the user.", true),
USER_NOT_FOUND("&cA user for &4{}&c could not be found.", true),
USER_NOT_ONLINE("&aUser &b{}&a is not online.", true),
USER_SAVE_ERROR("&cThere was an error whilst saving user data for &4{}&c.", true),
GROUP_NOT_FOUND("&bGroup could not be found.", true),
GROUP_SAVE_ERROR("There was an error whilst saving the group.", true),
GROUP_NOT_FOUND("&cA group named &4{}&c could not be found.", true),
GROUP_SAVE_ERROR("&cThere was an error whilst saving group data for &4{}&c.", true),
TRACK_NOT_FOUND("&bTrack could not be found.", true),
TRACK_SAVE_ERROR("There was an error whilst saving the track.", true),
TRACK_NOT_FOUND("&cA track named &4{}&c could not be found.", true),
TRACK_SAVE_ERROR("&cThere was an error whilst saving track data for &4{}&c.", true),
/*
* Command Syntax
*/
USER_INVALID_ENTRY("&d{0}&c is not a valid username/uuid.", true),
GROUP_INVALID_ENTRY("Group names can only contain alphanumeric characters.", true),
TRACK_INVALID_ENTRY("Track names can only contain alphanumeric characters.", true),
SERVER_WORLD_INVALID_ENTRY("Server/world names can only contain alphanumeric characters and cannot exceed 36 characters in length.", true),
USE_INHERIT_COMMAND("Use the 'parent add' and 'parent remove' commands instead of specifying the node.", true),
USER_INVALID_ENTRY("&4{}&c is not a valid username/uuid.", true),
GROUP_INVALID_ENTRY("&4{}&c is not a valid group name.", true),
TRACK_INVALID_ENTRY("&4{}&c is not a valid track name.", true),
SERVER_WORLD_INVALID_ENTRY("&cServer/world names can only contain alphanumeric characters and cannot exceed 36 characters in length.", true),
USE_INHERIT_COMMAND("&cUse the 'parent add' and 'parent remove' commands instead of specifying the node.", true),
/*
* Commands
*/
VERBOSE_INVALID_FILTER("&cInvalid verbose filter: &f{0}", true),
VERBOSE_ON("&bVerbose checking output set to &aTRUE &bfor all permissions.", true),
VERBOSE_ON_QUERY("&bVerbose checking output set to &aTRUE &bfor permissions matching filter: &f{0}", true),
VERBOSE_OFF("&bVerbose checking output set to &cFALSE&b.", true),
VERBOSE_INVALID_FILTER("&4{}&c is not a valid verbose filter.", true),
VERBOSE_ON("&bVerbose logging &aenabled &bfor checks matching &aANY&b.", true),
VERBOSE_ON_QUERY("&bVerbose logging &aenabled &bfor checks matching &a{}&b.", true),
VERBOSE_OFF("&bVerbose logging &cdisabled&b.", true),
VERBOSE_RECORDING_ON("&bVerbose recording set to &aTRUE &bfor all permissions.", true),
VERBOSE_RECORDING_ON_QUERY("&bVerbose recording set to &aTRUE &bfor permissions matching filter: &f{0}", true),
VERBOSE_RECORDING_UPLOAD_START("&bVerbose recording was disabled. Uploading results...", true),
VERBOSE_RECORDING_URL("&aVerbose results URL:", true),
VERBOSE_RECORDING_ON("&bVerbose recording &aenabled &bfor checks matching &aANY&b.", true),
VERBOSE_RECORDING_ON_QUERY("&bVerbose recording &aenabled &bfor checks matching &a{}&b.", true),
VERBOSE_UPLOAD_START("&bVerbose logging &cdisabled&b. Uploading results...", true),
VERBOSE_RESULTS_URL("&aVerbose results URL:", true),
TREE_UPLOAD_START("&bGenerating permission tree...", true),
TREE_EMPTY("&aUnable to generate tree. No results were found.", true),
TREE_URL("&aPermission Tree URL:", true),
TREE_EMPTY("&cUnable to generate tree. No results were found.", true),
TREE_URL("&aPermission tree URL:", true),
SEARCH_SEARCHING("&aSearching for users and groups with &b{0}&a...", true),
SEARCH_SEARCHING_MEMBERS("&aSearching for users and groups who inherit from &b{0}&a...", true),
SEARCH_RESULT("&aFound &b{0}&a entries from &b{1}&a users and &b{2}&a groups.", true),
SEARCH_SEARCHING("&aSearching for users and groups with &b{}&a...", true),
SEARCH_SEARCHING_MEMBERS("&aSearching for users and groups who inherit from &b{}&a...", true),
SEARCH_RESULT("&aFound &b{}&a entries from &b{}&a users and &b{}&a groups.", true),
SEARCH_SHOWING_USERS("&bShowing user entries:", true),
SEARCH_SHOWING_GROUPS("&bShowing group entries:", true),
SEARCH_SHOWING_USERS_WITH_PAGE("&bShowing user entries: {0}", true),
SEARCH_SHOWING_GROUPS_WITH_PAGE("&bShowing group entries: {0}", true),
SEARCH_SHOWING_USERS_WITH_PAGE("&bShowing user entries: {}", true),
SEARCH_SHOWING_GROUPS_WITH_PAGE("&bShowing group entries: {}", true),
APPLY_EDITS_INVALID_CODE("&aInvalid code. &7({0})", true),
APPLY_EDITS_UNABLE_TO_READ("&aUnable to read data using the given code. &7({0})", true),
APPLY_EDITS_NO_TARGET("&aUnable to parse the target of the edit. Please supply it as an extra argument.", true),
APPLY_EDITS_TARGET_GROUP_NOT_EXISTS("&aTarget group &b{0}&a does not exist.", true),
APPLY_EDITS_TARGET_USER_NOT_UUID("&aTarget user &b{0}&a is not a valid uuid.", true),
APPLY_EDITS_TARGET_USER_UNABLE_TO_LOAD("&aUnable to load target user &b{0}&a.", true),
APPLY_EDITS_TARGET_UNKNOWN("&aInvalid target. &7({0})", true),
APPLY_EDITS_SUCCESS("&aSuccessfully applied &b{0}&a nodes to &b{1}&a.", true),
APPLY_EDITS_INVALID_CODE("&cInvalid code. &7({})", true),
APPLY_EDITS_UNABLE_TO_READ("&cUnable to read data using the given code. &7({})", true),
APPLY_EDITS_NO_TARGET("&cUnable to parse the target of the edit. Please supply it as an extra argument.", true),
APPLY_EDITS_TARGET_GROUP_NOT_EXISTS("&cTarget group &4{}&c does not exist.", true),
APPLY_EDITS_TARGET_USER_NOT_UUID("&cTarget user &4{}&c is not a valid uuid.", true),
APPLY_EDITS_TARGET_USER_UNABLE_TO_LOAD("&cUnable to load target user &4{}&c.", true),
APPLY_EDITS_TARGET_UNKNOWN("&cInvalid target. &7({})", true),
APPLY_EDITS_SUCCESS("&aSuccessfully applied &b{}&a nodes to &b{}&a.", true),
EDITOR_UPLOAD_FAILURE("&cUnable to upload permission data to the editor.", true),
EDITOR_URL("&aEditor URL:", true),
CHECK_RESULT("&aPermission check result on user &b{0}&a for permission &b{1}&a: &f{2}", true),
CHECK_RESULT("&aPermission check result on user &b{}&a for permission &b{}&a: &f{}", true),
CREATE_SUCCESS("&b{0}&a was successfully created.", true),
DELETE_SUCCESS("&b{0}&a was successfully deleted.", true),
RENAME_SUCCESS("&b{0}&a was successfully renamed to &b{1}&a.", true),
CLONE_SUCCESS("&b{0}&a was successfully cloned onto &b{1}&a.", true),
CREATE_SUCCESS("&b{}&a was successfully created.", true),
DELETE_SUCCESS("&b{}&a was successfully deleted.", true),
RENAME_SUCCESS("&b{}&a was successfully renamed to &b{}&a.", true),
CLONE_SUCCESS("&b{}&a was successfully cloned onto &b{}&a.", true),
ALREADY_INHERITS("{0} already inherits '{1}'.", true),
DOES_NOT_INHERIT("{0} does not inherit '{1}'.", true),
ALREADY_TEMP_INHERITS("{0} already temporarily inherits '{1}'.", true),
DOES_NOT_TEMP_INHERIT("{0} does not temporarily inherit '{1}'.", true),
ALREADY_INHERITS("&b{}&a already inherits from &b{}&a in context {}&a.", true),
DOES_NOT_INHERIT("&b{}&a does not inherit from &b{}&a in context {}&a.", true),
ALREADY_TEMP_INHERITS("&b{}&a already temporarily inherits from &b{}&a in context {}&a.", true),
DOES_NOT_TEMP_INHERIT("&b{}&a does not temporarily inherit from &b{}&a in context {}&a.", true),
TRACK_ALREADY_CONTAINS("Track {0} already contains the group '{1}'.", true),
TRACK_DOES_NOT_CONTAIN("Track {0} does not contain the group '{1}'.", true),
TRACK_AMBIGUOUS_CALL("The user specified is a member of multiple groups on this track. Unable to determine their location.", true),
TRACK_ALREADY_CONTAINS("&b{}&a already contains &b{}&a.", true),
TRACK_DOES_NOT_CONTAIN("&b{}&a doesn't contain &b{}&a.", true),
TRACK_AMBIGUOUS_CALL("&4{}&c is a member of multiple groups on this track. Unable to determine their location.", true),
GROUP_ALREADY_EXISTS("That group already exists!", true),
GROUP_DOES_NOT_EXIST("That group does not exist!", true),
GROUP_LOAD_ERROR("An unexpected error occurred. Group not loaded.", true),
GROUPS_LOAD_ERROR("An unexpected error occurred. Unable to load all groups.", true),
ALREADY_EXISTS("&4{}&c already exists!", true),
DOES_NOT_EXIST("&4{}&c does not exist!", true),
TRACK_ALREADY_EXISTS("That track already exists!", true),
TRACK_DOES_NOT_EXIST("That track does not exist!", true),
TRACK_LOAD_ERROR("An unexpected error occurred. Track not loaded.", true),
TRACKS_LOAD_ERROR("An unexpected error occurred. Unable to load all tracks.", true),
TRACK_EMPTY("The track cannot be used as it is empty or contains only one group.", true),
GROUP_LOAD_ERROR("&cAn unexpected error occurred. Group not loaded.", true),
GROUPS_LOAD_ERROR("&cAn unexpected error occurred. Unable to load all groups.", true),
UPDATE_TASK_REQUEST("&bUpdate task scheduled.", true),
UPDATE_TASK_COMPLETE("&aUpdate task finished.", true),
UPDATE_TASK_COMPLETE_NETWORK("&aUpdate task finished. Now attempting to push to other servers.", true),
UPDATE_TASK_PUSH_SUCCESS("&aOther servers were notified via &b{0} Messaging &asuccessfully.", true),
TRACK_LOAD_ERROR("&cAn unexpected error occurred. Track not loaded.", true),
TRACKS_LOAD_ERROR("&cAn unexpected error occurred. Unable to load all tracks.", true),
TRACK_EMPTY("&4{}&c cannot be used as it is empty or contains only one group.", true),
UPDATE_TASK_REQUEST("&bAn update task has been requested. Please wait...", true),
UPDATE_TASK_COMPLETE("&aUpdate task complete.", true),
UPDATE_TASK_COMPLETE_NETWORK("&aUpdate task complete. Now attempting to push to other servers.", true),
UPDATE_TASK_PUSH_SUCCESS("&aOther servers were notified via &b{} Messaging &asuccessfully.", true),
UPDATE_TASK_PUSH_FAILURE("&cError whilst pushing changes to other servers.", true),
UPDATE_TASK_PUSH_FAILURE_NOT_SETUP("&cError whilst pushing changes to other servers. A messaging service has not been configured.", true),
RELOAD_CONFIG_SUCCESS("&aThe configuration file was reloaded. &7(some options will only apply after the server has restarted.)", true),
UPDATE_TASK_PUSH_FAILURE_NOT_SETUP("&cError whilst pushing changes to other servers. &7(a messaging service has not been configured)", true),
RELOAD_CONFIG_SUCCESS("&aThe configuration file was reloaded. &7(some options will only apply after the server has restarted)", true),
INFO_TOP(
"{PREFIX}&2Running &bLuckPerms v{0}&2 by &bLuck&2." + "\n" +
"{PREFIX}&f- &3Platform: &f{1}" + "\n" +
"{PREFIX}&f- &3Server Brand: &f{2}" + "\n" +
"{PREFIX}&f- &3Server Version: &f{3}",
"{PREFIX}&2Running &bLuckPerms v{}&2 by &bLuck&2." + "\n" +
"{PREFIX}&f- &3Platform: &f{}" + "\n" +
"{PREFIX}&f- &3Server Brand: &f{}" + "\n" +
"{PREFIX}&f- &3Server Version: &f{}",
false
),
INFO_MIDDLE(
"{PREFIX}&f- &bMessaging Type: &f{0}" + "\n" +
"{PREFIX}&f- &bMessaging Type: &f{}" + "\n" +
"{PREFIX}&f- &bInstance:" + "\n" +
"{PREFIX}&f- &3Server Name: &f{1}" + "\n" +
"{PREFIX}&f- &3Online Players: &a{2}" + "\n" +
"{PREFIX}&f- &3Unique Connections: &a{3}" + "\n" +
"{PREFIX}&f- &3Uptime: &7{4}" + "\n" +
"{PREFIX}&f- &3Local Data: &a{5} &7users, &a{6} &7groups, &a{7} &7tracks" + "\n" +
"{PREFIX}&f- &3Context Calculators: &a{8}" + "\n" +
"{PREFIX}&f- &3Known permissions: &a{9}" + "\n" +
"{PREFIX}&f- &3Server Name: &f{}" + "\n" +
"{PREFIX}&f- &3Online Players: &a{}" + "\n" +
"{PREFIX}&f- &3Unique Connections: &a{}" + "\n" +
"{PREFIX}&f- &3Uptime: &7{}" + "\n" +
"{PREFIX}&f- &3Local Data: &a{} &7users, &a{} &7groups, &a{} &7tracks" + "\n" +
"{PREFIX}&f- &3Context Calculators: &a{}" + "\n" +
"{PREFIX}&f- &3Known permissions: &a{}" + "\n" +
"{PREFIX}&f- &3Active processors: &7{10}",
false
),
CREATE_GROUP_ERROR("There was an error whilst creating the group.", true),
DELETE_GROUP_ERROR("There was an error whilst deleting the group.", true),
DELETE_GROUP_ERROR_DEFAULT("You cannot delete the default group.", true),
CREATE_ERROR("&cThere was an error whilst creating &4{}&c.", true),
DELETE_ERROR("&cThere was an error whilst deleting &4{}&c.", true),
DELETE_GROUP_ERROR_DEFAULT("&cYou cannot delete the default group.", true),
GROUPS_LIST("&aGroups: &7(name, weight, tracks)", true),
GROUPS_LIST_ENTRY("&f- &3{0} &7- &b{1}", true),
GROUPS_LIST_ENTRY_WITH_TRACKS("&f- &3{0} &7- &b{1} &7- [&3{2}&7]", true),
GROUPS_LIST_ENTRY("&f- &3{} &7- &b{}", true),
GROUPS_LIST_ENTRY_WITH_TRACKS("&f- &3{} &7- &b{} &7- [&3{}&7]", true),
CREATE_TRACK_ERROR("There was an error whilst creating the track.", true),
DELETE_TRACK_ERROR("There was an error whilst deleting the track.", true),
TRACKS_LIST("&aTracks: {0}", true),
TRACKS_LIST("&aTracks: {}", true),
LISTNODES("&b{0}'s Nodes:", true),
LISTNODES_WITH_PAGE("&b{0}'s Nodes: {1}", true),
LISTNODES_TEMP("&b{0}'s Temporary Nodes:", true),
LISTNODES_TEMP_WITH_PAGE("&b{0}'s Temporary Nodes: {1}", true),
LISTPARENTS("&b{0}'s Parent Groups:", true),
LISTPARENTS_TEMP("&b{0}'s Temporary Parent Groups:", true),
LIST_TRACKS("&b{0}'s Tracks:" + "\n" + "{1}", true),
LIST_TRACKS_EMPTY("{0} is not on any tracks.", true),
LISTNODES("&b{}'s Permissions:", true),
LISTNODES_WITH_PAGE("&b{}'s Permissions: {}", true),
LISTNODES_TEMP("&b{}'s Temporary Permissions:", true),
LISTNODES_TEMP_WITH_PAGE("&b{}'s Temporary Permissions: {}", true),
CONTEXT_PAIR_INLINE("&3{0}=&b{1}", false),
LISTPARENTS("&b{}'s Parent Groups:", true),
LISTPARENTS_TEMP("&b{}'s Temporary Parent Groups:", true),
LIST_TRACKS("&b{}'s Tracks:" + "\n" + "{}", true),
LIST_TRACKS_EMPTY("&b{}&a is not on any tracks.", true),
CONTEXT_PAIR_INLINE("&3{}=&b{}", false),
CONTEXT_PAIR__GLOBAL_INLINE("&eglobal", false),
CONTEXT_PAIR_SEP("&a, ", false),
CONTEXT_PAIR("&8(&7{0}=&f{1}&8)", false),
CONTEXT_PAIR("&8(&7{}=&f{}&8)", false),
CHECK_PERMISSION("&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a.", true),
CHECK_INHERITS_PERMISSION("&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a. &7(inherited from &a{4}&7)", true),
SETPERMISSION_SUCCESS("&aSet &b{0}&a to &b{1}&a for &b{2}&a in context {3}&a.", true),
SETPERMISSION_TEMP_SUCCESS("&aSet &b{0}&a to &b{1}&a for &b{2}&a for a duration of &b{3}&a in context {4}&a.", true),
UNSETPERMISSION_SUCCESS("&aUnset &b{0}&a for &b{1}&a in context {2}&a.", true),
UNSET_TEMP_PERMISSION_SUCCESS("&aUnset temporary permission &b{0}&a for &b{1}&a in context {2}&a.", true),
SET_INHERIT_SUCCESS("&b{0}&a now inherits permissions from &b{1}&a in context {2}&a.", true),
SET_TEMP_INHERIT_SUCCESS("&b{0}&a now inherits permissions from &b{1}&a for a duration of &b{2}&a in context {3}&a.", true),
SET_PARENT_SUCCESS("&b{0}&a had their existing parent groups cleared, and now only inherits &b{1}&a in context {2}&a.", true),
SET_TRACK_PARENT_SUCCESS("&b{0}&a had their existing parent groups on track &b{1}&a cleared, and now only inherits &b{2}&a in context {3}&a.", true),
UNSET_INHERIT_SUCCESS("&b{0}&a no longer inherits permissions from &b{1}&a in context {2}&a.", true),
UNSET_TEMP_INHERIT_SUCCESS("&b{0}&a no longer temporarily inherits permissions from &b{1}&a in context {2}&a.", true),
CHECK_PERMISSION("&b{}&a has permission &b{}&a set to {}&a in context {}&a.", true),
CHECK_INHERITS_PERMISSION("&b{}&a has permission &b{}&a set to {}&a in context {}&a. &7(inherited from &a{}&7)", true),
CLEAR_SUCCESS("&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a nodes were removed.)", true),
CLEAR_SUCCESS_SINGULAR("&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a node was removed.)", true),
PARENT_CLEAR_SUCCESS("&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a nodes were removed.)", true),
PARENT_CLEAR_SUCCESS_SINGULAR("&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a node was removed.)", true),
SETPERMISSION_SUCCESS("&aSet &b{}&a to &b{}&a for &b{}&a in context {}&a.", true),
ALREADY_HASPERMISSION("&b{}&a already has &b{}&a set in context {}&a.", true),
PARENT_CLEAR_TRACK_SUCCESS("&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. (&b{3}&a nodes were removed.)", true),
PARENT_CLEAR_TRACK_SUCCESS_SINGULAR("&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. (&b{3}&a node was removed.)", true),
SETPERMISSION_TEMP_SUCCESS("&aSet &b{}&a to &b{}&a for &b{}&a for a duration of &b{}&a in context {}&a.", true),
ALREADY_HAS_TEMP_PERMISSION("&b{}&a already has &b{}&a set temporarily in context {}&a.", true),
META_CLEAR_SUCCESS("&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a nodes were removed.)", true),
META_CLEAR_SUCCESS_SINGULAR("&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a node was removed.)", true),
UNSETPERMISSION_SUCCESS("&aUnset &b{}&a for &b{}&a in context {}&a.", true),
DOES_NOT_HAVE_PERMISSION("&b{}&a does not have &b{}&a set in context {}&a.", true),
ILLEGAL_DATE_ERROR("Could not parse date '{0}'.", true),
PAST_DATE_ERROR("You cannot set a date in the past!", true),
UNSET_TEMP_PERMISSION_SUCCESS("&aUnset temporary permission &b{}&a for &b{}&a in context {}&a.", true),
DOES_NOT_HAVE_TEMP_PERMISSION("&b{}&a does not have &b{}&a set temporarily in context {}&a.", true),
CHAT_META_PREFIX_HEADER("&b{0}'s Prefixes", true),
CHAT_META_SUFFIX_HEADER("&b{0}'s Suffixes", true),
META_HEADER("&b{0}'s Meta", true),
CHAT_META_ENTRY("&b-> {0} &f- &f\"{1}&f\" &8(&7inherited from &a{2}&8)", true),
CHAT_META_ENTRY_WITH_CONTEXT("&b-> {0} &f- &f\"{1}&f\" &8(&7inherited from &a{2}&8){3}", true),
META_ENTRY("&b-> &a{0} &f= &f\"{1}&f\" &8(&7inherited from &a{2}&8)", true),
META_ENTRY_WITH_CONTEXT("&b-> &a{0} &f= &f\"{1}&f\" &8(&7inherited from &a{2}&8){3}", true),
CHAT_META_PREFIX_NONE("&b{0} has no prefixes.", true),
CHAT_META_SUFFIX_NONE("&b{0} has no suffixes.", true),
META_NONE("&b{0} has no meta.", true),
SET_INHERIT_SUCCESS("&b{}&a now inherits permissions from &b{}&a in context {}&a.", true),
SET_TEMP_INHERIT_SUCCESS("&b{}&a now inherits permissions from &b{}&a for a duration of &b{}&a in context {}&a.", true),
SET_PARENT_SUCCESS("&b{}&a had their existing parent groups cleared, and now only inherits &b{}&a in context {}&a.", true),
SET_TRACK_PARENT_SUCCESS("&b{}&a had their existing parent groups on track &b{}&a cleared, and now only inherits &b{}&a in context {}&a.", true),
UNSET_INHERIT_SUCCESS("&b{}&a no longer inherits permissions from &b{}&a in context {}&a.", true),
UNSET_TEMP_INHERIT_SUCCESS("&b{}&a no longer temporarily inherits permissions from &b{}&a in context {}&a.", true),
META_INVALID_PRIORITY("Invalid priority '{0}'. Expected a number.", true),
CLEAR_SUCCESS("&b{}&a's permissions were cleared in context {}&a. (&b{}&a nodes were removed.)", true),
CLEAR_SUCCESS_SINGULAR("&b{}&a's permissions were cleared in context {}&a. (&b{}&a node was removed.)", true),
PARENT_CLEAR_SUCCESS("&b{}&a's parents were cleared in context {}&a. (&b{}&a nodes were removed.)", true),
PARENT_CLEAR_SUCCESS_SINGULAR("&b{}&a's parents were cleared in context {}&a. (&b{}&a node was removed.)", true),
ALREADY_HAS_CHAT_META("{0} already has that {1} set.", true),
DOES_NOT_HAVE_CHAT_META("{0} doesn't have that {1} set.", true),
PARENT_CLEAR_TRACK_SUCCESS("&b{}&a's parents on track &b{}&a were cleared in context {}&a. (&b{}&a nodes were removed.)", true),
PARENT_CLEAR_TRACK_SUCCESS_SINGULAR("&b{}&a's parents on track &b{}&a were cleared in context {}&a. (&b{}&a node was removed.)", true),
ADD_CHATMETA_SUCCESS("&b{0}&a had {1} &f\"{2}&f\"&a set at a priority of &b{3}&a in context {4}&a.", true),
ADD_TEMP_CHATMETA_SUCCESS("&b{0}&a had {1} &f\"{2}&f\"&a set at a priority of &b{3}&a for a duration of &b{4}&a in context {5}&a.", true),
REMOVE_CHATMETA_SUCCESS("&b{0}&a had {1} &f\"{2}&f\"&a at priority &b{3}&a removed in context {4}&a.", true),
BULK_REMOVE_CHATMETA_SUCCESS("&b{0}&a had all {1}es at priority &b{2}&a removed in context {3}&a.", true),
REMOVE_TEMP_CHATMETA_SUCCESS("&b{0}&a had temporary {1} &f\"{2}&f\"&a at priority &b{3}&a removed in context {4}&a.", true),
BULK_REMOVE_TEMP_CHATMETA_SUCCESS("&b{0}&a had all temporary {1}es at priority &b{2}&a removed in context {3}&a.", true),
META_CLEAR_SUCCESS("&b{}&a's meta matching type &b{}&a was cleared in context {}&a. (&b{}&a nodes were removed.)", true),
META_CLEAR_SUCCESS_SINGULAR("&b{}&a's meta matching type &b{}&a was cleared in context {}&a. (&b{}&a node was removed.)", true),
ALREADY_HAS_META("{0} already has that meta pair set.", true),
ILLEGAL_DATE_ERROR("&cCould not parse date &4{}&c.", true),
PAST_DATE_ERROR("&cYou cannot set a date in the past!", true),
SET_META_SUCCESS("&aSet meta value for key &f\"{0}&f\"&a to &f\"{1}&f\"&a for &b{2}&a in context {3}&a.", true),
SET_META_TEMP_SUCCESS("&aSet meta value for key &f\"{0}&f\"&a to &f\"{1}&f\"&a for &b{2}&a for a duration of &b{3}&a in context {4}&a.", true),
UNSET_META_SUCCESS("&aUnset meta value with key &f\"{0}&f\"&a for &b{1}&a in context {2}&a.", true),
UNSET_META_TEMP_SUCCESS("&aUnset temporary meta value with key &f\"{0}&f\"&a for &b{1}&a in context {2}&a.", true),
CHAT_META_PREFIX_HEADER("&b{}'s Prefixes", true),
CHAT_META_SUFFIX_HEADER("&b{}'s Suffixes", true),
META_HEADER("&b{}'s Meta", true),
CHAT_META_ENTRY("&b-> {} &f- &f'{}&f' &8(&7inherited from &a{}&8)", true),
CHAT_META_ENTRY_WITH_CONTEXT("&b-> {} &f- &f'{}&f' &8(&7inherited from &a{}&8){}", true),
META_ENTRY("&b-> &a{} &f= &f'{}&f' &8(&7inherited from &a{}&8)", true),
META_ENTRY_WITH_CONTEXT("&b-> &a{} &f= &f'{}&f' &8(&7inherited from &a{}&8){}", true),
CHAT_META_PREFIX_NONE("&b{} has no prefixes.", true),
CHAT_META_SUFFIX_NONE("&b{} has no suffixes.", true),
META_NONE("&b{} has no meta.", true),
DOESNT_HAVE_META("{0} does not have that meta pair set.", true),
META_INVALID_PRIORITY("&cInvalid priority &4{}&c. Expected a number.", true),
BULK_UPDATE_INVALID_DATA_TYPE("Invalid type. Was expecting 'all', 'users' or 'groups'.", true),
BULK_UPDATE_INVALID_CONSTRAINT("Invalid constraint &4{0}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'.", true),
BULK_UPDATE_INVALID_COMPARISON("Invalid comparison operator '&4{0}&c'. Expected one of the following: &f== != ~~ ~!", true),
BULK_UPDATE_QUEUED("&aBulk update operation was queued. &7(&f{0}&7)", true),
BULK_UPDATE_CONFIRM("&aRun &b/{0} bulkupdate confirm {1} &ato execute the update.", true),
BULK_UPDATE_UNKNOWN_ID("&aOperation with id &b{0}&a does not exist or has expired.", true),
ALREADY_HAS_CHAT_META("&b{}&a already has {} &f'{}&f'&a set at a priority of &b{}&a in context {}&a.", true),
ALREADY_HAS_TEMP_CHAT_META("&b{}&a already has {} &f'{}&f'&a set temporarily at a priority of &b{}&a in context {}&a.", true),
DOES_NOT_HAVE_CHAT_META("&b{}&a doesn't have {} &f'{}&f'&a set at a priority of &b{}&a in context {}&a.", true),
DOES_NOT_HAVE_TEMP_CHAT_META("&b{}&a doesn't have {} &f'{}&f'&a set temporarily at a priority of &b{}&a in context {}&a.", true),
ADD_CHATMETA_SUCCESS("&b{}&a had {} &f'{}&f'&a set at a priority of &b{}&a in context {}&a.", true),
ADD_TEMP_CHATMETA_SUCCESS("&b{}&a had {} &f'{}&f'&a set at a priority of &b{}&a for a duration of &b{}&a in context {}&a.", true),
REMOVE_CHATMETA_SUCCESS("&b{}&a had {} &f'{}&f'&a at priority &b{}&a removed in context {}&a.", true),
BULK_REMOVE_CHATMETA_SUCCESS("&b{}&a had all {}es at priority &b{}&a removed in context {}&a.", true),
REMOVE_TEMP_CHATMETA_SUCCESS("&b{}&a had temporary {} &f'{}&f'&a at priority &b{}&a removed in context {}&a.", true),
BULK_REMOVE_TEMP_CHATMETA_SUCCESS("&b{}&a had all temporary {}es at priority &b{}&a removed in context {}&a.", true),
ALREADY_HAS_META("&b{}&a already has meta key &f'{}&f'&a set to &f'{}&f'&a in context {}&a.", true),
ALREADY_HAS_TEMP_META("&b{}&a already has meta key &f'{}&f'&a temporarily set to &f'{}&f'&a in context {}&a.", true),
DOESNT_HAVE_META("&b{}&a doesn't have meta key &f'{}&f'&a set in context {}&a.", true),
DOESNT_HAVE_TEMP_META("&b{}&a doesn't have meta key &f'{}&f'&a set temporarily in context {}&a.", true),
SET_META_SUCCESS("&aSet meta key &f'{}&f'&a to &f'{}&f'&a for &b{}&a in context {}&a.", true),
SET_META_TEMP_SUCCESS("&aSet meta key &f'{}&f'&a to &f'{}&f'&a for &b{}&a for a duration of &b{}&a in context {}&a.", true),
UNSET_META_SUCCESS("&aUnset meta key &f'{}&f'&a for &b{}&a in context {}&a.", true),
UNSET_META_TEMP_SUCCESS("&aUnset temporary meta key &f'{}&f'&a for &b{}&a in context {}&a.", true),
BULK_UPDATE_INVALID_DATA_TYPE("&cInvalid type. Was expecting 'all', 'users' or 'groups'.", true),
BULK_UPDATE_INVALID_CONSTRAINT("&cInvalid constraint &4{}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'.", true),
BULK_UPDATE_INVALID_COMPARISON("&cInvalid comparison operator '&4{}&c'. Expected one of the following: &f== != ~~ ~!", true),
BULK_UPDATE_QUEUED("&aBulk update operation was queued. &7(&f{}&7)", true),
BULK_UPDATE_CONFIRM("&aRun &b/{} bulkupdate confirm {} &ato execute the update.", true),
BULK_UPDATE_UNKNOWN_ID("&aOperation with id &b{}&a does not exist or has expired.", true),
BULK_UPDATE_STARTING("&aRunning bulk update.", true),
BULK_UPDATE_SUCCESS("&bBulk update completed successfully.", true),
BULK_UPDATE_FAILURE("&cBulk update failed. Check the console for errors.", true),
USER_INFO_GENERAL(
"{PREFIX}&b&l> &bUser Info: &f{0}" + "\n" +
"{PREFIX}&f- &3UUID: &f{1}" + "\n" +
"{PREFIX}&f- &3Status: {2}" + "\n" +
"{PREFIX}&f- &3Primary Group: &f{3}" + "\n" +
"{PREFIX}&b&l> &bUser Info: &f{}" + "\n" +
"{PREFIX}&f- &3UUID: &f{}" + "\n" +
"{PREFIX}&f- &3Status: {}" + "\n" +
"{PREFIX}&f- &3Primary Group: &f{}" + "\n" +
"{PREFIX}&f- &aCounts:" + "\n" +
"{PREFIX}&f- &3Permissions: &a{4}" + "\n" +
"{PREFIX}&f- &3Temporary Permissions: &a{5}" + "\n" +
"{PREFIX}&f- &3Prefixes: &a{6}" + "\n" +
"{PREFIX}&f- &3Suffixes: &a{7}" + "\n" +
"{PREFIX}&f- &3Meta: &a{8}",
"{PREFIX}&f- &3Nodes: &a{}" + "\n" +
"{PREFIX}&f- &3Permissions: &a{}" + "\n" +
"{PREFIX}&f- &3Prefixes: &a{}" + "\n" +
"{PREFIX}&f- &3Suffixes: &a{}" + "\n" +
"{PREFIX}&f- &3Meta: &a{}",
false
),
USER_INFO_DATA(
"{PREFIX}&f- &aCached Data:" + "\n" +
"{PREFIX}&f- &3Has contextual data: {0}" + "\n" +
"{PREFIX}&f- &3Current Contexts: {1}" + "\n" +
"{PREFIX}&f- &3Current Prefix: {2}" + "\n" +
"{PREFIX}&f- &3Current Suffix: {3}",
"{PREFIX}&f- &3Has contextual data: {}" + "\n" +
"{PREFIX}&f- &3Current Contexts: {}" + "\n" +
"{PREFIX}&f- &3Current Prefix: {}" + "\n" +
"{PREFIX}&f- &3Current Suffix: {}",
false
),
INFO_PARENT_HEADER("&f- &aParent Groups:", true),
INFO_TEMP_PARENT_HEADER("&f- &aTemporary Parent Groups:", true),
USER_REMOVEGROUP_ERROR_PRIMARY("You cannot remove a user from their primary group.", true),
USER_PRIMARYGROUP_SUCCESS("&b{0}&a's primary group was set to &b{1}&a.", true),
USER_PRIMARYGROUP_WARN_OPTION("&cWarning: The primary group calculation method being used by this server &7({0}) &cmay not reflect this change.", true),
USER_PRIMARYGROUP_ERROR_ALREADYHAS("The user already has this group set as their primary group.", true),
USER_PRIMARYGROUP_ERROR_NOTMEMBER("&b{0}&a was not already a member of &b{1}&a, adding them now.", true),
USER_TRACK_ERROR_NOT_CONTAIN_GROUP("The user specified isn't already in any groups on this track.", true),
USER_REMOVEGROUP_ERROR_PRIMARY("&aYou cannot remove a user from their primary group.", true),
USER_PRIMARYGROUP_SUCCESS("&b{}&a's primary group was set to &b{}&a.", true),
USER_PRIMARYGROUP_WARN_OPTION("&aWarning: The primary group calculation method being used by this server &7({}) &amay not reflect this change.", true),
USER_PRIMARYGROUP_ERROR_ALREADYHAS("&b{}&a already has &b{}&a set as their primary group.", true),
USER_PRIMARYGROUP_ERROR_NOTMEMBER("&b{}&a was not already a member of &b{}&a, adding them now.", true),
USER_TRACK_ERROR_NOT_CONTAIN_GROUP("&b{}&a isn't already in any groups on &b{}&a.", true),
USER_TRACK_ADDED_TO_FIRST("&b{0}&a isn't in any groups on this track, so they were added to the first group, &b{1}&a in context {2}&a.", true),
USER_PROMOTE_SUCCESS("&aPromoting user along track &b{0}&a from &b{1}&a to &b{2}&a in context {3}&a.", true),
USER_TRACK_ADDED_TO_FIRST("&b{}&a isn't in any groups on this track, so they were added to the first group, &b{}&a in context {}&a.", true),
USER_PROMOTE_SUCCESS("&aPromoting &b{}&a along track &b{}&a from &b{}&a to &b{}&a in context {}&a.", true),
USER_PROMOTE_ERROR_ENDOFTRACK("The end of track &4{0}&c was reached. Unable to promote user.", true),
USER_PROMOTE_ERROR_ENDOFTRACK("&aThe end of track &b{}&a was reached. Unable to promote &b{}&a.", true),
USER_PROMOTE_ERROR_MALFORMED(
"{PREFIX}The next group on the track, {0}, no longer exists. Unable to promote user." + "\n" +
"{PREFIX}Either create the group, or remove it from the track and try again.",
"{PREFIX}&aThe next group on the track, &b{}&a, no longer exists. Unable to promote user." + "\n" +
"{PREFIX}&aEither create the group, or remove it from the track and try again.",
false
),
USER_DEMOTE_SUCCESS("&aDemoting user along track &b{0}&a from &b{1}&a to &b{2}&a in context {3}&a.", true),
USER_DEMOTE_ENDOFTRACK("The end of track &4{0}&c was reached, so &4{1}&c was removed from &4{2}&c.", true),
USER_DEMOTE_SUCCESS("&aDemoting &b{}&a along track &b{}&a from &b{}&a to &b{}&a in context {}&a.", true),
USER_DEMOTE_ENDOFTRACK("&aThe end of track &b{}&a was reached, so &b{}&a was removed from &b{}&a.", true),
USER_DEMOTE_ERROR_MALFORMED(
"{PREFIX}The previous group on the track, {0}, no longer exists. Unable to demote user." + "\n" +
"{PREFIX}Either create the group, or remove it from the track and try again.",
"{PREFIX}&aThe previous group on the track, &b{}&a, no longer exists. Unable to demote user." + "\n" +
"{PREFIX}&aEither create the group, or remove it from the track and try again.",
false
),
GROUP_INFO_GENERAL(
"{PREFIX}&b&l> &bGroup Info: &f{0}" + "\n" +
"{PREFIX}&f- &3Display Name: &f{1}" + "\n" +
"{PREFIX}&f- &3Weight: &f{2}" + "\n" +
"{PREFIX}&b&l> &bGroup Info: &f{}" + "\n" +
"{PREFIX}&f- &3Display Name: &f{}" + "\n" +
"{PREFIX}&f- &3Weight: &f{}" + "\n" +
"{PREFIX}&f- &aCounts:" + "\n" +
"{PREFIX}&f- &3Permissions: &a{3}" + "\n" +
"{PREFIX}&f- &3Temporary Permissions: &a{4}" + "\n" +
"{PREFIX}&f- &3Prefixes: &a{5}" + "\n" +
"{PREFIX}&f- &3Suffixes: &a{6}" + "\n" +
"{PREFIX}&f- &3Meta: &a{7}",
"{PREFIX}&f- &3Nodes: &a{}" + "\n" +
"{PREFIX}&f- &3Permissions: &a{}" + "\n" +
"{PREFIX}&f- &3Prefixes: &a{}" + "\n" +
"{PREFIX}&f- &3Suffixes: &a{}" + "\n" +
"{PREFIX}&f- &3Meta: &a{}",
false
),
GROUP_SET_WEIGHT("&aSet weight to &b{0}&a for group &b{1}&a.", true),
GROUP_SET_WEIGHT("&aSet weight to &b{}&a for group &b{}&a.", true),
TRACK_INFO(
"{PREFIX}&b&l> &bShowing Track: &f{0}" + "\n" +
"{PREFIX}&f- &7Path: &f{1}",
"{PREFIX}&b&l> &bShowing Track: &f{}" + "\n" +
"{PREFIX}&f- &7Path: &f{}",
false
),
TRACK_CLEAR("&b{0}&a's groups track was cleared.", true),
TRACK_APPEND_SUCCESS("&aGroup &b{0}&a was successfully appended to track &b{1}&a.", true),
TRACK_INSERT_SUCCESS("&aGroup &b{0}&a was successfully inserted into track &b{1}&a at position &b{2}&a.", true),
TRACK_INSERT_ERROR_NUMBER("Expected number but instead received: {0}", true),
TRACK_INSERT_ERROR_INVALID_POS("Unable to insert at position {0}. Index out of bounds.", true),
TRACK_REMOVE_SUCCESS("&aGroup &b{0}&a was successfully removed from track &b{1}&a.", true),
TRACK_CLEAR("&b{}&a's groups track was cleared.", true),
TRACK_APPEND_SUCCESS("&aGroup &b{}&a was appended to track &b{}&a.", true),
TRACK_INSERT_SUCCESS("&aGroup &b{}&a was inserted into track &b{}&a at position &b{}&a.", true),
TRACK_INSERT_ERROR_NUMBER("&cExpected number but instead received: {}", true),
TRACK_INSERT_ERROR_INVALID_POS("&cUnable to insert at position &4{}&c. &7(invalid position)", true),
TRACK_REMOVE_SUCCESS("&aGroup &b{}&a was removed from track &b{}&a.", true),
LOG_LOAD_ERROR("The log could not be loaded.", true),
LOG_INVALID_PAGE("Invalid page number.", true),
LOG_INVALID_PAGE_RANGE("Invalid page number. Please enter a value between 1 and {0}.", true),
LOG_LOAD_ERROR("&cThe log could not be loaded.", true),
LOG_INVALID_PAGE("&cInvalid page number.", true),
LOG_INVALID_PAGE_RANGE("&cInvalid page number. Please enter a value between &41&c and &4{}&c.", true),
LOG_NO_ENTRIES("&bNo log entries to show.", true),
LOG_ENTRY("&b#{0} -> &8(&7{1} ago&8) {2}", true),
LOG_ENTRY("&b#{} -> &8(&7{} ago&8) {}", true),
LOG_NOTIFY_CONSOLE("&cCannot toggle notifications for console.", true),
LOG_NOTIFY_TOGGLE_ON("&aEnabled&b logging output.", true),
LOG_NOTIFY_TOGGLE_OFF("&cDisabled&b logging output.", true),
LOG_NOTIFY_ALREADY_ON("You are already receiving notifications.", true),
LOG_NOTIFY_ALREADY_OFF("You aren't currently receiving notifications.", true),
LOG_NOTIFY_UNKNOWN("State unknown. Expecting \"on\" or \"off\".", true),
LOG_NOTIFY_ALREADY_ON("&cYou are already receiving notifications.", true),
LOG_NOTIFY_ALREADY_OFF("&cYou aren't currently receiving notifications.", true),
LOG_NOTIFY_UNKNOWN("&cState unknown. Expecting \"on\" or \"off\".", true),
LOG_SEARCH_HEADER("&aShowing recent actions for query &b{0} &a(page &f{1}&a of &f{2}&a)", true),
LOG_SEARCH_HEADER("&aShowing recent actions for query &b{} &a(page &f{}&a of &f{}&a)", true),
LOG_RECENT_HEADER("&aShowing recent actions (page &f{0}&a of &f{1}&a)", true),
LOG_RECENT_BY_HEADER("&aShowing recent actions by &b{0} &a(page &f{1}&a of &f{2}&a)", true),
LOG_RECENT_HEADER("&aShowing recent actions (page &f{}&a of &f{}&a)", true),
LOG_RECENT_BY_HEADER("&aShowing recent actions by &b{} &a(page &f{}&a of &f{}&a)", true),
LOG_HISTORY_USER_HEADER("&aShowing history for user &b{0} &a(page &f{1}&a of &f{2}&a)", true),
LOG_HISTORY_GROUP_HEADER("&aShowing history for group &b{0} &a(page &f{1}&a of &f{2}&a)", true),
LOG_HISTORY_TRACK_HEADER("&aShowing history for track &b{0} &a(page &f{1}&a of &f{2}&a)", true),
LOG_HISTORY_USER_HEADER("&aShowing history for user &b{} &a(page &f{}&a of &f{}&a)", true),
LOG_HISTORY_GROUP_HEADER("&aShowing history for group &b{} &a(page &f{}&a of &f{}&a)", true),
LOG_HISTORY_TRACK_HEADER("&aShowing history for track &b{} &a(page &f{}&a of &f{}&a)", true),
LOG_EXPORT_ALREADY_EXISTS("Error: File {0} already exists.", true),
LOG_EXPORT_NOT_WRITABLE("Error: File {0} is not writable.", true),
LOG_EXPORT_EMPTY("The log is empty and therefore cannot be exported.", true),
LOG_EXPORT_FAILURE("An unexpected error occured whilst writing to the file.", true),
LOG_EXPORT_SUCCESS("&aSuccessfully exported the log to &b{0}&a.", true),
LOG_EXPORT_ALREADY_EXISTS("&cError: File &4{}&c already exists.", true),
LOG_EXPORT_NOT_WRITABLE("&cError: File &4{}&c is not writable.", true),
LOG_EXPORT_EMPTY("&cThe log is empty and therefore cannot be exported.", true),
LOG_EXPORT_FAILURE("&cAn unexpected error occured whilst writing to the file.", true),
LOG_EXPORT_SUCCESS("&aSuccessfully exported the log to &b{}&a.", true),
IMPORT_ALREADY_RUNNING("Another import process is already running. Please wait for it to finish and try again.", true),
EXPORT_ALREADY_RUNNING("Another export process is already running. Please wait for it to finish and try again.", true),
IMPORT_LOG_DOESNT_EXIST("Error: File {0} does not exist.", true),
IMPORT_LOG_NOT_READABLE("Error: File {0} is not readable.", true),
IMPORT_LOG_FAILURE("An unexpected error occured whilst reading from the log file.", true),
IMPORT_ALREADY_RUNNING("&cAnother import process is already running. Please wait for it to finish and try again.", true),
EXPORT_ALREADY_RUNNING("&cAnother export process is already running. Please wait for it to finish and try again.", true),
IMPORT_LOG_DOESNT_EXIST("&cError: File &4{}&c does not exist.", true),
IMPORT_LOG_NOT_READABLE("&cError: File &4{}&c is not readable.", true),
IMPORT_LOG_FAILURE("&cAn unexpected error occured whilst reading from the log file.", true),
IMPORT_PROGRESS("&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferrors.", true),
IMPORT_PROGRESS_SIN("&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferror.", true),
IMPORT_PROGRESS("&b(Import) &b-> &f{}&f% complete &7- &b{}&f/&b{} &foperations complete with &c{} &ferrors.", true),
IMPORT_PROGRESS_SIN("&b(Import) &b-> &f{}&f% complete &7- &b{}&f/&b{} &foperations complete with &c{} &ferror.", true),
IMPORT_START("&b(Import) &b-> &fStarting import process.", true),
IMPORT_END_COMPLETE("&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &7No errors.", true),
IMPORT_END_COMPLETE_ERR("&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} errors.", true),
IMPORT_END_COMPLETE_ERR_SIN("&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} error.", true),
IMPORT_END_COMPLETE("&b(Import) &a&lCOMPLETED &7- took &b{} &7seconds - &7No errors.", true),
IMPORT_END_COMPLETE_ERR("&b(Import) &a&lCOMPLETED &7- took &b{} &7seconds - &c{} errors.", true),
IMPORT_END_COMPLETE_ERR_SIN("&b(Import) &a&lCOMPLETED &7- took &b{} &7seconds - &c{} error.", true),
IMPORT_END_ERROR_HEADER(
"{PREFIX}&b(Import) &7------------> &fShowing Error #&b{0} &7<------------" + "\n" +
"{PREFIX}&b(Import) &fWhilst executing: &3Command #{1}" + "\n" +
"{PREFIX}&b(Import) &fCommand: &7{2}" + "\n" +
"{PREFIX}&b(Import) &fType: &3{3}" + "\n" +
"{PREFIX}&b(Import) &7------------> &fShowing Error #&b{} &7<------------" + "\n" +
"{PREFIX}&b(Import) &fWhilst executing: &3Command #{}" + "\n" +
"{PREFIX}&b(Import) &fCommand: &7{}" + "\n" +
"{PREFIX}&b(Import) &fType: &3{}" + "\n" +
"{PREFIX}&b(Import) &fOutput:",
false
),
IMPORT_END_ERROR_CONTENT("&b(Import) &b-> &c{0}", true),
IMPORT_END_ERROR_CONTENT("&b(Import) &b-> &c{}", true),
IMPORT_END_ERROR_FOOTER("&b(Import) &7<------------------------------------------>", true);
public static final Object SKIP_ELEMENT = new Object();
@ -430,6 +441,12 @@ public enum Message {
private String message;
private boolean showPrefix;
Message(String message, boolean showPrefix) {
// rewrite hardcoded placeholders according to their position
this.message = TextUtils.rewritePlaceholders(message);
this.showPrefix = showPrefix;
}
public String asString(LocaleManager localeManager, Object... objects) {
String prefix = null;
if (localeManager != null) {

View File

@ -164,7 +164,7 @@ public class NodeFactory {
} else {
sb.append(type.getEntry(node).getValue());
}
if (node.isTemporary()) {
if (set && node.isTemporary()) {
sb.append(" ").append(node.getExpiryUnixTime());
}
@ -216,15 +216,10 @@ public class NodeFactory {
private static StringBuilder appendContextToCommand(StringBuilder sb, Node node) {
if (node.isServerSpecific()) {
sb.append(" ").append(node.getServer().get());
if (node.isWorldSpecific()) {
sb.append(" ").append(node.getWorld().get());
}
} else {
if (node.isWorldSpecific()) {
sb.append(" world=").append(node.getWorld().get());
}
sb.append(" server=").append(node.getServer().get());
}
if (node.isWorldSpecific()) {
sb.append(" world=").append(node.getWorld().get());
}
ContextSet contexts = node.getContexts();

View File

@ -63,4 +63,12 @@ public class TextUtils {
return ComponentSerializers.LEGACY.serialize(component);
}
public static String rewritePlaceholders(String input) {
int i = 0;
while (input.contains("{}")) {
input = input.replaceFirst("\\{\\}", "{" + i++ + "}");
}
return input;
}
}

View File

@ -174,7 +174,7 @@ public class VerboseListener {
* @return the url
* @see PasteUtils#paste(String, List)
*/
public String uploadPasteData(boolean showTraces) {
public String uploadPasteData(boolean showTraces, boolean attachRaw) {
long now = System.currentTimeMillis();
String startDate = DATE_FORMAT.format(new Date(startTime));
String endDate = DATE_FORMAT.format(new Date(now));
@ -216,7 +216,7 @@ public class VerboseListener {
}
prettyOutput.add("### Output")
.add("Format: `<checked>` `<origin>` `<permission>` `<value>`")
.add("Format: `<checked>` `<permission>` `<value>`")
.add("")
.add("___")
.add("");
@ -267,14 +267,23 @@ public class VerboseListener {
prettyOutput.add("</pre></p></details>");
}
csvOutput.add(escapeCommas(c.getCheckTarget()) + "," + escapeCommas(c.getPermission()) + "," + c.getResult().name().toLowerCase());
if (attachRaw) {
csvOutput.add(escapeCommas(c.getCheckTarget()) + "," + escapeCommas(c.getPermission()) + "," + c.getResult().name().toLowerCase());
}
});
results.clear();
List<Map.Entry<String, String>> content = ImmutableList.of(
Maps.immutableEntry("luckperms-verbose.md", prettyOutput.build().stream().collect(Collectors.joining("\n"))),
Maps.immutableEntry("raw-data.csv", csvOutput.build().stream().collect(Collectors.joining("\n")))
);
List<Map.Entry<String, String>> content;
if (attachRaw) {
content = ImmutableList.of(
Maps.immutableEntry("luckperms-verbose.md", prettyOutput.build().stream().collect(Collectors.joining("\n"))),
Maps.immutableEntry("raw-data.csv", csvOutput.build().stream().collect(Collectors.joining("\n")))
);
} else {
content = ImmutableList.of(
Maps.immutableEntry("luckperms-verbose.md", prettyOutput.build().stream().collect(Collectors.joining("\n")))
);
}
return PasteUtils.paste("LuckPerms Verbose Checking Output", content);
}