diff --git a/.locale/en_US.yml b/.locale/en_US.yml index b21ea0893..395cc47c8 100644 --- a/.locale/en_US.yml +++ b/.locale/en_US.yml @@ -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 &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 &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]" diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/abstraction/SubCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/abstraction/SubCommand.java index 0b9abc096..64353c8c1 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/abstraction/SubCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/abstraction/SubCommand.java @@ -189,7 +189,7 @@ public abstract class SubCommand extends Command { } if (!success) { - Message.USER_SAVE_ERROR.send(sender); + Message.USER_SAVE_ERROR.send(sender, user.getFriendlyName()); } } @@ -210,7 +210,7 @@ public abstract class SubCommand extends Command { } if (!success) { - Message.GROUP_SAVE_ERROR.send(sender); + Message.GROUP_SAVE_ERROR.send(sender, group.getFriendlyName()); } } @@ -231,7 +231,7 @@ public abstract class SubCommand extends Command { } if (!success) { - Message.TRACK_SAVE_ERROR.send(sender); + Message.TRACK_SAVE_ERROR.send(sender, track.getName()); } } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddChatMeta.java index e40906bf7..b4df5b458 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddChatMeta.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddTempChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddTempChatMeta.java index b0a80d849..1f1b1c111 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddTempChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaAddTempChatMeta.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveChatMeta.java index 574c76a60..ac438ceb3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveChatMeta.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveTempChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveTempChatMeta.java index 4552a942c..08c5dfc38 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveTempChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaRemoveTempChatMeta.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSet.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSet.java index 79d9a5f0d..82030837c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSet.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSet.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSetTemp.java index 4c70974e8..8408f78a3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaSetTemp.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnset.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnset.java index db48625d8..53ae744ee 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnset.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnset.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnsetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnsetTemp.java index 0fd3fd5e5..7aa40270b 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnsetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/meta/MetaUnsetTemp.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAdd.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAdd.java index 33bd46439..8cc7b128a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAdd.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAdd.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAddTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAddTemp.java index b03940654..26997ee16 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAddTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentAddTemp.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentClearTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentClearTrack.java index 796f0d0b7..6b2362a88 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentClearTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentClearTrack.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentInfo.java index b1d695b6a..ddfeafd4f 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentInfo.java @@ -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; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemove.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemove.java index 2111168ad..475693ad1 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemove.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemove.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemoveTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemoveTemp.java index f9d2cab65..6f7e79271 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemoveTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentRemoveTemp.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSet.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSet.java index f6fdedce2..25107c355 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSet.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSet.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSetTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSetTrack.java index ee3922687..c709c7433 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSetTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/parent/ParentSetTrack.java @@ -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 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionInfo.java index 101a5e02b..cbf2b25c1 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionInfo.java @@ -140,13 +140,11 @@ public class PermissionInfo extends SharedSubCommand { List 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); } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSet.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSet.java index a10a9b183..d80d4b7db 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSet.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSet.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSetTemp.java index 17bde8c2e..c16dec4a7 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionSetTemp.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnset.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnset.java index ddda521fc..17f0fe22d 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnset.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnset.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnsetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnsetTemp.java index 648409ee9..481a93f1c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnsetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/permission/PermissionUnsetTemp.java @@ -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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/CreateGroup.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/CreateGroup.java index 853186b7f..53554cc1c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/CreateGroup.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/CreateGroup.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/DeleteGroup.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/DeleteGroup.java index 5ad01759e..68d146c06 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/DeleteGroup.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/DeleteGroup.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupClone.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupClone.java index 774830f4a..041363e14 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupClone.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupClone.java @@ -57,7 +57,7 @@ public class GroupClone extends SubCommand { 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupInfo.java index a62cc06a3..8d7853d0d 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupInfo.java @@ -61,8 +61,8 @@ public class GroupInfo extends SubCommand { 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() diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupMainCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupMainCommand.java index 3e64e839c..94ec4b56e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupMainCommand.java @@ -84,13 +84,13 @@ public class GroupMainCommand extends MainCommand { @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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupRename.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupRename.java index 77ccf2ee1..ddce076a3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupRename.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/group/GroupRename.java @@ -52,17 +52,17 @@ public class GroupRename extends SubCommand { public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Group group, List 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 { } if (!plugin.getStorage().deleteGroup(group, DeletionCause.COMMAND).join()) { - Message.DELETE_GROUP_ERROR.send(sender); + Message.DELETE_ERROR.send(sender, group.getFriendlyName()); return CommandResult.FAILURE; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java index 65d811a68..d3f004ce4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java @@ -65,7 +65,7 @@ public class LogGroupHistory extends SubCommand { } if (!DataConstraints.GROUP_NAME_TEST.test(group)) { - Message.GROUP_INVALID_ENTRY.send(sender); + Message.GROUP_INVALID_ENTRY.send(sender, group); return CommandResult.INVALID_ARGS; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java index c4094a82a..0064d0ed1 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java @@ -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 { } // 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); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java index 3d0c572bb..2bbf5d595 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java @@ -65,7 +65,7 @@ public class LogTrackHistory extends SubCommand { } if (!DataConstraints.TRACK_NAME_TEST.test(track)) { - Message.TRACK_INVALID_ENTRY.send(sender); + Message.TRACK_INVALID_ENTRY.send(sender, track); return CommandResult.INVALID_ARGS; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java index 60339b3a1..347759628 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java @@ -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 { @Override public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Log log, List 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 { } } - 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) { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/misc/VerboseCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/misc/VerboseCommand.java index 39d681782..bf0c9844f 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/misc/VerboseCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/misc/VerboseCommand.java @@ -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)) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/CreateTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/CreateTrack.java index 1d59ad495..c11dcba75 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/CreateTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/CreateTrack.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/DeleteTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/DeleteTrack.java index c288a570f..80e5fce57 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/DeleteTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/DeleteTrack.java @@ -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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackAppend.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackAppend.java index c8d96e42d..e41efe067 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackAppend.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackAppend.java @@ -58,13 +58,13 @@ public class TrackAppend extends SubCommand { } 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackClone.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackClone.java index acc8e3f99..6257eedb4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackClone.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackClone.java @@ -51,7 +51,7 @@ public class TrackClone extends SubCommand { public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Track track, List 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackInsert.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackInsert.java index 45c564350..da1b449ed 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackInsert.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackInsert.java @@ -66,13 +66,13 @@ public class TrackInsert extends SubCommand { } 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackMainCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackMainCommand.java index cb973a996..46d532fcc 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackMainCommand.java @@ -74,13 +74,13 @@ public class TrackMainCommand extends MainCommand { @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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackRename.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackRename.java index 42dc82fc4..ddfe9ddee 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackRename.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/track/TrackRename.java @@ -52,17 +52,17 @@ public class TrackRename extends SubCommand { public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Track track, List 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 { } if (!plugin.getStorage().deleteTrack(track, DeletionCause.COMMAND).join()) { - Message.DELETE_TRACK_ERROR.send(sender); + Message.DELETE_ERROR.send(sender, track.getName()); return CommandResult.FAILURE; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserDemote.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserDemote.java index 4f31a6f13..fd9d504e5 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserDemote.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserDemote.java @@ -68,23 +68,23 @@ public class UserDemote extends SubCommand { 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 { 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserInfo.java index 93d0c3b0a..81cfd34d3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserInfo.java @@ -65,8 +65,8 @@ public class UserInfo extends SubCommand { 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() diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserMainCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserMainCommand.java index f488fca1d..2751edd68 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserMainCommand.java @@ -91,13 +91,13 @@ public class UserMainCommand extends MainCommand { 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; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserPromote.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserPromote.java index ec55e6d48..2df40a9f3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserPromote.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserPromote.java @@ -66,23 +66,23 @@ public class UserPromote extends SubCommand { 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 { } 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 { } 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.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)); } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserSwitchPrimaryGroup.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserSwitchPrimaryGroup.java index 81fdab1a5..89f8edf80 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserSwitchPrimaryGroup.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/user/UserSwitchPrimaryGroup.java @@ -63,12 +63,12 @@ public class UserSwitchPrimaryGroup extends SubCommand { 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; } diff --git a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java index c4d3ee779..00f342846 100644 --- a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java +++ b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java @@ -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}.

*/ @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 &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 &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) { diff --git a/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java b/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java index f1e3a3b79..a3def6856 100644 --- a/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java +++ b/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java @@ -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(); diff --git a/common/src/main/java/me/lucko/luckperms/common/utils/TextUtils.java b/common/src/main/java/me/lucko/luckperms/common/utils/TextUtils.java index c99831a5f..1ddff0bef 100644 --- a/common/src/main/java/me/lucko/luckperms/common/utils/TextUtils.java +++ b/common/src/main/java/me/lucko/luckperms/common/utils/TextUtils.java @@ -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; + } + } diff --git a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java index b0e76c092..41288697e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java +++ b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java @@ -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: `` `` `` ``") + .add("Format: `` `` ``") .add("") .add("___") .add(""); @@ -267,14 +267,23 @@ public class VerboseListener { prettyOutput.add("

"); } - 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> 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> 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); }