mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2024-11-27 21:29:47 +01:00
misc cleanup
This commit is contained in:
parent
862fe6e2e3
commit
6602b23f09
@ -1,743 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: en_US (English)
|
|
||||||
# Author: Luck
|
|
||||||
|
|
||||||
prefix: "&7&l[&b&lL&3&lP&7&l] "
|
|
||||||
empty: "&c{0}"
|
|
||||||
player-online: "&aOnline"
|
|
||||||
player-offline: "&cOffline"
|
|
||||||
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: "&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: "&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: "&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."
|
|
||||||
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: "&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."
|
|
||||||
search-showing-users: "&bShowing user entries: &7(showing page &f{0}&7 of &f{1}&7 - &f{2}&7 entries)"
|
|
||||||
search-showing-groups: "&bShowing group entries: &7(showing page &f{0}&7 of &f{1}&7 - &f{2}&7 entries)"
|
|
||||||
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: "&aWeb editor data was applied to &b{0}&a successfully."
|
|
||||||
apply-edits-success-summary: "&7(&a{0} &7{1} and &c{2} &7{3})"
|
|
||||||
apply-edits-diff-added: "&a+ &f{0}"
|
|
||||||
apply-edits-diff-removed: "&c- &f{0}"
|
|
||||||
editor-start: "&7Preparing a new editor sesssion. Please wait..."
|
|
||||||
editor-upload-failure: "&cUnable to upload permission data to the editor."
|
|
||||||
editor-url: "&aClick the link below to open the editor:"
|
|
||||||
check-result: "&aPermission check result on user &b{0}&a for permission &b{1}&a: &f{2}"
|
|
||||||
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: "&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!"
|
|
||||||
user-load-error: "&cAn unexpected error occurred. User not loaded."
|
|
||||||
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. &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
|
|
||||||
{PREFIX}&f- &3Server Brand: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Server Version: &f{3}
|
|
||||||
info-middle: >
|
|
||||||
{PREFIX}&f- &bMessaging Type: &f{0}\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- &3Active processors: &7{10}
|
|
||||||
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]"
|
|
||||||
tracks-list: "&aTracks: {0}"
|
|
||||||
permission-info: "&b{0}'s Permissions: &7(showing page &f{1}&7 of &f{2}&7 - &f{3}&7 entries)"
|
|
||||||
permission-info-no-data: "&b{0}&a does not have any permissions set."
|
|
||||||
parent-info: "&b{0}'s Parents: &7(showing page &f{1}&7 of &f{2}&7 - &f{3}&7 entries)"
|
|
||||||
parent-info-no-data: "&b{0}&a does not have any parents defined."
|
|
||||||
list-tracks: "&b{0}'s Tracks:"
|
|
||||||
list-tracks-entry: "&a{0}: {1}"
|
|
||||||
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, "
|
|
||||||
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."
|
|
||||||
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."
|
|
||||||
unset-inherit-success: "&b{0}&a no longer inherits permissions from &b{1}&a in context {2}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a no longer temporarily inherits permissions from &b{1}&a in context {2}&a."
|
|
||||||
clear-success: "&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a nodes were removed.)"
|
|
||||||
clear-success-singular: "&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a node was removed.)"
|
|
||||||
parent-clear-success: "&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a nodes were removed.)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a node was removed.)"
|
|
||||||
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.)"
|
|
||||||
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: "&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-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: "&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."
|
|
||||||
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: "&b{0}&a already has meta key &f'{1}&f'&a set to &f'{2}&f'&a in context {3}&a."
|
|
||||||
already-has-temp-meta: "&b{0}&a already has meta key &f'{1}&f'&a temporarily set to &f'{2}&f'&a in context {3}&a."
|
|
||||||
doesnt-have-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set in context {2}&a."
|
|
||||||
doesnt-have-temp-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set temporarily in context {2}&a."
|
|
||||||
set-meta-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a in context {3}&a."
|
|
||||||
set-meta-temp-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
|
|
||||||
unset-meta-success: "&aUnset meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
|
|
||||||
unset-meta-temp-success: "&aUnset temporary meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
|
|
||||||
bulk-update-invalid-data-type: "&cInvalid type. Was expecting 'all', 'users' or 'groups'."
|
|
||||||
bulk-update-invalid-constraint: "&cInvalid constraint &4{0}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'."
|
|
||||||
bulk-update-invalid-comparison: "&cInvalid comparison operator '&4{0}&c'. Expected one of the following: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&aBulk update operation was queued. &7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&aRun &b/{0} bulkupdate confirm {1} &ato execute the update."
|
|
||||||
bulk-update-unknown-id: "&aOperation with id &b{0}&a does not exist or has expired."
|
|
||||||
bulk-update-starting: "&aRunning bulk update."
|
|
||||||
bulk-update-success: "&bBulk update completed successfully."
|
|
||||||
bulk-update-failure: "&cBulk update failed. Check the console for errors."
|
|
||||||
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}&f- &aCounts:\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}
|
|
||||||
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}
|
|
||||||
info-parent-header: "&f- &aParent Groups:"
|
|
||||||
info-temp-parent-header: "&f- &aTemporary Parent Groups:"
|
|
||||||
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: "&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: "&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 &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}&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}&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- &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}
|
|
||||||
group-set-weight: "&aSet weight to &b{0}&a for group &b{1}&a."
|
|
||||||
group-set-display-name-doesnt-have: "&b{0}&a doesn't have a display name set."
|
|
||||||
group-set-display-name-already-has: "&b{0}&a already has a display name of &b{1}&a."
|
|
||||||
group-set-display-name-already-in-use: "&aThe display name &b{0}&a is already being used by &b{1}&a."
|
|
||||||
group-set-display-name: "&aSet display name to &b{0}&a for group &b{1}&a."
|
|
||||||
group-set-display-name-removed: "&aRemoved display name for group &b{0}&a."
|
|
||||||
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 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: "&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: "&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: "&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."
|
|
||||||
import-end-complete-err-sin: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} error."
|
|
||||||
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) &fOutput:
|
|
||||||
import-end-error-content: "&b(Import) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Import) &7<------------------------------------------>"
|
|
||||||
|
|
||||||
command-specs:
|
|
||||||
user:
|
|
||||||
description: "User commands"
|
|
||||||
usage: "/%s user <user>"
|
|
||||||
group:
|
|
||||||
description: "Group commands"
|
|
||||||
usage: "/%s group <group>"
|
|
||||||
track:
|
|
||||||
description: "Track commands"
|
|
||||||
usage: "/%s track <track>"
|
|
||||||
log:
|
|
||||||
description: "Log commands"
|
|
||||||
usage: "/%s log"
|
|
||||||
sync:
|
|
||||||
description: "Sync changes with the storage"
|
|
||||||
usage: "/%s sync"
|
|
||||||
info:
|
|
||||||
description: "Print general plugin info"
|
|
||||||
usage: "/%s info"
|
|
||||||
verbose:
|
|
||||||
description: "Manage verbose permission checking"
|
|
||||||
usage: "/%s verbose <true|false> [filter]"
|
|
||||||
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]"
|
|
||||||
args:
|
|
||||||
"selection": "the root of the tree. specify \".\" to include all permissions"
|
|
||||||
"max level": "how many branch levels should be returned"
|
|
||||||
"player": "the name of an online player to check against"
|
|
||||||
search:
|
|
||||||
description: "Search for users/groups with a specific permission"
|
|
||||||
usage: "/%s search <permission>"
|
|
||||||
args:
|
|
||||||
"permission": "the permission to search for"
|
|
||||||
"page": "the page to view"
|
|
||||||
check:
|
|
||||||
description: "Perform a standard permission check on an online player"
|
|
||||||
usage: "/%s check <user> <permission>"
|
|
||||||
args:
|
|
||||||
"user": "the user to check"
|
|
||||||
"permission": "the permission to check for"
|
|
||||||
network-sync:
|
|
||||||
description: "Sync changes with the storage and request that all other servers on the network do the same"
|
|
||||||
usage: "/%s networksync"
|
|
||||||
import:
|
|
||||||
description: "Import data from a file"
|
|
||||||
usage: "/%s import <file>"
|
|
||||||
args:
|
|
||||||
"file": "the file to import from"
|
|
||||||
export:
|
|
||||||
description: "Export data to a file"
|
|
||||||
usage: "/%s export <file>"
|
|
||||||
args:
|
|
||||||
"file": "the file to export to"
|
|
||||||
reload-config:
|
|
||||||
description: "Reload some of the config options"
|
|
||||||
usage: "/%s reloadconfig"
|
|
||||||
bulk-update:
|
|
||||||
description: "Execute bulk change queries on all data"
|
|
||||||
usage: "/%s bulkupdate"
|
|
||||||
args:
|
|
||||||
"data type": "the type of data being changed. ('all', 'users' or 'groups')"
|
|
||||||
"action": "the action to perform on the data. ('update' or 'delete')"
|
|
||||||
"action field": "the field to act upon. only required for 'update'. ('permission', 'server' or 'world')"
|
|
||||||
"action value": "the value to replace with. only required for 'update'."
|
|
||||||
"constraint...": "the constraints required for the update"
|
|
||||||
migration:
|
|
||||||
description: "Migration commands"
|
|
||||||
usage: "/%s migration"
|
|
||||||
apply-edits:
|
|
||||||
description: "Applies permission changes made from the web editor"
|
|
||||||
usage: "/%s applyedits <code> [target]"
|
|
||||||
args:
|
|
||||||
"code": "the unique code for the data"
|
|
||||||
"target": "who to apply the data to"
|
|
||||||
create-group:
|
|
||||||
description: "Create a new group"
|
|
||||||
usage: "/%s creategroup <group>"
|
|
||||||
args:
|
|
||||||
"name": "the name of the group"
|
|
||||||
delete-group:
|
|
||||||
description: "Delete a group"
|
|
||||||
usage: "/%s deletegroup <group>"
|
|
||||||
args:
|
|
||||||
"name": "the name of the group"
|
|
||||||
list-groups:
|
|
||||||
description: "List all groups on the platform"
|
|
||||||
usage: "/%s listgroups"
|
|
||||||
create-track:
|
|
||||||
description: "Create a new track"
|
|
||||||
usage: "/%s createtrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "the name of the track"
|
|
||||||
delete-track:
|
|
||||||
description: "Delete a track"
|
|
||||||
usage: "/%s deletetrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "the name of the track"
|
|
||||||
list-tracks:
|
|
||||||
description: "List all tracks on the platform"
|
|
||||||
usage: "/%s listtracks"
|
|
||||||
user-info:
|
|
||||||
description: "Shows info about the user"
|
|
||||||
user-switchprimarygroup:
|
|
||||||
description: "Switches the user's primary group"
|
|
||||||
args:
|
|
||||||
"group": "the group to switch to"
|
|
||||||
user-promote:
|
|
||||||
description: "Promotes the user up a track"
|
|
||||||
args:
|
|
||||||
"track": "the track to promote the user up"
|
|
||||||
"context...": "the contexts to promote the user in"
|
|
||||||
user-demote:
|
|
||||||
description: "Demotes the user down a track"
|
|
||||||
args:
|
|
||||||
"track": "the track to demote the user down"
|
|
||||||
"context...": "the contexts to demote the user in"
|
|
||||||
user-clone:
|
|
||||||
description: "Clone the user"
|
|
||||||
args:
|
|
||||||
"user": "the name/uuid of the user to clone onto"
|
|
||||||
group-info:
|
|
||||||
description: "Gives info about the group"
|
|
||||||
group-listmembers:
|
|
||||||
description: "Show the users/groups who inherit from this group"
|
|
||||||
args:
|
|
||||||
"page": "the page to view"
|
|
||||||
group-setweight:
|
|
||||||
description: "Set the groups weight"
|
|
||||||
args:
|
|
||||||
"weight": "the weight to set"
|
|
||||||
group-set-display-name:
|
|
||||||
description: "Set the groups display name"
|
|
||||||
args:
|
|
||||||
"name": "the name to set"
|
|
||||||
group-rename:
|
|
||||||
description: "Rename the group"
|
|
||||||
args:
|
|
||||||
"name": "the new name"
|
|
||||||
group-clone:
|
|
||||||
description: "Clone the group"
|
|
||||||
args:
|
|
||||||
"name": "the name of the group to clone onto"
|
|
||||||
holder-editor:
|
|
||||||
description: "Opens the web permission editor"
|
|
||||||
holder-showtracks:
|
|
||||||
description: "Lists the tracks that the object is on"
|
|
||||||
holder-clear:
|
|
||||||
description: "Removes all permissions, parents and meta"
|
|
||||||
args:
|
|
||||||
"context...": "the contexts to filter by"
|
|
||||||
permission:
|
|
||||||
description: "Edit permissions"
|
|
||||||
parent:
|
|
||||||
description: "Edit inheritances"
|
|
||||||
meta:
|
|
||||||
description: "Edit metadata values"
|
|
||||||
permission-info:
|
|
||||||
description: "Lists the permission nodes the object has"
|
|
||||||
args:
|
|
||||||
"page": "the page to view"
|
|
||||||
"sort mode": "how to sort the entries"
|
|
||||||
permission-set:
|
|
||||||
description: "Sets a permission for the object"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to set"
|
|
||||||
"true|false": "the value of the node"
|
|
||||||
"context...": "the contexts to add the permission in"
|
|
||||||
permission-unset:
|
|
||||||
description: "Unsets a permission for the object"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to unset"
|
|
||||||
"context...": "the contexts to remove the permission in"
|
|
||||||
permission-settemp:
|
|
||||||
description: "Sets a permission for the object temporarily"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to set"
|
|
||||||
"true|false": "the value of the node"
|
|
||||||
"duration": "the duration until the permission node expires"
|
|
||||||
"context...": "the contexts to add the permission in"
|
|
||||||
permission-unsettemp:
|
|
||||||
description: "Unsets a temporary permission for the object"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to unset"
|
|
||||||
"context...": "the contexts to remove the permission in"
|
|
||||||
permission-check:
|
|
||||||
description: "Checks to see if the object has a certain permission node"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to check for"
|
|
||||||
"context...": "the contexts to check in"
|
|
||||||
permission-check-inherits:
|
|
||||||
description: "Checks to see if the object inherits a certain permission node"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to check for"
|
|
||||||
"context...": "the contexts to check in"
|
|
||||||
parent-info:
|
|
||||||
description: "Lists the groups that this object inherits from"
|
|
||||||
args:
|
|
||||||
"page": "the page to view"
|
|
||||||
"sort mode": "how to sort the entries"
|
|
||||||
parent-set:
|
|
||||||
description: "Removes all other groups the object inherits already and adds them to the one given"
|
|
||||||
args:
|
|
||||||
"group": "the group to set to"
|
|
||||||
"context...": "the contexts to set the group in"
|
|
||||||
parent-add:
|
|
||||||
description: "Sets another group for the object to inherit permissions from"
|
|
||||||
args:
|
|
||||||
"group": "the group to inherit from"
|
|
||||||
"context...": "the contexts to inherit the group in"
|
|
||||||
parent-remove:
|
|
||||||
description: "Removes a previously set inheritance rule"
|
|
||||||
args:
|
|
||||||
"group": "the group to remove"
|
|
||||||
"context...": "the contexts to remove the group in"
|
|
||||||
parent-set-track:
|
|
||||||
description: "Removes all other groups the object inherits from already on the given track and adds them to the one given"
|
|
||||||
args:
|
|
||||||
"track": "the track to set on"
|
|
||||||
"group": "the group to set to, or a number relating to the position of the group on the given track"
|
|
||||||
"context...": "the contexts to set the group in"
|
|
||||||
parent-add-temp:
|
|
||||||
description: "Sets another group for the object to inherit permissions from temporarily"
|
|
||||||
args:
|
|
||||||
"group": "the group to inherit from"
|
|
||||||
"duration": "the duration of the group membership"
|
|
||||||
"context...": "the contexts to inherit the group in"
|
|
||||||
parent-remove-temp:
|
|
||||||
description: "Removes a previously set temporary inheritance rule"
|
|
||||||
args:
|
|
||||||
"group": "the group to remove"
|
|
||||||
"context...": "the contexts to remove the group in"
|
|
||||||
parent-clear:
|
|
||||||
description: "Clears all parents"
|
|
||||||
args:
|
|
||||||
"context...": "the contexts to filter by"
|
|
||||||
parent-clear-track:
|
|
||||||
description: "Clears all parents on a given track"
|
|
||||||
args:
|
|
||||||
"track": "the track to remove on"
|
|
||||||
"context...": "the contexts to filter by"
|
|
||||||
meta-info:
|
|
||||||
description: "Shows all chat meta"
|
|
||||||
meta-set:
|
|
||||||
description: "Sets a meta value"
|
|
||||||
args:
|
|
||||||
"key": "the key to set"
|
|
||||||
"value": "the value to set"
|
|
||||||
"context...": "the contexts to add the meta pair in"
|
|
||||||
meta-unset:
|
|
||||||
description: "Unsets a meta value"
|
|
||||||
args:
|
|
||||||
"key": "the key to unset"
|
|
||||||
"context...": "the contexts to remove the meta pair in"
|
|
||||||
meta-settemp:
|
|
||||||
description: "Sets a meta value temporarily"
|
|
||||||
args:
|
|
||||||
"key": "the key to set"
|
|
||||||
"value": "the value to set"
|
|
||||||
"duration": "the duration until the meta value expires"
|
|
||||||
"context...": "the contexts to add the meta pair in"
|
|
||||||
meta-unsettemp:
|
|
||||||
description: "Unsets a temporary meta value"
|
|
||||||
args:
|
|
||||||
"key": "the key to unset"
|
|
||||||
"context...": "the contexts to remove the meta pair in"
|
|
||||||
meta-addprefix:
|
|
||||||
description: "Adds a prefix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to add the prefix at"
|
|
||||||
"prefix": "the prefix string"
|
|
||||||
"context...": "the contexts to add the prefix in"
|
|
||||||
meta-addsuffix:
|
|
||||||
description: "Adds a suffix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to add the suffix at"
|
|
||||||
"suffix": "the suffix string"
|
|
||||||
"context...": "the contexts to add the suffix in"
|
|
||||||
meta-removeprefix:
|
|
||||||
description: "Removes a prefix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to remove the prefix at"
|
|
||||||
"prefix": "the prefix string"
|
|
||||||
"context...": "the contexts to remove the prefix in"
|
|
||||||
meta-removesuffix:
|
|
||||||
description: "Removes a suffix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to remove the suffix at"
|
|
||||||
"suffix": "the suffix string"
|
|
||||||
"context...": "the contexts to remove the suffix in"
|
|
||||||
meta-addtemp-prefix:
|
|
||||||
description: "Adds a prefix temporarily"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to add the prefix at"
|
|
||||||
"prefix": "the prefix string"
|
|
||||||
"duration": "the duration until the prefix expires"
|
|
||||||
"context...": "the contexts to add the prefix in"
|
|
||||||
meta-addtemp-suffix:
|
|
||||||
description: "Adds a suffix temporarily"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to add the suffix at"
|
|
||||||
"suffix": "the suffix string"
|
|
||||||
"duration": "the duration until the suffix expires"
|
|
||||||
"context...": "the contexts to add the suffix in"
|
|
||||||
meta-removetemp-prefix:
|
|
||||||
description: "Removes a temporary prefix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to remove the prefix at"
|
|
||||||
"prefix": "the prefix string"
|
|
||||||
"context...": "the contexts to remove the prefix in"
|
|
||||||
meta-removetemp-suffix:
|
|
||||||
description: "Removes a temporary suffix"
|
|
||||||
args:
|
|
||||||
"priority": "the priority to remove the suffix at"
|
|
||||||
"suffix": "the suffix string"
|
|
||||||
"context...": "the contexts to remove the suffix in"
|
|
||||||
meta-clear:
|
|
||||||
description: "Clears all meta"
|
|
||||||
args:
|
|
||||||
"type": "the type of meta to remove"
|
|
||||||
"context...": "the contexts to filter by"
|
|
||||||
track-info:
|
|
||||||
description: "Gives info about the track"
|
|
||||||
track-append:
|
|
||||||
description: "Appends a group onto the end of the track"
|
|
||||||
args:
|
|
||||||
"group": "the group to append"
|
|
||||||
track-insert:
|
|
||||||
description: "Inserts a group at a given position along the track"
|
|
||||||
args:
|
|
||||||
"group": "the group to insert"
|
|
||||||
"position": "the position to insert the group at (the first position on the track is 1)"
|
|
||||||
track-remove:
|
|
||||||
description: "Removes a group from the track"
|
|
||||||
args:
|
|
||||||
"group": "the group to remove"
|
|
||||||
track-clear:
|
|
||||||
description: "Clears the groups on the track"
|
|
||||||
track-rename:
|
|
||||||
description: "Rename the track"
|
|
||||||
args:
|
|
||||||
"name": "the new name"
|
|
||||||
track-clone:
|
|
||||||
description: "Clone the track"
|
|
||||||
args:
|
|
||||||
"name": "the name of the track to clone onto"
|
|
||||||
log-recent:
|
|
||||||
description: "View recent actions"
|
|
||||||
args:
|
|
||||||
"user": "the name/uuid of the user to filter by"
|
|
||||||
"page": "the page number to view"
|
|
||||||
log-search:
|
|
||||||
description: "Search the log for an entry"
|
|
||||||
args:
|
|
||||||
"query": "the query to search by"
|
|
||||||
"page": "the page number to view"
|
|
||||||
log-notify:
|
|
||||||
description: "Toggle log notifications"
|
|
||||||
args:
|
|
||||||
"on|off": "whether to toggle on or off"
|
|
||||||
log-user-history:
|
|
||||||
description: "View a user's history"
|
|
||||||
args:
|
|
||||||
"user": "the name/uuid of the user"
|
|
||||||
"page": "the page number to view"
|
|
||||||
log-group-history:
|
|
||||||
description: "View an group's history"
|
|
||||||
args:
|
|
||||||
"group": "the name of the group"
|
|
||||||
"page": "the page number to view"
|
|
||||||
log-track-history:
|
|
||||||
description: "View a track's history"
|
|
||||||
args:
|
|
||||||
"track": "the name of the track"
|
|
||||||
"page": "the page number to view"
|
|
||||||
sponge:
|
|
||||||
description: "Edit extra Sponge data"
|
|
||||||
usage: "/%s sponge <collection> <subject>"
|
|
||||||
args:
|
|
||||||
"collection": "the collection to query"
|
|
||||||
"subject": "the subject to modify"
|
|
||||||
sponge-permission-info:
|
|
||||||
description: "Shows info about the subject's permissions"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to filter by"
|
|
||||||
sponge-permission-set:
|
|
||||||
description: "Sets a permission for the Subject"
|
|
||||||
args:
|
|
||||||
"node": "the permission node to set"
|
|
||||||
"tristate": "the value to set the permission to"
|
|
||||||
"contexts...": "the contexts to set the permission in"
|
|
||||||
sponge-permission-clear:
|
|
||||||
description: "Clears the Subjects permissions"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to clear permissions in"
|
|
||||||
sponge-parent-info:
|
|
||||||
description: "Shows info about the subject's parents"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to filter by"
|
|
||||||
sponge-parent-add:
|
|
||||||
description: "Adds a parent to the Subject"
|
|
||||||
args:
|
|
||||||
"collection": "the subject collection where the parent Subject is"
|
|
||||||
"subject": "the name of the parent Subject"
|
|
||||||
"contexts...": "the contexts to add the parent in"
|
|
||||||
sponge-parent-remove:
|
|
||||||
description: "Removes a parent from the Subject"
|
|
||||||
args:
|
|
||||||
"collection": "the subject collection where the parent Subject is"
|
|
||||||
"subject": "the name of the parent Subject"
|
|
||||||
"contexts...": "the contexts to remove the parent in"
|
|
||||||
sponge-parent-clear:
|
|
||||||
description: "Clears the Subjects parents"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to clear parents in"
|
|
||||||
sponge-option-info:
|
|
||||||
description: "Shows info about the subject's options"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to filter by"
|
|
||||||
sponge-option-set:
|
|
||||||
description: "Sets an option for the Subject"
|
|
||||||
args:
|
|
||||||
"key": "the key to set"
|
|
||||||
"value": "the value to set the key to"
|
|
||||||
"contexts...": "the contexts to set the option in"
|
|
||||||
sponge-option-unset:
|
|
||||||
description: "Unsets an option for the Subject"
|
|
||||||
args:
|
|
||||||
"key": "the key to unset"
|
|
||||||
"contexts...": "the contexts to unset the key in"
|
|
||||||
sponge-option-clear:
|
|
||||||
description: "Clears the Subjects options"
|
|
||||||
args:
|
|
||||||
"contexts...": "the contexts to clear options in"
|
|
||||||
migration-command:
|
|
||||||
description: "Migration command"
|
|
||||||
migration-groupmanager:
|
|
||||||
description: "Migration command"
|
|
||||||
args:
|
|
||||||
"migrate as global": "if world permissions should be ignored, and just migrated as global"
|
|
||||||
migration-powerfulperms:
|
|
||||||
description: "Migration command"
|
|
||||||
args:
|
|
||||||
"address": "the address of the PP database"
|
|
||||||
"database": "the name of the PP database"
|
|
||||||
"username": "the username to log into the DB"
|
|
||||||
"password": "the password to log into the DB"
|
|
||||||
"db table": "the name of the PP table where player data is stored"
|
|
@ -1,338 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: es_ES (Spanish)
|
|
||||||
# Author: Jose Chavez (Twitter: @JoCHav3z)
|
|
||||||
|
|
||||||
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[ADVERTENCIA] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ERROR] {0}"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&aConectado"
|
|
||||||
player-offline: "&cDesconectado"
|
|
||||||
loading-error: "La Informacion de los permisos no pudo ser cargada. Por favor contacte al administrador."
|
|
||||||
op-disabled: "&bEl sistema OP de Vanilla esta deshabilitado en este servidor."
|
|
||||||
op-disabled-sponge: "&2El estado de operador del servidor no tiene efecto cuando un plugin de permisos esta instalado. Por favor edite la informacion de usuario directamente."
|
|
||||||
log: "&3LOG &3&l> {0}"
|
|
||||||
export-log: "&3EXPORTAR &3&l> &f{0}"
|
|
||||||
export-log-progress: "&3EXPORTADO &3&l> &7{0}"
|
|
||||||
migration-log: "&3MIGRACION &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3MIGRADO &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "Comando no reconocido."
|
|
||||||
command-no-permission: "¡No tienes permiso de usar este comando!"
|
|
||||||
already-haspermission: "{0} ¡Ya tienes este permiso!"
|
|
||||||
does-not-havepermission: "{0} No tienes este permiso establecido."
|
|
||||||
already-has-temp-permission: "{0} ¡Ya tienes este permiso establecido temporalmente!"
|
|
||||||
does-not-have-temp-permission: "{0} No tienes este permiso establecido temporalmente."
|
|
||||||
user-not-found: "&bNo se pudo encontrar al usuario."
|
|
||||||
user-not-online: "&bUsuario &a{0}&b no esta conectado."
|
|
||||||
user-no-data: "&bUsuario &a{0}&b no tiene ningún dato cargado."
|
|
||||||
user-save-success: "&7(Los datos del usuario se guardaron en el almacenamiento)"
|
|
||||||
user-save-error: "Se ha producido un error al guardar el usuario."
|
|
||||||
user-create-fail: "Se produjo un error al crear un nuevo usuario."
|
|
||||||
group-not-found: "&bEl Grupo no se pudo encontrar."
|
|
||||||
group-save-success: "&7(Los datos del grupo se guardaron en el almacenamiento)"
|
|
||||||
group-save-error: "Se ha producido un error al guardar el grupo."
|
|
||||||
track-not-found: "&bNo se pudo encontrar la pista."
|
|
||||||
track-save-success: "&7(Los datos de la pista se guardaron en el almacenamiento)"
|
|
||||||
track-save-error: "Se ha producido un error al guardar la pista."
|
|
||||||
user-invalid-entry: "&d{0}&c El username/uuid no es valido."
|
|
||||||
group-invalid-entry: "Los nombres de grupo sólo pueden contener caracteres alfanuméricos."
|
|
||||||
track-invalid-entry: "Los nombres de pista sólo pueden contener caracteres alfanuméricos."
|
|
||||||
server-invalid-entry: "Los nombres de servidor sólo pueden contener caracteres alfanuméricos."
|
|
||||||
use-inherit-command: "Usa el comando 'parent add' y 'parent remove' en vez de especificar el nodo."
|
|
||||||
verbose-invalid-filter: "&cFiltro Verbose invalido: &f{0}"
|
|
||||||
verbose-on: "&bEl chequeo Verbose de salida se ha establecido en &aTRUE &bpara todos los permisos."
|
|
||||||
verbose-on-query: "&bEl chequeo Verbose de salida que se establecio en &aTRUE &bpara los permisos se ha pareado con los siguientes filtros: &f{0}"
|
|
||||||
verbose-off: "&bEl chequeo Verbose de salida que se establecio en &cFALSE&b."
|
|
||||||
verbose-recording-on: "&bGrabacion de Verbose establecida en &aTRUE &bpara todos los permisos."
|
|
||||||
verbose-recording-on-query: "&bGrabacion de Verbose establecida en &aTRUE &bpara los permisos se ha pareado con los siguientes filtros: &f{0}"
|
|
||||||
verbose-recording-upload-start: "&bGrabacion de Verbose se ha deshabilitado. Cargando resultados..."
|
|
||||||
verbose-recording-url: "&aURL de resultados de Verbose:"
|
|
||||||
tree-upload-start: "&bGenerando arbol de permisos..."
|
|
||||||
tree-empty: "&aNo se puede generar el árbol. No se encontraron resultados."
|
|
||||||
tree-url: "&aURL de arbol de permisos:"
|
|
||||||
search-searching: "&aBúsqueda de usuarios y grupos con &b{0}&a..."
|
|
||||||
search-result: "&aEncontradas &b{0}&a entradas por parte de &b{1}&a usuarios y &b{2}&a grupos."
|
|
||||||
search-showing-users: "&bMostrando entradas del usuario:"
|
|
||||||
search-showing-groups: "&bMostrando entradas del grupo:"
|
|
||||||
search-showing-users-with-page: "&bMostrando entradas del usuario: {0}"
|
|
||||||
search-showing-groups-with-page: "&bMostrando entradas del grupo: {0}"
|
|
||||||
check-result: "&aResultado de la comprobación del permiso en el usuario &b{0}&a para permiso &b{1}&a: &f{2}"
|
|
||||||
create-success: "&b{0}&a se creó correctamente."
|
|
||||||
delete-success: "&b{0}&a fue eliminado correctamente."
|
|
||||||
rename-success: "&b{0}&a fue exitosamente renombrado a &b{1}&a."
|
|
||||||
clone-success: "&b{0}&a fue clonado con éxito en &b{1}&a."
|
|
||||||
already-inherits: "{0} ya hereda '{1}'."
|
|
||||||
does-not-inherit: "{0} no hereda '{1}'."
|
|
||||||
already-temp-inherits: "{0} ya lo heredo temporalmente a '{1}'."
|
|
||||||
does-not-temp-inherit: "{0} no lo heredo temporalmente a '{1}'."
|
|
||||||
track-already-contains: "La pista {0} ya contiene el grupo '{1}'."
|
|
||||||
track-does-not-contain: "La pista {0} no contiene el grupo '{1}'."
|
|
||||||
track-ambiguous-call: "El usuario especificado es miembro de varios grupos en esta pista. No se puede determinar su ubicación."
|
|
||||||
group-already-exists: "¡Ese grupo ya existe!"
|
|
||||||
group-does-not-exist: "¡Ese grupo no existe!"
|
|
||||||
group-load-error: "Ocurrió un error inesperado. No se pudo cargar el grupo."
|
|
||||||
groups-load-error: "Ocurrió un error inesperado. No se pueden cargar todos los grupos."
|
|
||||||
track-already-exists: "¡La pista ya existe!"
|
|
||||||
track-does-not-exist: "¡La pista no existe!"
|
|
||||||
track-load-error: "Ocurrió un error inesperado. No se pudo cargar la pista."
|
|
||||||
tracks-load-error: "Ocurrió un error inesperado. No se pueden cargar todas las pistas."
|
|
||||||
track-empty: "La pista no se puede utilizar porque está vacía o contiene sólo un grupo."
|
|
||||||
update-task-request: "&bActualizar tarea programada."
|
|
||||||
update-task-complete: "&aLa actualizacion de la tarea a finalizado."
|
|
||||||
update-task-complete-network: "&aLa actualizacion de la tarea a finalizado. Ahora intentando enviar a otros servidores."
|
|
||||||
update-task-push-success: "&aOtros servidores fueron notificados vía &b{0} Mensajería &aexitoxamente."
|
|
||||||
update-task-push-failure: "&cError al empujar cambios a otros servidores."
|
|
||||||
update-task-push-failure-not-setup: "&cError al presionar los cambios a otros servidores. No se ha configurado un servicio de mensajería."
|
|
||||||
reload-config-success: "&aSe ha vuelto a cargar el archivo de configuración. &7(Algunas opciones sólo se aplicarán después de que el servidor se haya reiniciado.)"
|
|
||||||
info: >
|
|
||||||
{PREFIX}&2Running &bLuckPerms v{0}&2 by &bLuck&2.\n
|
|
||||||
{PREFIX}&f- &3Platform: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Storage Method: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Server Name: &f{3}\n
|
|
||||||
{PREFIX}&f- &3Sync Interval: &a{4} &fminutes\n
|
|
||||||
{PREFIX}&f- &3Messaging Service: &f{5}\n
|
|
||||||
{PREFIX}&f- &bCounts:\n
|
|
||||||
{PREFIX}&f- &3Online Players: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Loaded Users: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Loaded Groups: &a{8}\n
|
|
||||||
{PREFIX}&f- &3Loaded Tracks: &a{9}\n
|
|
||||||
{PREFIX}&f- &3Log size: &a{10}\n
|
|
||||||
{PREFIX}&f- &3UUID Cache size: &a{11}\n
|
|
||||||
{PREFIX}&f- &3Translations loaded: &a{12}\n
|
|
||||||
{PREFIX}&f- &3Pre-process contexts: &a{13}\n
|
|
||||||
{PREFIX}&f- &3Context Calculators: &a{14}\n
|
|
||||||
{PREFIX}&f- &3Unique permissions: &a{15}\n
|
|
||||||
{PREFIX}&f- &bConfiguration:\n
|
|
||||||
{PREFIX}&f- &3Use Server UUIDs: {16}\n
|
|
||||||
{PREFIX}&f- &bPermission Calculation:\n
|
|
||||||
{PREFIX}&f- &3Including Global: {17}\n
|
|
||||||
{PREFIX}&f- &3Including Global World: {18}\n
|
|
||||||
{PREFIX}&f- &3Applying Global Groups: {19}\n
|
|
||||||
{PREFIX}&f- &3Applying Global World Groups: {20}\n
|
|
||||||
{PREFIX}&f- &3Applying Wildcards: {21}\n
|
|
||||||
{PREFIX}&f- &3Applying Regex: {22}\n
|
|
||||||
{PREFIX}&f- &3Applying Shorthand: {23}
|
|
||||||
create-group-error: "Se produjo un error al crear el grupo."
|
|
||||||
delete-group-error: "Se produjo un error al eliminar el grupo."
|
|
||||||
delete-group-error-default: "No puede eliminar el grupo predeterminado."
|
|
||||||
groups-list: "&aGrupos: {0}"
|
|
||||||
create-track-error: "Se produjo un error al crear la pista."
|
|
||||||
delete-track-error: "Se produjo un error al eliminar la pista."
|
|
||||||
tracks-list: "&aPistas: {0}"
|
|
||||||
listnodes: "&b{0}'s Nodos:"
|
|
||||||
listnodes-with-page: "&b{0}'s Nodos: {1}"
|
|
||||||
listnodes-temp: >
|
|
||||||
&b{0}'s Temporary Nodes:\n
|
|
||||||
{1}
|
|
||||||
listparents: >
|
|
||||||
&b{0}'s Parent Groups:\n
|
|
||||||
{1}
|
|
||||||
listparents-temp: >
|
|
||||||
&b{0}'s Temporary Parent Groups:\n
|
|
||||||
{1}
|
|
||||||
listgroups: >
|
|
||||||
&b{0}'s Groups:\n
|
|
||||||
{1}
|
|
||||||
listgroups-temp: >
|
|
||||||
&b{0}'s Temporary Groups:\n
|
|
||||||
{1}
|
|
||||||
list-tracks: >
|
|
||||||
&b{0}'s Tracks:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "{0} no está en ninguna pista."
|
|
||||||
setpermission-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a."
|
|
||||||
setpermission-server-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a en el servidor &b{3}&a."
|
|
||||||
setpermission-server-world-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
setpermission-temp-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a por una duracion de &b{3}&a."
|
|
||||||
setpermission-temp-server-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a en el servidor &b{3}&a por una duracion de &b{4}&a."
|
|
||||||
setpermission-temp-server-world-success: "&aEstablecer &b{0}&a a &b{1}&a para &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a, por una duracion de &b{5}&a."
|
|
||||||
unsetpermission-success: "&aDesestablecer &b{0}&a para &b{1}&a."
|
|
||||||
unsetpermission-server-success: "&aDesestablecer &b{0}&a para &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unsetpermission-server-world-success: "&aDesestablecer &b{0}&a para &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
unset-temp-permission-success: "&aDesestablecer temporalmente el permiso &b{0}&a para &b{1}&a."
|
|
||||||
unset-temp-permission-server-success: "&aDesestablecer temporalmente el permiso &b{0}&a para &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unset-temp-permission-server-world-success: "&aDesestablecer temporalmente el permiso &b{0}&a para &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
set-inherit-success: "&b{0}&a ahora hereda los permisos de &b{1}&a."
|
|
||||||
set-inherit-server-success: "&b{0}&a ahora hereda los permisos de &b{1}&a en el servidor &b{2}&a."
|
|
||||||
set-inherit-server-world-success: "&b{0}&a ahora hereda los permisos de &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
set-parent-success: "&b{0}&a sus grupos parentales existentes han sido borrados, y ahora solo heredan &b{1}&a."
|
|
||||||
set-parent-server-success: "&b{0}&a sus grupos parentales existentes han sido borrados, y ahora solo heredan &b{1}&a en el servidor &b{2}&a."
|
|
||||||
set-parent-server-world-success: "&b{0}&a sus grupos parentales existentes han sido borrados, y ahora solo heredan &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
set-temp-inherit-success: "&b{0}&a ahora heredan permisos de &b{1}&a por una duracion de &b{2}&a."
|
|
||||||
set-temp-inherit-server-success: "&b{0}&a ahora heredan permisos de &b{1}&a en el servidor &b{2}&a por una duracion de &b{3}&a."
|
|
||||||
set-temp-inherit-server-world-success: "&b{0}&a ahora heredan permisos de &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a, por una duracion de &b{4}&a."
|
|
||||||
unset-inherit-success: "&b{0}&a ya no hereda los permisos de &b{1}&a."
|
|
||||||
unset-inherit-server-success: "&b{0}&a ya no hereda los permisos de &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unset-inherit-server-world-success: "&b{0}&a ya no hereda los permisos de &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a ya no hereda temporalmente los permisos de &b{1}&a."
|
|
||||||
unset-temp-inherit-server-success: "&b{0}&a ya no hereda temporalmente los permisos &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unset-temp-inherit-server-world-success: "&b{0}&a ya no hereda temporalmente los permisos &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
clear-success: "&b{0}&a's permisos fueron borrados. (&b{1}&a nodos fueron removidos.)"
|
|
||||||
clear-success-singular: "&b{0}&a's permisos fueron borrados. (&b{1}&a nodo fue removido.)"
|
|
||||||
parent-clear-success: "&b{0}&a's los padres fueron eliminados. (&b{1}&a nodos fueron removidos.)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a's los padres fueron eliminados. (&b{1}&a nodo fue removido.)"
|
|
||||||
meta-clear-success: "&b{0}&a's meta fue eliminada. (&b{1}&a nodos fueron removidos.)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a's meta fue eliminada. (&b{1}&a nodo fue removido.)"
|
|
||||||
illegal-date-error: "No se pudo analizar la fecha '{0}'."
|
|
||||||
past-date-error: "¡No puedes fijar una fecha en el pasado!"
|
|
||||||
chat-meta-prefix-header: "&b{0}'s Prefijos"
|
|
||||||
chat-meta-suffix-header: "&b{0}'s Sufijos"
|
|
||||||
meta-header: "&b{0}'s Meta"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f\"{1}&f\" &8(&7heredado de &a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f\"{1}&f\" &8(&7heredado de &a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7heredado de &a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7heredado de &a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0} no tiene prefijos."
|
|
||||||
chat-meta-suffix-none: "&b{0} no tiene sufijos."
|
|
||||||
meta-none: "&b{0} no tiene meta."
|
|
||||||
meta-invalid-priority: "Prioridad no válida '{0}'. Se esperaba un número."
|
|
||||||
already-has-prefix: "{0} ya tiene ese prefijo establecido."
|
|
||||||
already-has-suffix: "{0} ya tiene ese sufijo establecido."
|
|
||||||
does-not-have-prefix: "{0} no tiene ese prefijo establecido."
|
|
||||||
does-not-have-suffix: "{0} no tiene ese sufijo establecido."
|
|
||||||
addprefix-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a establecido como prioridad de &b{2}&a."
|
|
||||||
addprefix-server-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a establecido como prioridad de &b{2}&a en el servidor &b{3}&a."
|
|
||||||
addprefix-server-world-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a establecido como prioridad de &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
removeprefix-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido."
|
|
||||||
removeprefix-server-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a."
|
|
||||||
removeprefix-server-world-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
addsuffix-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a."
|
|
||||||
addsuffix-server-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a."
|
|
||||||
addsuffix-server-world-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
removesuffix-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido."
|
|
||||||
removesuffix-server-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a."
|
|
||||||
removesuffix-server-world-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
add-temp-prefix-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a por una duracion de &b{3}&a."
|
|
||||||
add-temp-prefix-server-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a, por una duracion de &b{4}&a."
|
|
||||||
add-temp-prefix-server-world-success: "&b{0}&a tiene el prefijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a, por una duracion de &b{5}&a."
|
|
||||||
remove-temp-prefix-success: "&b{0}&a tiene temporalmente el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido."
|
|
||||||
remove-temp-prefix-server-success: "&b{0}&a tiene temporalmente el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a."
|
|
||||||
remove-temp-prefix-server-world-success: "&b{0}&a tiene temporalmente el prefijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
add-temp-suffix-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a por una duracion de &b{3}&a."
|
|
||||||
add-temp-suffix-server-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a, por una duracion de &b{4}&a."
|
|
||||||
add-temp-suffix-server-world-success: "&b{0}&a tiene el sufijo &f\"{1}&f\"&a establecido en prioridad de &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a, por una duracion de &b{5}&a."
|
|
||||||
remove-temp-suffix-success: "&b{0}&a tiene temporalmente el sufijo &f\"{1}&f\"&a en prioridad de &b{1}&a removido."
|
|
||||||
remove-temp-suffix-server-success: "&b{0}&a tiene temporalmente el sufijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a."
|
|
||||||
remove-temp-suffix-server-world-success: "&b{0}&a tiene temporalmente el sufijo &f\"{1}&f\"&a en prioridad de &b{2}&a removido en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
already-has-meta: "{0} ya tiene ese par de valores de llave meta establecido."
|
|
||||||
set-meta-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a."
|
|
||||||
set-meta-server-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a en el servidor &b{3}&a."
|
|
||||||
set-meta-server-world-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
set-meta-temp-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a por una duracion de &b{3}&a."
|
|
||||||
set-meta-temp-server-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a en el servidor &b{3}&a por una duracion de &b{4}&a."
|
|
||||||
set-meta-temp-server-world-success: "&aEstablecer el valor meta para la llave &f\"{0}&f\"&a a &f\"{1}&f\"&a para &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a, por una duracion de &b{5}&a."
|
|
||||||
unset-meta-success: "&aDesestablecer el valor meta con la llave &f\"{0}&f\"&a para &b{1}&a."
|
|
||||||
unset-meta-server-success: "&aDesestablecer el valor meta con la llave &f\"{0}&f\"&a para &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unset-meta-server-world-success: "&aDesestablecer el valor meta con la llave &f\"{0}&f\"&a for &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
unset-meta-temp-success: "&aDesestablecer temporalmente el valor meta con la llave &f\"{0}&f\"&a para &b{1}&a."
|
|
||||||
unset-meta-temp-server-success: "&aDesestablecer temporalmente el valor meta con la llave &f\"{0}&f\"&a para &b{1}&a en el servidor &b{2}&a."
|
|
||||||
unset-meta-temp-server-world-success: "&aDesestablecer temporalmente el valor meta con la llave &f\"{0}&f\"&a para &b{1}&a en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
bulk-change-type-error: "Tipo no válido. Se estaba esperando 'server' o 'world'."
|
|
||||||
bulk-change-success: "&aEl cambio masivo fue aplicado correctamente. {0} los registros fueron cambiados."
|
|
||||||
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}&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}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &aCached Data:\n
|
|
||||||
{PREFIX}&f- &3Is Loaded: {0}\n
|
|
||||||
{PREFIX}&f- &3Current Contexts: {1}\n
|
|
||||||
{PREFIX}&f- &3Current Prefix: {2}\n
|
|
||||||
{PREFIX}&f- &3Current Suffix: {3}
|
|
||||||
info-parent-header: "&f- &aGrupos Parentales:"
|
|
||||||
info-temp-parent-header: "&f- &aGrupos Temporalmente Parentales:"
|
|
||||||
user-getuuid: "&bEl UUID de &b{0}&b es &b{1}&b."
|
|
||||||
user-removegroup-error-primary: "No puede eliminar un usuario de su grupo principal."
|
|
||||||
user-primarygroup-success: "&b{0}&a's grupo primario se estableció &b{1}&a."
|
|
||||||
user-primarygroup-warn-option: "&cAdvertencia: El método de cálculo de grupo primario utilizado por este servidor &7({0}) &cpuede no reflejar este cambio."
|
|
||||||
user-primarygroup-error-alreadyhas: "El usuario ya tiene este grupo configurado como su grupo principal."
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a ya no era miembro de &b{1}&a, agregándolos ahora."
|
|
||||||
user-track-error-not-contain-group: "El usuario especificado ya no está en ningún grupo de esta pista."
|
|
||||||
user-track-added-to-first: "&b{0}&a no está en ningún grupo en esta pista, por lo que se agregaron al primer grupo, &b{1}&a."
|
|
||||||
user-track-added-to-first-server: "&b{0}&a no está en ningún grupo en esta pista, por lo que se agregaron al primer grupo, &b{1}&a, en el servidor &b{2}&a."
|
|
||||||
user-track-added-to-first-server-world: "&b{0}&a no está en ningún grupo en esta pista, por lo que se agregaron al primer grupo, &b{1}&a, en el servidor &b{2}&a, mundo &b{3}&a."
|
|
||||||
user-promote-success: "&aPromover al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a."
|
|
||||||
user-promote-success-server: "&aPromover al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a en el servidor &b{3}&a."
|
|
||||||
user-promote-success-server-world: "&aPromover al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
user-promote-error-endoftrack: "El final de la pista &4{0}&c fue alcanzado. No se puede promover al usuario."
|
|
||||||
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: "&aDegradando al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a."
|
|
||||||
user-demote-success-server: "&aDegradando al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a en el servidor &b{3}&a."
|
|
||||||
user-demote-success-server-world: "&aDegradando al usuario a lo largo de la pista &b{0}&a desde &b{1}&a a &b{2}&a en el servidor &b{3}&a, mundo &b{4}&a."
|
|
||||||
user-demote-endoftrack: "El final de la pista &4{0}&c fue alcanzado, asi que &4{1}&c fue removido de &4{2}&c."
|
|
||||||
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.
|
|
||||||
user-showpos: >
|
|
||||||
&aShowing &b{0}&a's position on track &b{1}&a.\n
|
|
||||||
{2}
|
|
||||||
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- &3Prefixes: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Suffixes: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Meta: &a{7}
|
|
||||||
group-set-weight: "&aEstablesca el peso a &b{0}&a para el grupo &b{1}&a."
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &bShowing Track: &f{0}\n
|
|
||||||
{PREFIX}&f- &7Path: &f{1}
|
|
||||||
track-clear: "&b{0}&a's pista de grupos fue borrada."
|
|
||||||
track-append-success: "&aGrupo &b{0}&a fue añadido con éxito a la pista &b{1}&a."
|
|
||||||
track-insert-success: "&aGrupo &b{0}&a fue insertado con éxito en la pista &b{1}&a en la posicion &b{2}&a."
|
|
||||||
track-insert-error-number: "Numero esperado en lugar de recibido: {0}"
|
|
||||||
track-insert-error-invalid-pos: "No se puede insertar en la posición {0}. Indice fuera de los limites."
|
|
||||||
track-remove-success: "&aGrupo &b{0}&a se eliminó correctamente de la pista &b{1}&a."
|
|
||||||
log-load-error: "No se pudo cargar el registro."
|
|
||||||
log-invalid-page: "Número de página no válido."
|
|
||||||
log-invalid-page-range: "Número de página no válido. Por favor introduzca un valor entre 1 y {0}."
|
|
||||||
log-no-entries: "&bNo hay entradas de registro que mostrar."
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} hace&8) {2}"
|
|
||||||
log-notify-toggle-on: "&aHabilitada&b salida de registro."
|
|
||||||
log-notify-toggle-off: "&cDeshabilitada&b salida de registro."
|
|
||||||
log-notify-already-on: "Ya está recibiendo notificaciones."
|
|
||||||
log-notify-already-off: "Actualmente no estás recibiendo notificaciones."
|
|
||||||
log-notify-unknown: "Estado desconocido. Esperando \"on\" o \"off\"."
|
|
||||||
log-search-header: "&aMostrar acciones recientes para la consulta &b{0} &a(pagina &f{1}&a de &f{2}&a)"
|
|
||||||
log-recent-header: "&aMostrando acciones recientes (pagina &f{0}&a de &f{1}&a)"
|
|
||||||
log-recent-by-header: "&aMostrando las acciones recientes por &b{0} &a(pagina &f{1}&a de &f{2}&a)"
|
|
||||||
log-history-user-header: "&aMostrando el historial del usuario &b{0} &a(pagina &f{1}&a de &f{2}&a)"
|
|
||||||
log-history-group-header: "&aMostrando la historia del grupo &b{0} &a(pagina &f{1}&a de &f{2}&a)"
|
|
||||||
log-history-track-header: "&aMostrando la historia de la pista &b{0} &a(pagina &f{1}&a de &f{2}&a)"
|
|
||||||
log-export-already-exists: "Error: Archivo {0} ya existe."
|
|
||||||
log-export-not-writable: "Error: Archivo {0} no se puede escribir."
|
|
||||||
log-export-empty: "El registro está vacío y por lo tanto no puede ser exportado."
|
|
||||||
log-export-failure: "Se ha producido un error inesperado al escribir en el archivo."
|
|
||||||
log-export-success: "&aExitosamente exportó el registro a &b{0}&a."
|
|
||||||
import-already-running: "Ya se está ejecutando otro proceso de importación. Por favor espere a que finalice e inténtelo de nuevo."
|
|
||||||
export-already-running: "Ya se está ejecutando otro proceso de exportación. Por favor espere a que finalice e inténtelo de nuevo."
|
|
||||||
import-log-doesnt-exist: "Error: Archivo {0} no existe."
|
|
||||||
import-log-not-readable: "Error: Archivo {0} no es legible."
|
|
||||||
import-log-failure: "Se ha producido un error inesperado al leer del archivo de registro."
|
|
||||||
import-progress: "&b(Import) &b-> &f{0} &fporcentaje completado &7- &b{1}&f/&b{2} &fOperaciones completas con &c{3} &ferrores."
|
|
||||||
import-progress-sin: "&b(Import) &b-> &f{0} &fporcentaje completado &7- &b{1}&f/&b{2} &fOperaciones completas con &c{3} &ferrores."
|
|
||||||
import-start: "&b(Import) &b-> &fInicio del proceso de importación."
|
|
||||||
import-end-complete: "&b(Import) &a&lCOMPLETADO &7- tomo &b{0} &7segundos - &7No errores."
|
|
||||||
import-end-complete-err: "&b(Import) &a&lCOMPLETADO &7- tomo &b{0} &7segundos - &c{1} errores."
|
|
||||||
import-end-complete-err-sin: "&b(Import) &a&lCOMPLETADO &7- tomo &b{0} &7segundos - &c{1} errores."
|
|
||||||
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) &fOutput:
|
|
||||||
import-end-error-content: "&b(Import) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Import) &7<------------------------------------------>"
|
|
@ -1,735 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: hu_HU (Hungarian)
|
|
||||||
# Author: montlikadani
|
|
||||||
|
|
||||||
prefix: "&7&l[&b&lL&3&lP&7&l] &c"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&aOnline"
|
|
||||||
player-offline: "&cOffline"
|
|
||||||
loading-error: "&cNem sikerült betölteni az engedélyezési adatokat. Kérlek, próbáld újra később."
|
|
||||||
op-disabled: "&bA vanilla OP rendszer le van tiltva ezen a szerveren."
|
|
||||||
op-disabled-sponge: "&2Kérjük, vegye figyelembe, hogy a kiszolgálói operátor állapota nem befolyásolja a Sponge engedély-ellenőrzéseket, ha engedélyezési bővítmény van telepítve. Kérjük, közvetlenül módosítsa a felhasználói adatokat."
|
|
||||||
log-info: "&7&l[&bL&3P&7&l] &3{0}"
|
|
||||||
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[FIGYELEM] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[HIBA] {0}"
|
|
||||||
log: "&3LOG &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: "&3VÁNDORLÁS &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3VÁNDORLÁS &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "&cA parancs nem ismeretes."
|
|
||||||
command-no-permission: "&cNincs jogosultságod a használatára!"
|
|
||||||
user-not-found: "&cEgy felhasználó számára &4{0}&c nem található."
|
|
||||||
user-not-online: "&b{0}&a felhasználó nem elérhető."
|
|
||||||
user-save-error: "&cHiba történt a felhasználói adatok mentése közben &4{0}&c."
|
|
||||||
group-not-found: "&cEgy nevű csoport &4{0}&c nem található."
|
|
||||||
group-save-error: "&cHiba történt a csoportadatok mentése közben &4{0}&c."
|
|
||||||
track-not-found: "&cEgy nevű sáv &4{0}&c nem található."
|
|
||||||
track-save-error: "&cHiba történt a track adatok mentése közben &4{0}&c."
|
|
||||||
user-invalid-entry: "&4{0}&c nem érvényes felhasználónév/uuid."
|
|
||||||
group-invalid-entry: "&4{0}&c nem érvényes csoportnév."
|
|
||||||
track-invalid-entry: "&4{0}&c nem érvényes track név."
|
|
||||||
server-world-invalid-entry: "&cA szerver/világnév csak alfanumerikus karaktereket tartalmazhat, és nem haladhatja meg a 36 karakter hosszúságú karaktereket."
|
|
||||||
verbose-invalid-filter: "&4{0}&c nem érvényes kiterjedt szűrő."
|
|
||||||
verbose-on: "&bRészletes naplózás &aengedélyezve &ba megfelelő ellenőrzésekhez &aBÁRMILYEN&b."
|
|
||||||
verbose-on-query: "&bRészletes naplózás &aengedélyezve &ba megfelelő ellenőrzésekhez &a{0}&b."
|
|
||||||
verbose-off: "&bRészletes naplózás &cletiltva&b."
|
|
||||||
verbose-recording-on: "&bRészletes felvétel &aengedélyezve &ba megfelelő ellenőrzésekhez &aBÁRMILYEN&b."
|
|
||||||
verbose-recording-on-query: "&bRészletes felvétel &aengedélyezve &ba megfelelő ellenőrzésekhez &a{0}&b."
|
|
||||||
verbose-upload-start: "&bRészletes naplózás &cletiltva&b. Eredmények feltöltése..."
|
|
||||||
verbose-results-url: "&aRészletes eredmények URL-je:"
|
|
||||||
tree-upload-start: "&bEngedélyezési fa létrehozása..."
|
|
||||||
tree-empty: "&cNem lehet létrehozni a fát. Nincs találat."
|
|
||||||
tree-url: "&aEngedélyezési fa URL:"
|
|
||||||
search-searching: "&aFelhasználók és csoportok keresése a következővel: &b{0}&a..."
|
|
||||||
search-searching-members: "&aFelhasználók és csoportok keresése, akik örökölnek &b{0}&a..."
|
|
||||||
search-result: "&aTalál &b{0}&a bejegyzéseket a &b{1}&a felhasználók és &b{2}&a csoportok."
|
|
||||||
search-showing-users: "&bFelhasználói bejegyzések megjelenítése:"
|
|
||||||
search-showing-groups: "&bCsoportbejegyzések megjelenítése:"
|
|
||||||
search-showing-users-with-page: "&bFelhasználói bejegyzések megjelenítése: {0}"
|
|
||||||
search-showing-groups-with-page: "&bCsoportbejegyzések megjelenítése: {0}"
|
|
||||||
apply-edits-invalid-code: "&cÉrvénytelen kód. &7({0})"
|
|
||||||
apply-edits-unable-to-read: "&cA megadott kóddal nem lehet adatokat olvasni. &7({0})"
|
|
||||||
apply-edits-no-target: "&cNem lehet elemezni a szerkesztés célját. Kérjük, nyújtsa be, mint egy extra érv."
|
|
||||||
apply-edits-target-group-not-exists: "&cCélcsoport &4{0}&c nem létezik."
|
|
||||||
apply-edits-target-user-not-uuid: "&cCélcsoport &4{0}&c nem érvényes uuid."
|
|
||||||
apply-edits-target-user-unable-to-load: "&cA célfelhasználó nem tölthető be &4{0}&c."
|
|
||||||
apply-edits-target-unknown: "&cÉrvénytelen cél. &7({0})"
|
|
||||||
apply-edits-success: "&aWebszerkesztő adatok alkalmazása &b{0}&a sikeres."
|
|
||||||
apply-edits-success-summary: "&7(&a{0} &7{1} és &c{2} &7{3})"
|
|
||||||
apply-edits-diff-added: "&a+ &f{0}"
|
|
||||||
apply-edits-diff-removed: "&c- &f{0}"
|
|
||||||
editor-upload-failure: "&cNem sikerült feltölteni az engedélyezési adatokat a szerkesztőhöz."
|
|
||||||
editor-url: "&aSzerkesztő URL:"
|
|
||||||
check-result: "&aEngedély-ellenőrzés eredmény a felhasználó számára &b{0}&a engedélyért &b{1}&a: &f{2}"
|
|
||||||
create-success: "&b{0}&a sikeresen létrehozva."
|
|
||||||
delete-success: "&b{0}&a sikeresen törölve."
|
|
||||||
rename-success: "&b{0}&a sikeresen átnevezve &b{1}&a."
|
|
||||||
clone-success: "&b{0}&a sikeresen klónozva &b{1}&a."
|
|
||||||
already-inherits: "&b{0}&a már örökli &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
does-not-inherit: "&b{0}&a nem örököl &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
already-temp-inherits: "&b{0}&a már átmenetileg örökli &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
does-not-temp-inherit: "&b{0}&a nem átmenetileg örökli &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
track-already-contains: "&b{0}&a már tartalmazza &b{1}&a."
|
|
||||||
track-does-not-contain: "&b{0}&a nem tartalmaz &b{1}&a."
|
|
||||||
track-ambiguous-call: "&4{0}&c ezen a pályán több csoport tagja. Nem tudják meghatározni a helyüket."
|
|
||||||
already-exists: "&4{0}&c már létezik!"
|
|
||||||
does-not-exist: "&4{0}&c nem létezik!"
|
|
||||||
group-load-error: "&cVáratlan hiba történt. A csoport nincs betöltve."
|
|
||||||
groups-load-error: "&cVáratlan hiba történt. Nem sikerült betölteni az összes csoportot."
|
|
||||||
track-load-error: "&cVáratlan hiba történt. A nyomvonal nincs betöltve."
|
|
||||||
tracks-load-error: "&cVáratlan hiba történt. Nem sikerült betölteni az összes számot."
|
|
||||||
track-empty: "&4{0}&c nem használható, mivel üres vagy csak egy csoportot tartalmaz."
|
|
||||||
update-task-request: "&bFrissítési feladatot kértek. Kérlek, várj..."
|
|
||||||
update-task-complete: "&aA feladat frissítése befejeződött."
|
|
||||||
update-task-complete-network: "&aA feladat frissítése befejeződött. Most más szerverekre próbálkozni."
|
|
||||||
update-task-push-success: "&aMás szervereket értesítettek &b{0} Üzenetek &asikeresen."
|
|
||||||
update-task-push-failure: "&cHiba történt a többi kiszolgálóra történő változtatás közben."
|
|
||||||
update-task-push-failure-not-setup: "&cHiba történt a többi kiszolgálóra történő változtatás közben. &7(Egy üzenetkezelő szolgáltatást nem konfigurált.)"
|
|
||||||
reload-config-success: "&aA konfigurációs fájl újratöltve. &7(Néhány opció csak a szerver újraindítása után fog működni.)"
|
|
||||||
info-top: >
|
|
||||||
{PREFIX}&2Running &bLuckPerms v{0}&2 by &bLuck&2.\n
|
|
||||||
{PREFIX}&f- &3Emelvény: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Szerver márka: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Szerver verzió: &f{3}
|
|
||||||
info-middle: >
|
|
||||||
{PREFIX}&f- &bÜzenet típusa: &f{0}\n
|
|
||||||
{PREFIX}&f- &bPélda:\n
|
|
||||||
{PREFIX}&f- &3Szerver név: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Elérhető játékosok: &a{2}\n
|
|
||||||
{PREFIX}&f- &3Egyedi kapcsolatok: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Üzemidő: &7{4}\n
|
|
||||||
{PREFIX}&f- &3Helyi adatok: &a{5} &7felhasználó, &a{6} &7csoport, &a{7} &7pályák\n
|
|
||||||
{PREFIX}&f- &3Kontextus számológépek: &a{8}\n
|
|
||||||
{PREFIX}&f- &3Ismert engedélyek: &a{9}\n
|
|
||||||
{PREFIX}&f- &3Aktív processzorok: &7{10}
|
|
||||||
create-error: "&cHiba történt a létrehozás során &4{0}&c."
|
|
||||||
delete-error: "&cTörlés közben hiba történt &4{0}&c."
|
|
||||||
delete-group-error-default: "&cAz alapértelmezett csoportot nem törölheti."
|
|
||||||
groups-list: "&aCsoportok: &7(név, súly, pályák)"
|
|
||||||
groups-list-entry: "&f- &3{0} &7- &b{1}"
|
|
||||||
groups-list-entry-with-tracks: "&f- &3{0} &7- &b{1} &7- [&3{2}&7]"
|
|
||||||
tracks-list: "&aPályák: {0}"
|
|
||||||
listnodes: "&b{0} jogai:"
|
|
||||||
listnodes-with-page: "&b{0} Jogai: {1}"
|
|
||||||
listnodes-temp: "&b{0} Ideiglenes engedélyei:"
|
|
||||||
listnodes-temp-with-page: "&b{0} Ideiglenes engedélyei: {1}"
|
|
||||||
listparents: "&b{0} Szülői csoportok:"
|
|
||||||
listparents-temp: "&b{0} Ideiglenes szülői csoportok:"
|
|
||||||
list-tracks: >
|
|
||||||
&b{0} Pályái:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "&b{0}&a nincs rajta."
|
|
||||||
context-pair-inline: "&3{0}=&b{1}"
|
|
||||||
context-pair--global-inline: "&eglobális"
|
|
||||||
context-pair-sep: "&a, "
|
|
||||||
context-pair: "&8(&7{0}=&f{1}&8)"
|
|
||||||
check-permission: "&b{0}&a engedéllyel rendelkezik &b{1}&a állítva {2}&a a szövegkörnyezetben {3}&a."
|
|
||||||
check-inherits-permission: "&b{0}&a engedéllyel rendelkezik &b{1}&a állítva {2}&a a szövegkörnyezetben {3}&a. &7(örökölt &a{4}&7)"
|
|
||||||
setpermission-success: "&aBeállítva &b{0}&a-nak/-nek &b{1}&a, mert &b{2}&a a szövegkörnyezetben {3}&a."
|
|
||||||
already-haspermission: "&b{0}&a már van &b{1}&a összefüggésben {2}&a."
|
|
||||||
setpermission-temp-success: "&aBeállítva &b{0}&a-nak/-nek &b{1}&a, mert &b{2}&a egy ideig &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
already-has-temp-permission: "&b{0}&a már van &b{1}&a ideiglenesen környezetben {2}&a."
|
|
||||||
unsetpermission-success: "&aVisszaállítva &b{0}&a, mert &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
does-not-have-permission: "&b{0}&a nem rendelkezik &b{1}&a összefüggésben {2}&a."
|
|
||||||
unset-temp-permission-success: "&aIdeiglenes engedély érvénytelenítése &b{0}&a, mert &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
does-not-have-temp-permission: "&b{0}&a nem rendelkezik &b{1}&a ideiglenesen környezetben {2}&a."
|
|
||||||
set-inherit-success: "&b{0}&a most örökli az engedélyeket &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
set-temp-inherit-success: "&b{0}&a most örökli az engedélyeket &b{1}&a egy ideig &b{2}&a a szövegkörnyezetben {3}&a."
|
|
||||||
set-parent-success: "&b{0}&a meglévő szüloi csoportjaik tiszták, és most csak örökölnek &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
set-track-parent-success: "&b{0}&a meglévő szülői csoportjaik voltak a pályán &b{1}&a törölni, és most csak örökli &b{2}&a a szövegkörnyezetben {3}&a."
|
|
||||||
unset-inherit-success: "&b{0}&a többé nem örökli az engedélyeket &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a már nem ideiglenesen örökli az engedélyeket &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
clear-success: "&b{0}&a a jogosultságokat a kontextusban törölték {1}&a. (&b{2}&a a csomópontokat eltávolítottuk.)"
|
|
||||||
clear-success-singular: "&b{0}&a a jogosultságokat a kontextusban törölték {1}&a. (&b{2}&a csomópontot eltávolítottuk.)"
|
|
||||||
parent-clear-success: "&b{0}&a a szülei a kontextusban megszűntek {1}&a. (&b{2}&a a csomópontokat eltávolítottuk.)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a a szülei a kontextusban megszűntek {1}&a. (&b{2}&a a csomópontokat eltávolítottuk.)"
|
|
||||||
parent-clear-track-success: "&b{0}&a szülők a pályán &b{1}&a összefüggésben {2}&a. (&b{3}&a a csomópontokat eltávolítottuk.)"
|
|
||||||
parent-clear-track-success-singular: "&b{0}&a szülők a pályán &b{1}&a összefüggésben {2}&a. (&b{3}&a csomópontot eltávolítottuk.)"
|
|
||||||
meta-clear-success: "&b{0}&a meta egyezéstípusa &b{1}&a összefüggésben {2}&a. (&b{3}&a a csomópontokat eltávolítottuk.)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a meta egyezéstípusa &b{1}&a összefüggésben {2}&a. (&b{3}&a csomópontot eltávolítottuk.)"
|
|
||||||
illegal-date-error: "&cNem sikerült elemezni a dátumot &4{0}&c."
|
|
||||||
past-date-error: "&cNem állíthat be dátumot a múltban!"
|
|
||||||
chat-meta-prefix-header: "&b{0} Előtagjai"
|
|
||||||
chat-meta-suffix-header: "&b{0} Utótagja"
|
|
||||||
meta-header: "&b{0} Metája"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f'{1}&f' &8(&7örökölt &a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f'{1}&f' &8(&7örökölt &a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f'{1}&f' &8(&7örökölt &a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f'{1}&f' &8(&7örökölt &a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0} nincsenek előtagjai."
|
|
||||||
chat-meta-suffix-none: "&b{0} nincs utótagja."
|
|
||||||
meta-none: "&b{0} nincs meta."
|
|
||||||
meta-invalid-priority: "&cÉrvénytelen prioritás &4{0}&c. Várható szám."
|
|
||||||
already-has-chat-meta: "&b{0}&a már van {1} &f'{2}&f'&a elsőbbséget élvez &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
already-has-temp-chat-meta: "&b{0}&a már van {1} &f'{2}&f'&a ideiglenesen &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
does-not-have-chat-meta: "&b{0}&a nincs {1} &f'{2}&f'&a elsőbbséget élvez &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
does-not-have-temp-chat-meta: "&b{0}&a nincs {1} &f'{2}&f'&a ideiglenesen &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
add-chatmeta-success: "&b{0}&a volt {1} &f'{2}&f'&a elsőbbséget élvez &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
add-temp-chatmeta-success: "&b{0}&a volt {1} &f'{2}&f'&a elsőbbséget élvez &b{3}&a egy ideig &b{4}&a a szövegkörnyezetben {5}&a."
|
|
||||||
remove-chatmeta-success: "&b{0}&a volt {1} &f'{2}&f'&a prioritásként &b{3}&a eltávolítva a kontextusban {4}&a."
|
|
||||||
bulk-remove-chatmeta-success: "&b{0}&a minden volt {1}es a prioritás &b{2}&a eltávolítva a kontextusban {3}&a."
|
|
||||||
remove-temp-chatmeta-success: "&b{0}&a ideiglenes volt {1} &f'{2}&f'&a prioritásként &b{3}&a eltávolítva a kontextusban {4}&a."
|
|
||||||
bulk-remove-temp-chatmeta-success: "&b{0}&a minden ideiglenes volt {1}es prioritásként &b{2}&a eltávolítva a kontextusban {3}&a."
|
|
||||||
already-has-meta: "&b{0}&a már van meta kulcs &f'{1}&f'&a állítva &f'{2}&f'&a a szövegkörnyezetben {3}&a."
|
|
||||||
already-has-temp-meta: "&b{0}&a már van meta kulcs &f'{1}&f'&a átmenetileg beállítva &f'{2}&f'&a a szövegkörnyezetben {3}&a."
|
|
||||||
doesnt-have-meta: "&b{0}&a nincs meta kulcs &f'{1}&f'&a összefüggésben {2}&a."
|
|
||||||
doesnt-have-temp-meta: "&b{0}&a nincs meta kulcs &f'{1}&f'&a ideiglenesen a környezetben {2}&a."
|
|
||||||
set-meta-success: "&aÁllítva a meta kulcsot &f'{0}&f'&a-nak/-nek &f'{1}&f'&a, mert &b{2}&a a szövegkörnyezetben {3}&a."
|
|
||||||
set-meta-temp-success: "&aÁllítva a meta kulcsot &f'{0}&f'&a-nak/-nek &f'{1}&f'&a, mert &b{2}&a egy ideig &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
unset-meta-success: "&aLeválasztva a meta kulcsot &f'{0}&f'&a, mert &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
unset-meta-temp-success: "&aIdeiglenes meta kulcs kikapcsolása &f'{0}&f'&a, mert &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
bulk-update-invalid-data-type: "&cÉrvénytelen típus. Típusok 'all', 'users' vagy 'groups'."
|
|
||||||
bulk-update-invalid-constraint: "&cÉrvénytelen kényszer &4{0}&c. A korlátozásoknak formátumban kell lenniük '&f<mező> <összehasonlító operátor> <érték>&c'."
|
|
||||||
bulk-update-invalid-comparison: "&cÉrvénytelen összehasonlító operátor '&4{0}&c'. Várható az alábbiak közül: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&aA tömeges frissítés sorba állt. &7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&aA futtatáshoz &b/{0} a tömeges frissítés megerősítéséhez {1} &aa frissítés végrehajtásához."
|
|
||||||
bulk-update-unknown-id: "&aMűködési id &b{0}&a nem létezik, vagy lejárt."
|
|
||||||
bulk-update-starting: "&aFolyamatos frissítés futtatása."
|
|
||||||
bulk-update-success: "&bA tömeges frissítés sikeresen befejeződött."
|
|
||||||
bulk-update-failure: "&cA tömeges frissítés sikertelen. Ellenőrizze a konzolt hiba esetén."
|
|
||||||
user-info-general: >
|
|
||||||
{PREFIX}&b&l> &bFelhasználói adatok: &f{0}\n
|
|
||||||
{PREFIX}&f- &3UUID: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Állapot: {2}\n
|
|
||||||
{PREFIX}&f- &3Elsődleges csoport: &f{3}\n
|
|
||||||
{PREFIX}&f- &aGrófok:\n
|
|
||||||
{PREFIX}&f- &3Csomópontok: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Jogok: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Előtagok: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Utótagok: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Meta: &a{8}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &aGyorsítótár adat:\n
|
|
||||||
{PREFIX}&f- &3Kontextuális adatok vannak: {0}\n
|
|
||||||
{PREFIX}&f- &3Jelenlegi kontextusok: {1}\n
|
|
||||||
{PREFIX}&f- &3Jelenlegi előtag: {2}\n
|
|
||||||
{PREFIX}&f- &3Jelenlegi utótag: {3}
|
|
||||||
info-parent-header: "&f- &aSzülői csoportok:"
|
|
||||||
info-temp-parent-header: "&f- &aIdeiglenes szülői csoportok:"
|
|
||||||
user-removegroup-error-primary: "&aNem lehet eltávolítani egy felhasználót az elsődleges csoportból."
|
|
||||||
user-primarygroup-success: "&b{0}&a az elsődleges csoportot &b{1}&a."
|
|
||||||
user-primarygroup-warn-option: "&aFigyelmeztetés: A kiszolgáló által használt elsődleges csoportszámítási módszer &7({0}) &anem tükrözheti ezt a változást."
|
|
||||||
user-primarygroup-error-alreadyhas: "&b{0}&a már van &b{1}&a mint elsődleges csoportjuk."
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a már nem tagja &b{1}&a, hozzátéve őket."
|
|
||||||
user-track-error-not-contain-group: "&b{0}&a már nincsenek benne &b{1}&a."
|
|
||||||
user-track-added-to-first: "&b{0}&a nincsenek ezen a pályán egyetlen csoportban sem, így az első csoportba kerültek, &b{1}&a a szövegkörnyezetben {2}&a."
|
|
||||||
user-promote-success: "&aElőmozdítása &b{0}&a a pályán &b{1}&a-tól/-től &b{2}&a-nak/-nek &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
user-promote-error-endoftrack: "&aA pálya vége &b{0}&a elérte. Nem lehetett népszerűsíteni &b{1}&a."
|
|
||||||
user-promote-error-malformed: >
|
|
||||||
{PREFIX}&aA következő csoport a pályán, &b{0}&a, nem létezik többé. Nem sikerült népszerűsíteni a felhasználót.\n
|
|
||||||
{PREFIX}&aVagy hozzon létre egy csoportot, vagy távolítsa el a zeneszámból, és próbálkozzon újra.
|
|
||||||
user-demote-success: "&aLefokozandó &b{0}&a a pályán &b{1}&a-tól/-től &b{2}&a-nak/-nek &b{3}&a a szövegkörnyezetben {4}&a."
|
|
||||||
user-demote-endoftrack: "&aA pálya vége &b{0}&a, így elérte &b{1}&a eltávolították &b{2}&a."
|
|
||||||
user-demote-error-malformed: >
|
|
||||||
{PREFIX}&aAz előző csoport a pályán, &b{0}&a, nem létezik többé. Nem lehet lecsökkenteni a felhasználót.\n
|
|
||||||
{PREFIX}&aVagy hozzon létre egy csoportot, vagy távolítsa el a zeneszámból, és próbálkozzon újra.
|
|
||||||
group-info-general: >
|
|
||||||
{PREFIX}&b&l> &bCsoport info: &f{0}\n
|
|
||||||
{PREFIX}&f- &3Megjelenítendő név: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Súly: &f{2}\n
|
|
||||||
{PREFIX}&f- &aGrófok:\n
|
|
||||||
{PREFIX}&f- &3Csomópontok: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Jogok: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Előtagok: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Utótagok: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Meta: &a{7}
|
|
||||||
group-set-weight: "&aA súly beállítása &b{0} &b{1}&a csoporthoz."
|
|
||||||
group-set-display-name-doesnt-have: "&b{0}&a nincs megjelenített névvel."
|
|
||||||
group-set-display-name-already-has: "&b{0}&a már van megjelenítési neve &b{1}&a."
|
|
||||||
group-set-display-name-already-in-use: "&aA megjelenítési név &b{0}&a már használta &b{1}&a."
|
|
||||||
group-set-display-name: "&aBeállítva a megjelenítési név a &b{0}&a csoporthoz &b{1}&a."
|
|
||||||
group-set-display-name-removed: "&aA kijelölt megjelenített név a(z) &b{0}&a csoportnál eltávolítva."
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &bPálya megjelenítése: &f{0}\n
|
|
||||||
{PREFIX}&f- &7Pálya: &f{1}
|
|
||||||
track-clear: "&b{0}&a csoportok nyomvonalát törölték."
|
|
||||||
track-append-success: "&aCsoport &b{0}&a csatolták a követéshez &b{1}&a."
|
|
||||||
track-insert-success: "&aCsoport &b{0}&a beillesztésre került a pályára &b{1}&a helyzetben &b{2}&a."
|
|
||||||
track-insert-error-number: "&cVárható szám, de helyette beérkezett: {0}"
|
|
||||||
track-insert-error-invalid-pos: "&cNem helyezhető be a pozícióba &4{0}&c. &7(érvénytelen pozíció)"
|
|
||||||
track-remove-success: "&aCsoport &b{0}&a eltávolították a pályáról &b{1}&a."
|
|
||||||
log-load-error: "&cA napló nem tölthető be."
|
|
||||||
log-invalid-page: "&cÉrvénytelen oldalszám."
|
|
||||||
log-invalid-page-range: "&cÉrvénytelen oldalszám. Kérjük, adjon meg egy értéket &41&c és &4{0}&c."
|
|
||||||
log-no-entries: "&bNincs megjeleníthető naplóbejegyzés."
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} ezelőtt&8) {2}"
|
|
||||||
log-notify-console: "&cA konzolra vonatkozó értesítések átváltása nem lehetséges."
|
|
||||||
log-notify-toggle-on: "&aEngedélyezve a&b naplózási kimenet."
|
|
||||||
log-notify-toggle-off: "&cLetiltva a&b naplózási kimenet."
|
|
||||||
log-notify-already-on: "&cMár értesítést kapsz."
|
|
||||||
log-notify-already-off: "&cJelenleg nem kap értesítést."
|
|
||||||
log-notify-unknown: "&cAz állapot ismeretlen. Elvárás \"on\" vagy \"off\"."
|
|
||||||
log-search-header: "&aA lekérdezés legutóbbi műveleteinek megjelenítése &b{0} &a(oldal &f{1} &f{2}&a-ból/-ből)"
|
|
||||||
log-recent-header: "&aA legutóbbi műveletek megjelenítése (oldal &f{0} &f{1}&a-ból/-ből)"
|
|
||||||
log-recent-by-header: "&aLegutóbbi fellépések megjelenítése a következővel: &b{0} &a(oldal &f{1} &f{2}&a-ból/-ből)"
|
|
||||||
log-history-user-header: "&aA felhasználó előzményeinek megjelenítése &b{0} &a(oldal &f{1} &f{2}&a-ból/-ből)"
|
|
||||||
log-history-group-header: "&aA csoport előzményeinek megjelenítése &b{0} &a(oldal &f{1} &f{2}&a-ból/-ből)"
|
|
||||||
log-history-track-header: "&aA sáv előzményeinek megjelenítése &b{0} &a(oldal &f{1} &f{2}&a-ból/-ből)"
|
|
||||||
log-export-already-exists: "&cHiba: A fájl &4{0}&c már létezik."
|
|
||||||
log-export-not-writable: "&cHiba: A fájl &4{0}&c nem írható."
|
|
||||||
log-export-empty: "&cA napló üres, ezért nem exportálható."
|
|
||||||
log-export-failure: "&cVáratlan hiba történt a fájl írása közben."
|
|
||||||
log-export-success: "&aSikeresen exportálta a naplót &b{0}&a."
|
|
||||||
import-already-running: "&cEgy másik behozatali folyamat már fut. Kérjük, várjon, amíg befejeződik, és próbálkozzon újra."
|
|
||||||
export-already-running: "&cEgy másik exportfolyamat már fut. Kérjük, várjon, amíg befejeződik, és próbálkozzon újra."
|
|
||||||
import-log-doesnt-exist: "&cHiba: A fájl &4{0}&c nem létezik."
|
|
||||||
import-log-not-readable: "&cHiba: A fájl &4{0}&c nem olvasható."
|
|
||||||
import-log-failure: "&cA naplófájl olvasása közben váratlan hiba történt."
|
|
||||||
import-progress: "&b(Import) &b-> &f{0}&f% sikeres &7- &b{1}&f/&b{2} &fműveletekkel kiegészítve &c{3} &fhibák."
|
|
||||||
import-progress-sin: "&b(Import) &b-> &f{0}&f% sikeres &7- &b{1}&f/&b{2} &fműveletekkel kiegészítve &c{3} &fhiba."
|
|
||||||
import-start: "&b(Import) &b-> &fImportálás indítása."
|
|
||||||
import-end-complete: "&b(Import) &a&lSIKERES &7- vett &b{0} &7másodperc - &7Nincs hibák."
|
|
||||||
import-end-complete-err: "&b(Import) &a&lSIKERES &7- vett &b{0} &7másodperc - &c{1} hibák."
|
|
||||||
import-end-complete-err-sin: "&b(Import) &a&lSIKERES &7- vett &b{0} &7másodperc - &c{1} hiba."
|
|
||||||
import-end-error-header: >
|
|
||||||
{PREFIX}&b(Import) &7------------> &fHiba megjelenítése #&b{0} &7<------------\n
|
|
||||||
{PREFIX}&b(Import) &fFuttatás közben: &3Parancs #{1}\n
|
|
||||||
{PREFIX}&b(Import) &fParancs: &7{2}\n
|
|
||||||
{PREFIX}&b(Import) &fTípus: &3{3}\n
|
|
||||||
{PREFIX}&b(Import) &fKibocsátás:
|
|
||||||
import-end-error-content: "&b(Import) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Import) &7<------------------------------------------>"
|
|
||||||
|
|
||||||
command-specs:
|
|
||||||
user:
|
|
||||||
description: "Felhasználói parancsok"
|
|
||||||
usage: "/%s user <felhasználó>"
|
|
||||||
group:
|
|
||||||
description: "Csoport parancsok"
|
|
||||||
usage: "/%s group <csoport>"
|
|
||||||
track:
|
|
||||||
description: "Sávparancsok"
|
|
||||||
usage: "/%s track <track>"
|
|
||||||
log:
|
|
||||||
description: "Napló parancsok"
|
|
||||||
usage: "/%s log"
|
|
||||||
sync:
|
|
||||||
description: "A szinkronizálás megváltozik a tárolóval"
|
|
||||||
usage: "/%s sync"
|
|
||||||
info:
|
|
||||||
description: "Általános plugin info nyomtatása"
|
|
||||||
usage: "/%s info"
|
|
||||||
verbose:
|
|
||||||
description: "Rendszeres engedély ellenőrzése"
|
|
||||||
usage: "/%s verbose <true|false> [szűrő]"
|
|
||||||
args:
|
|
||||||
"on|record|off|paste": "hogy bekapcsolják/kikapcsolják a naplózást, vagy beillesztik-e a naplózott kimenetet"
|
|
||||||
"filter": "a szűrő a bejegyzések ellen"
|
|
||||||
"--slim": "hozzáad \"--slim\" a nyomkövetési adatok kizárása a beillesztett kimenetből"
|
|
||||||
tree:
|
|
||||||
description: "Hozzon létre egy fa nézetet az engedélyekről"
|
|
||||||
usage: "/%s tree [kiválasztás] [max. szint] [játékos]"
|
|
||||||
args:
|
|
||||||
"selection": "a fa gyökere. Meghatározza \".\", hogy az összes engedélyt tartalmazza"
|
|
||||||
"max level": "hány fiókszintet kell visszaküldeni"
|
|
||||||
"player": "az elérhető játékos nevét ellenőrizni"
|
|
||||||
search:
|
|
||||||
description: "Keressen olyan felhasználókat/csoportokat, akiknek engedélye van"
|
|
||||||
usage: "/%s search <jog>"
|
|
||||||
args:
|
|
||||||
"permission": "a keresési engedély"
|
|
||||||
"page": "a megtekinteni kívánt oldalt"
|
|
||||||
check:
|
|
||||||
description: "Végezzen el egy szabványos engedélyt egy elérhető játékoson"
|
|
||||||
usage: "/%s check <felhasználó> <jog>"
|
|
||||||
args:
|
|
||||||
"user": "a felhasználó ellenőrizni"
|
|
||||||
"permission": "az ellenőrzés engedélye"
|
|
||||||
network-sync:
|
|
||||||
description: "A szinkronizálás a tárhely módosításával történik, és kérni fogja, hogy a hálózaton lévő összes többi szerver ugyanezt tegye"
|
|
||||||
usage: "/%s networksync"
|
|
||||||
import:
|
|
||||||
description: "Adatok importálása fájlból"
|
|
||||||
usage: "/%s import <fájl>"
|
|
||||||
args:
|
|
||||||
"file": "az importálni kívánt fájl"
|
|
||||||
export:
|
|
||||||
description: "Adatok exportálása egy fájlba"
|
|
||||||
usage: "/%s export <fájl>"
|
|
||||||
args:
|
|
||||||
"file": "az exportálni kívánt fájl"
|
|
||||||
reload-config:
|
|
||||||
description: "Betölt néhány konfigurációs beállítást"
|
|
||||||
usage: "/%s reloadconfig"
|
|
||||||
bulk-update:
|
|
||||||
description: "Végezzen ömlesztett változás lekérdezéseket az összes adaton"
|
|
||||||
usage: "/%s bulkupdate"
|
|
||||||
args:
|
|
||||||
"data type": "a megváltoztatott adatok típusa. ('all', 'users' vagy 'groups')"
|
|
||||||
"action": "az elvégzendő művelet az adatokon. ('update' vagy 'delete')"
|
|
||||||
"action field": "a cselekvési terület. Csak a szükséges 'update'. ('permission', 'server' vagy 'world')"
|
|
||||||
"action value": "a cserélendő érték. Csak a szükséges 'update'."
|
|
||||||
"constraint...": "a frissítéshez szükséges korlátokat"
|
|
||||||
migration:
|
|
||||||
description: "Migrációs parancsok"
|
|
||||||
usage: "/%s migration"
|
|
||||||
apply-edits:
|
|
||||||
description: "A webszerkesztő által végrehajtott engedély módosításokat alkalmazza"
|
|
||||||
usage: "/%s applyedits <kód> [cél]"
|
|
||||||
args:
|
|
||||||
"code": "az adatok egyedi kódja"
|
|
||||||
"target": "aki az adatokat alkalmazza"
|
|
||||||
create-group:
|
|
||||||
description: "Létrehoz egy új csoportot"
|
|
||||||
usage: "/%s creategroup <csoport>"
|
|
||||||
args:
|
|
||||||
"name": "a csoport neve"
|
|
||||||
delete-group:
|
|
||||||
description: "Csoport eltávolítása"
|
|
||||||
usage: "/%s deletegroup <csoport>"
|
|
||||||
args:
|
|
||||||
"name": "a csoport neve"
|
|
||||||
list-groups:
|
|
||||||
description: "Felsorolja az összes csoportot a platformon"
|
|
||||||
usage: "/%s listgroups"
|
|
||||||
create-track:
|
|
||||||
description: "Hozzon létre egy új számot"
|
|
||||||
usage: "/%s createtrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "a pálya neve"
|
|
||||||
delete-track:
|
|
||||||
description: "Egy szám törlése"
|
|
||||||
usage: "/%s deletetrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "a pálya neve"
|
|
||||||
list-tracks:
|
|
||||||
description: "Felsorolja az összes zeneszámot a platformon"
|
|
||||||
usage: "/%s listtracks"
|
|
||||||
user-info:
|
|
||||||
description: "Információkat jelenít meg a felhasználóról"
|
|
||||||
user-switchprimarygroup:
|
|
||||||
description: "A felhasználó elsődleges csoportjának átváltása"
|
|
||||||
args:
|
|
||||||
"group": "a csoport, amelyre váltani"
|
|
||||||
user-promote:
|
|
||||||
description: "Segít a felhasználónak egy számot feltölteni"
|
|
||||||
args:
|
|
||||||
"track": "a pálya, hogy elősegítse a felhasználó fel"
|
|
||||||
"context...": "a felhasználót elősegítő kontextusok"
|
|
||||||
user-demote:
|
|
||||||
description: "Megszünteti a felhasználót egy pályán"
|
|
||||||
args:
|
|
||||||
"track": "a sáv, amely leállítja a felhasználót"
|
|
||||||
"context...": "a felhasználókat lecsökkentő kontextusok"
|
|
||||||
group-info:
|
|
||||||
description: "Információkat ad a csoportról"
|
|
||||||
group-listmembers:
|
|
||||||
description: "Mutassa be a csoportból öröklődő felhasználókat/csoportokat"
|
|
||||||
args:
|
|
||||||
"page": "a megtekinteni kívánt oldal"
|
|
||||||
group-setweight:
|
|
||||||
description: "Beállítja a csoportok súlyát"
|
|
||||||
args:
|
|
||||||
"weight": "a beállítani kívánt súly"
|
|
||||||
group-rename:
|
|
||||||
description: "Átnevezi a csoportot"
|
|
||||||
args:
|
|
||||||
"name": "az új név"
|
|
||||||
group-clone:
|
|
||||||
description: "Klónozza a csoportot"
|
|
||||||
args:
|
|
||||||
"name": "a klónozni kívánt csoport neve"
|
|
||||||
holder-editor:
|
|
||||||
description: "Megnyitja a webes engedély-szerkesztőt"
|
|
||||||
holder-showtracks:
|
|
||||||
description: "Megadja az objektum sávjait"
|
|
||||||
holder-clear:
|
|
||||||
description: "Eltávolítja az összes jogosultságot, szülőt és meta-t"
|
|
||||||
args:
|
|
||||||
"context...": "a szövegszűrés körülményei"
|
|
||||||
permission:
|
|
||||||
description: "Jogok szerkesztése"
|
|
||||||
parent:
|
|
||||||
description: "Örökletek szerkesztése"
|
|
||||||
meta:
|
|
||||||
description: "Metaadatértékek szerkesztése"
|
|
||||||
permission-info:
|
|
||||||
description: "Megadja az objektum engedélyezési csomópontjait"
|
|
||||||
args:
|
|
||||||
"page": "a megtekinteni a kívánt oldalt"
|
|
||||||
"filter": "a string szűrni"
|
|
||||||
permission-set:
|
|
||||||
description: "Beállítja az objektum engedélyét"
|
|
||||||
args:
|
|
||||||
"node": "a beállítandó jog csomópont"
|
|
||||||
"true|false": "a csomópont értéke"
|
|
||||||
"context...": "az engedéllyel rendelkező szövegkörnyezetek"
|
|
||||||
permission-unset:
|
|
||||||
description: "Megadja az objektum engedélyét"
|
|
||||||
args:
|
|
||||||
"node": "az engedéllyel rendelkező csomópont kiiktatásához"
|
|
||||||
"context...": "az engedélyek eltávolításának kontextusai"
|
|
||||||
permission-settemp:
|
|
||||||
description: "Beállítja az objektum ideiglenes engedélyét"
|
|
||||||
args:
|
|
||||||
"node": "a beállítandó engedély csomópont"
|
|
||||||
"true|false": "a csomópont értéke"
|
|
||||||
"duration": "amíg az engedély csomópontja lejárt"
|
|
||||||
"context...": "az engedéllyel rendelkező szövegkörnyezetek"
|
|
||||||
permission-unsettemp:
|
|
||||||
description: "Megadja az ideiglenes engedélyt az objektumhoz"
|
|
||||||
args:
|
|
||||||
"node": "az engedéllyel rendelkező csomópont kiiktatásához"
|
|
||||||
"context...": "az engedélyek eltávolításának kontextusai"
|
|
||||||
permission-check:
|
|
||||||
description: "Ellenőrzi, hogy az objektumnak van-e engedélyezési csomópontja"
|
|
||||||
args:
|
|
||||||
"node": "az engedéllyel rendelkező csomópontot"
|
|
||||||
"context...": "a bejelentkezés körülményei"
|
|
||||||
permission-check-inherits:
|
|
||||||
description: "Ellenőrzi, hogy az objektum örökli-e az engedélyezési csomópontot"
|
|
||||||
args:
|
|
||||||
"node": "az engedéllyel rendelkező csomópontot"
|
|
||||||
"context...": "a bejelentkezés körülményei"
|
|
||||||
parent-info:
|
|
||||||
description: "Megadja azokat a csoportokat, amelyeket ez az objektum örököl"
|
|
||||||
parent-set:
|
|
||||||
description: "Eltávolítja az összes többi csoportot, amelyet az objektum már örököl, és hozzáadja azokat az adott objektumhoz"
|
|
||||||
args:
|
|
||||||
"group": "a csoport, amelyre állít"
|
|
||||||
"context...": "a csoport beállításához szükséges kontextusok"
|
|
||||||
parent-add:
|
|
||||||
description: "Beállít egy másik csoportot az objektumhoz, hogy örökli a jogokat"
|
|
||||||
args:
|
|
||||||
"group": "a csoport örökölni"
|
|
||||||
"context...": "a csoportot örökli a szövegkörnyezetben"
|
|
||||||
parent-remove:
|
|
||||||
description: "Eltávolítja a korábban beállított öröklési szabályt"
|
|
||||||
args:
|
|
||||||
"group": "a csoport eltávolítani"
|
|
||||||
"context...": "a csoport eltávolításának kontextusai"
|
|
||||||
parent-set-track:
|
|
||||||
description: "Eltávolítja az összes többi olyan csoportot, amelyet az adott objektum már örököl az adott sávon, és hozzáadja azokat az adott sávhoz"
|
|
||||||
args:
|
|
||||||
"track": "a pálya bekapcsolásához"
|
|
||||||
"group": "a beállítani kívánt csoportot, vagy a csoport helyzetét az adott sávon"
|
|
||||||
"context...": "a csoport beállításához szükséges kontextusok"
|
|
||||||
parent-add-temp:
|
|
||||||
description: "Egy másik csoportot állít be, hogy az objektum átmenetileg átengedi az engedélyeket"
|
|
||||||
args:
|
|
||||||
"group": "a csoport örökölni"
|
|
||||||
"duration": "a csoporttagság időtartamát"
|
|
||||||
"context...": "a csoportot örökli a szövegkörnyezetben"
|
|
||||||
parent-remove-temp:
|
|
||||||
description: "Eltávolítja a korábban beállított ideiglenes öröklési szabályt"
|
|
||||||
args:
|
|
||||||
"group": "a csoport eltávolítani"
|
|
||||||
"context...": "a csoport eltávolításának kontextusai"
|
|
||||||
parent-clear:
|
|
||||||
description: "Törli az összes szülőt"
|
|
||||||
args:
|
|
||||||
"context...": "a szövegszűrés körülményei"
|
|
||||||
parent-clear-track:
|
|
||||||
description: "Törli az összes szülőt egy adott pályán"
|
|
||||||
args:
|
|
||||||
"track": "az eltávolítandó sáv"
|
|
||||||
"context...": "a szövegszűrés körülményei"
|
|
||||||
meta-info:
|
|
||||||
description: "Az összes csevegési meta megjelenítése"
|
|
||||||
meta-set:
|
|
||||||
description: "Meta értéket állít be"
|
|
||||||
args:
|
|
||||||
"key": "a beállítani kívánt kulcs"
|
|
||||||
"value": "a beállítani kívánt érték"
|
|
||||||
"context...": "a meta-pár beillesztésének kontextusai"
|
|
||||||
meta-unset:
|
|
||||||
description: "Megszünteti a meta értéket"
|
|
||||||
args:
|
|
||||||
"key": "a kiiktatás kulcsa"
|
|
||||||
"context...": "a meta-pár eltávolításának kontextusai"
|
|
||||||
meta-settemp:
|
|
||||||
description: "Átmenetileg beállítja a metaértéket"
|
|
||||||
args:
|
|
||||||
"key": "a beállítani kívánt kulcs"
|
|
||||||
"value": "a beállítani kívánt érték"
|
|
||||||
"duration": "amíg a meta érték lejár"
|
|
||||||
"context...": "a meta-pár beillesztésének kontextusai"
|
|
||||||
meta-unsettemp:
|
|
||||||
description: "Megszünteti az ideiglenes metaértéket"
|
|
||||||
args:
|
|
||||||
"key": "a kiiktatás kulcsa"
|
|
||||||
"context...": "a metapár eltávolításának kontextusai"
|
|
||||||
meta-addprefix:
|
|
||||||
description: "Hozzáad egy előtagot"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbséget az előtag hozzáadásához"
|
|
||||||
"prefix": "az előtag karaktersorozat"
|
|
||||||
"context...": "az előtag beillesztésének kontextusai"
|
|
||||||
meta-addsuffix:
|
|
||||||
description: "Hozzáad egy utótagot"
|
|
||||||
args:
|
|
||||||
"priority": "elsőbbséget kell adni az utótagnak a következőhöz:"
|
|
||||||
"suffix": "az utótagsor"
|
|
||||||
"context...": "azok a kontextusok, amelyekhez hozzá kell adni az utótagot"
|
|
||||||
meta-removeprefix:
|
|
||||||
description: "Eltávolít egy előtagot"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbség eltávolítása az előtagon"
|
|
||||||
"prefix": "az előtag karaktersorozat"
|
|
||||||
"context...": "az előtagot eltávolító szövegkörnyezetek"
|
|
||||||
meta-removesuffix:
|
|
||||||
description: "Eltávolít egy utótagot"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbség, hogy eltávolítsák az utótagot"
|
|
||||||
"suffix": "az utótagsor"
|
|
||||||
"context...": "azok a kontextusok, amelyek eltávolítják az utótagot"
|
|
||||||
meta-addtemp-prefix:
|
|
||||||
description: "Privát előtagot ad át ideiglenesen"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbséget az előtag hozzáadásához"
|
|
||||||
"prefix": "az előtag karaktersorozat"
|
|
||||||
"duration": "az időtartam, amíg az előtag lejár"
|
|
||||||
"context...": "az előtag beillesztésének kontextusai"
|
|
||||||
meta-addtemp-suffix:
|
|
||||||
description: "Egy ideiglenes utótagot ad hozzá"
|
|
||||||
args:
|
|
||||||
"priority": "elsőbbséget kell adni az utótagnak a következőhöz:"
|
|
||||||
"suffix": "az utótagsor"
|
|
||||||
"duration": "az időtartam, amíg az utótag lejár"
|
|
||||||
"context...": "azok a kontextusok, amelyekhez hozzá kell adni az utótagot"
|
|
||||||
meta-removetemp-prefix:
|
|
||||||
description: "Eltávolít ideiglenes előtagot"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbség eltávolítása az előtagon"
|
|
||||||
"prefix": "az előtag karaktersorozat"
|
|
||||||
"context...": "az előtagot eltávolító szövegkörnyezetek"
|
|
||||||
meta-removetemp-suffix:
|
|
||||||
description: "Eltávolítja az ideiglenes utótagot"
|
|
||||||
args:
|
|
||||||
"priority": "az elsőbbség, hogy eltávolítsák az utótagot"
|
|
||||||
"suffix": "az utótagsor"
|
|
||||||
"context...": "azok a kontextusok, amelyek eltávolítják az utótagot"
|
|
||||||
meta-clear:
|
|
||||||
description: "Törli az összes metódust"
|
|
||||||
args:
|
|
||||||
"type": "a eltávolítandó meta típusa"
|
|
||||||
"context...": "a szövegszűrés körülményei"
|
|
||||||
track-info:
|
|
||||||
description: "Ad információt a pályáról"
|
|
||||||
track-append:
|
|
||||||
description: "Csatol egy csoportot a pálya végére"
|
|
||||||
args:
|
|
||||||
"group": "a csoport hozzáfűzése"
|
|
||||||
track-insert:
|
|
||||||
description: "Beilleszti a csoportot egy adott pozícióban a pálya mentén"
|
|
||||||
args:
|
|
||||||
"group": "beszúrni a kívánt csoport"
|
|
||||||
"position": "a helyzet a csoport beillesztésére (az első pozíció a pályán 1)"
|
|
||||||
track-remove:
|
|
||||||
description: "Eltávolít egy csoportot a sávról"
|
|
||||||
args:
|
|
||||||
"group": "a csoport eltávolítani"
|
|
||||||
track-clear:
|
|
||||||
description: "Törli a csoportokat a pályán"
|
|
||||||
track-rename:
|
|
||||||
description: "Nevezze át a sávot"
|
|
||||||
args:
|
|
||||||
"name": "az új név"
|
|
||||||
track-clone:
|
|
||||||
description: "Klónozza a sávot"
|
|
||||||
args:
|
|
||||||
"name": "a pálya neve, hogy klónozzanak"
|
|
||||||
log-recent:
|
|
||||||
description: "A legutóbbi műveletek megtekintése"
|
|
||||||
args:
|
|
||||||
"user": "a felhasználó neve/uuid-je, hogy kiszűrje"
|
|
||||||
"page": "a megtekinteni kívánt oldalszám"
|
|
||||||
log-search:
|
|
||||||
description: "Keressen egy bejegyzés naplót"
|
|
||||||
args:
|
|
||||||
"query": "keresési lekérdezés"
|
|
||||||
"page": "a megtekinteni kívánt oldalszám"
|
|
||||||
log-notify:
|
|
||||||
description: "A naplóbejelentések módosítása"
|
|
||||||
args:
|
|
||||||
"on|off": "hogy be vagy ki van kapcsolva"
|
|
||||||
log-user-history:
|
|
||||||
description: "A felhasználó előzményeinek megtekintése"
|
|
||||||
args:
|
|
||||||
"user": "a felhasználó neve/uuid-je"
|
|
||||||
"page": "a megtekinteni kívánt oldalszám"
|
|
||||||
log-group-history:
|
|
||||||
description: "A csoport előzményeinek megtekintése"
|
|
||||||
args:
|
|
||||||
"group": "a csoport neve"
|
|
||||||
"page": "a megtekinteni kívánt oldalszám"
|
|
||||||
log-track-history:
|
|
||||||
description: "A sáv előzményeinek megtekintése"
|
|
||||||
args:
|
|
||||||
"track": "a pálya neve"
|
|
||||||
"page": "a megtekinteni kívánt oldalszám"
|
|
||||||
sponge:
|
|
||||||
description: "Extra Szivacs adatok szerkesztése"
|
|
||||||
usage: "/%s sponge <gyűjtemény> <tárgy>"
|
|
||||||
args:
|
|
||||||
"collection": "a lekérdezésre kerülő gyűjtemény"
|
|
||||||
"subject": "módosítani a tárgyat"
|
|
||||||
sponge-permission-info:
|
|
||||||
description: "A tárgyhoz tartozó jogokkal kapcsolatos információkat jeleníti meg"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szövegszűrés körülményei"
|
|
||||||
sponge-permission-set:
|
|
||||||
description: "Engedélyt ad a Tárgyhoz"
|
|
||||||
args:
|
|
||||||
"node": "a beállítandó engedély csomópont"
|
|
||||||
"tristate": "az engedélyhez szükséges érték megadása"
|
|
||||||
"contexts...": "az engedéllyel rendelkező szövegkörnyezetek"
|
|
||||||
sponge-permission-clear:
|
|
||||||
description: "Törli a Tárgy engedélyeit"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szövegkörnyezetek engedélyeinek törlése"
|
|
||||||
sponge-parent-info:
|
|
||||||
description: "Megjeleníti a tárgy szüleinek adatait"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szövegszűrés körülményei"
|
|
||||||
sponge-parent-add:
|
|
||||||
description: "Szülő hozzáadása a tárgyhoz"
|
|
||||||
args:
|
|
||||||
"collection": "az a tárgyi gyűjtemény, ahol a szülő Tárgy"
|
|
||||||
"subject": "a szülő Tárgy neve"
|
|
||||||
"contexts...": "a szülő hozzáadásának összefüggései"
|
|
||||||
sponge-parent-remove:
|
|
||||||
description: "Eltávolít egy szülőt a tárgytól"
|
|
||||||
args:
|
|
||||||
"collection": "az a tárgyi gyűjtemény, ahol a szülő Tárgy"
|
|
||||||
"subject": "a szülő Tárgy neve"
|
|
||||||
"contexts...": "a szülő eltávolításának összefüggései"
|
|
||||||
sponge-parent-clear:
|
|
||||||
description: "Törli a Tárgyi szülőket"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szülők egyértelművé tételének összefüggései"
|
|
||||||
sponge-option-info:
|
|
||||||
description: "Megmutatja a tárggyal kapcsolatos információkat"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szövegszűrés körülményei"
|
|
||||||
sponge-option-set:
|
|
||||||
description: "Beállít egy opciót a Tárgyhoz"
|
|
||||||
args:
|
|
||||||
"key": "a beállítani kívánt kulcs"
|
|
||||||
"value": "a kulcs beállításához"
|
|
||||||
"contexts...": "az opció beállításához szükséges kontextusok"
|
|
||||||
sponge-option-unset:
|
|
||||||
description: "Lefuttat egy opciót a Tárgyhoz"
|
|
||||||
args:
|
|
||||||
"key": "a kiiktatás kulcsa"
|
|
||||||
"contexts...": "a kulcshoz való hozzáférés megszüntetésének kontextusai"
|
|
||||||
sponge-option-clear:
|
|
||||||
description: "Törli a Tárgy opciókat"
|
|
||||||
args:
|
|
||||||
"contexts...": "a szövegkörnyezetek egyértelművé tételének lehetőségei"
|
|
||||||
migration-command:
|
|
||||||
description: "Migrációs parancs"
|
|
||||||
migration-groupmanager:
|
|
||||||
description: "Migrációs parancs"
|
|
||||||
args:
|
|
||||||
"migrate as global": "ha a világi engedélyeket figyelmen kívül kell hagyni, és csak globális áttérést kell alkalmazni"
|
|
||||||
migration-powerfulperms:
|
|
||||||
description: "Migrációs parancs"
|
|
||||||
args:
|
|
||||||
"address": "a PP adatbázis címe"
|
|
||||||
"database": "a PP adatbázis neve"
|
|
||||||
"username": "a DB-be való bejelentkezéshez használt felhasználónév"
|
|
||||||
"password": "a DB-be való bejelentkezéshez használt jelszó"
|
|
||||||
"db table": "a PP tábla neve, ahol a játékos adatait tárolják"
|
|
@ -1,290 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: pl_PL (Polish)
|
|
||||||
# Author: dzegarek
|
|
||||||
|
|
||||||
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[UWAGA] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[BŁĄD] {0}"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&aOnline"
|
|
||||||
player-offline: "&cOffline"
|
|
||||||
loading-error: "Nie można załadować danych uprawnień. Spróbuj ponownie później."
|
|
||||||
op-disabled: "&bSystem vanilla OP jest wyłączony na tym serwerze."
|
|
||||||
op-disabled-sponge: "&2Stan operatora serwera nie ma wpływu na instalację wtyczki uprawnień. Proszę bezpośrednio edytować dane użytkownika."
|
|
||||||
log: "&3LOG &3&l> {0}"
|
|
||||||
export-log: "&3Eksport &3&l> &f{0}"
|
|
||||||
export-log-progress: "&3Eksport &3&l> &7{0}"
|
|
||||||
migration-log: "&3MIGRACJA &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3MIGRACJA &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "Komenda nie została rozpoznana."
|
|
||||||
command-no-permission: "Nie masz uprawnień do korzystania z tego polecenia!"
|
|
||||||
already-haspermission: "{0} ma już to uprawnienie!"
|
|
||||||
does-not-havepermission: "{0} nie ma tego zestawu uprawnień."
|
|
||||||
already-has-temp-permission: "{0} ma już tymczasowo uprawnienie!"
|
|
||||||
does-not-have-temp-permission: "{0} nie ma tymczasowego zezwolenia."
|
|
||||||
user-not-found: "&bNie można znaleźć użytkownika."
|
|
||||||
user-not-online: "&bUżytkownik &a{0}&b nie jest online."
|
|
||||||
user-save-success: "&7(Dane użytkownika zostały zapisane w pamięci)"
|
|
||||||
user-save-error: "Podczas zapisywania użytkownika wystąpił błąd."
|
|
||||||
group-not-found: "&bNie można odnaleźć grupy."
|
|
||||||
group-save-success: "&7(Dane grupy zostały zapisane w pamięci)"
|
|
||||||
group-save-error: "Podczas zapisywania grupy wystąpił błąd."
|
|
||||||
track-not-found: "&bŚcieżka nie została odnaleziona."
|
|
||||||
track-save-success: "&7(Dane ścieżki zostały zapisane w pamięci)"
|
|
||||||
track-save-error: "Podczas zapisywania ścieżki wystąpił błąd."
|
|
||||||
user-invalid-entry: "&d{0}&c nie jest poprawną nazwą użytkownika/uuid."
|
|
||||||
group-invalid-entry: "Nazwy grup mogą zawierać tylko znaki alfanumeryczne."
|
|
||||||
track-invalid-entry: "Nazwy dróg mogą zawierać tylko znaki alfanumeryczne."
|
|
||||||
server-world-invalid-entry: "Nazwy serwerów/świata mogą zawierać znaki alfanumeryczne, ale nie mogą przekraczać 36 znaków."
|
|
||||||
use-inherit-command: "Użyj komendy 'parent add' lub 'parent remove' zamiast określenia węzła."
|
|
||||||
verbose-invalid-filter: "&cNieprawidłowy szczegółowy filtr: &f{0}"
|
|
||||||
verbose-on: "&bZapis szczegółowych plików wyjściowych ustawiony jest na & aTRUE & bdla wszystkich uprawnień."
|
|
||||||
verbose-on-query: "&bZapis szczegółowych plików wyjściowych ustawiony jest na & aTRUE & bdla wszystkich pasujących do filtra: &f{0}"
|
|
||||||
verbose-off: "&bZapis szczegółowych plików wyjściowych jest ustawiony na &cFALSE&b."
|
|
||||||
verbose-recording-on: "&bVerbose recording set to &aTRUE &bfor all permissions."
|
|
||||||
verbose-recording-on-query: "&bZapis szczegółowych zapisów jest ustawiony na &aTRUE &bdla wszystkich uprawnień pasujących do filtra: &f{0}"
|
|
||||||
verbose-recording-upload-start: "&Zapis szczegółowych zapisów został wyłączony. Przesyłanie wyników..."
|
|
||||||
verbose-recording-url: "&aSzczegółowe URL wyników:"
|
|
||||||
tree-upload-start: "&bGenerowanie drzewa uprawnień..."
|
|
||||||
tree-empty: "&aNie można wygenerować drzewa. Nie znaleziono żadnych wyników."
|
|
||||||
tree-url: "&aURL drzewa uprawnień:"
|
|
||||||
search-searching: "&aPoszukiwanie użytkowników i grup &b{0}&a..."
|
|
||||||
search-searching-members: "&aWyszukiwanie użytkowników i grup, które dziedziczą &b{0}&a..."
|
|
||||||
search-result: "&aZnaleziono &b{0}&a wpisy z &b{1}&a użytkowników i &b{2}&a grup."
|
|
||||||
search-showing-users: "&bWyświetlanie wpisów użytkownika:"
|
|
||||||
search-showing-groups: "&bWyświetlanie wpisów grup:"
|
|
||||||
search-showing-users-with-page: "&bWyświetlanie wpisów użytkownika: {0}"
|
|
||||||
search-showing-groups-with-page: "&bWyświetlanie wpisów grup: {0}"
|
|
||||||
check-result: "&aWynik sprawdzenia uprawnień dla użytkownika &b{0}&a dla uprawnień &b{1}&a: &f{2}"
|
|
||||||
create-success: "&b{0}&a został pomyślnie utworzone."
|
|
||||||
delete-success: "&b{0}&a został pomyślnie usunięty."
|
|
||||||
rename-success: "&b{0}&a został pomyślnie zmieniony na &b{1}&a."
|
|
||||||
clone-success: "&b{0}&a został pomyślnie sklonowany na &b{1}&a."
|
|
||||||
already-inherits: "{0} już dziedziczy '{1}'."
|
|
||||||
does-not-inherit: "{0} nie dziedziczy '{1}'."
|
|
||||||
already-temp-inherits: "{0} już tymczasowo dziedziczy '{1}'."
|
|
||||||
does-not-temp-inherit: "{0} nie dziedziczy tymczasowo '{1}'."
|
|
||||||
track-already-contains: "Ścieżka {0} zawiera już grupę '{1}'."
|
|
||||||
track-does-not-contain: "Ścieżka {0} nie zawiera tej grupy '{1}'."
|
|
||||||
track-ambiguous-call: "Podany użytkownik jest członkiem wielu grup na tej ścieżce. Nie można określić ich lokalizacji."
|
|
||||||
group-already-exists: "Ta grupa już istnieje!"
|
|
||||||
group-does-not-exist: "Ta grupa nie istnieje!"
|
|
||||||
group-load-error: "Wystąpił nieoczekiwany błąd. Grupa nie została załadowana."
|
|
||||||
groups-load-error: "Wystąpił nieoczekiwany błąd. Nie można załadować wszystkich grup."
|
|
||||||
track-already-exists: "Ta ścieżka już istnieje!"
|
|
||||||
track-does-not-exist: "Ta ścieżka nie istnieje!"
|
|
||||||
track-load-error: "Wystąpił nieoczekiwany błąd. Ścieżka nie została załadowana."
|
|
||||||
tracks-load-error: "Wystąpił nieoczekiwany błąd. Nie można wczytać wszystkich ścieżek."
|
|
||||||
track-empty: "Ścieżka nie może być używana jako pusta lub zawierać tylko jedną grupę."
|
|
||||||
update-task-request: "&bZaktualizuj zaplanowane zadanie."
|
|
||||||
update-task-complete: "&aZaktualizowano zadanie."
|
|
||||||
update-task-complete-network: "&aZaktualizowano zadanie. Teraz próbuj wejść na inne serwery."
|
|
||||||
update-task-push-success: "&aInne serwery zostały powiadomione za pośrednictwem & b {0} wiadomości &apomyślnie."
|
|
||||||
update-task-push-failure: "&cPodczas przesyłania zmian do innych serwerów wystąpił błąd."
|
|
||||||
update-task-push-failure-not-setup: "&cPodczas przesyłania zmian do innych serwerów wystąpił błąd. Usługa wiadomości nie została skonfigurowana."
|
|
||||||
reload-config-success: "&aPlik konfiguracyjny został ponownie załadowany. &7(niektóre opcje będą obowiązywać tylko po ponownym uruchomieniu serwera.)"
|
|
||||||
info: >
|
|
||||||
{PREFIX}&2Uruchamianie &bLuckPerms v{0}&2 by &bLuck&2.\n
|
|
||||||
{PREFIX}&f- &3Platforma: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Metoda Składowania: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Nazwa Serwera: &f{3}\n
|
|
||||||
{PREFIX}&f- &3Synchronizacja Czasu: &a{4} &fminuty\n
|
|
||||||
{PREFIX}&f- &3Usługa wiadomości: &f{5}\n
|
|
||||||
{PREFIX}&f- &bLiczba:\n
|
|
||||||
{PREFIX}&f- &3Online Graczy: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Załadowanych użytkowników: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Załadowanych grup: &a{8}\n
|
|
||||||
{PREFIX}&f- &3Załadowanych Ścieżek: &a{9}\n
|
|
||||||
{PREFIX}&f- &3Rozmiar Loga: &a{10}\n
|
|
||||||
{PREFIX}&f- &3Rozmiar pamięci podręcznej UUID: &a{11}\n
|
|
||||||
{PREFIX}&f- &3Załadowane tłumaczenia: &a{12}\n
|
|
||||||
{PREFIX}&f- &3Kontrole wstępne: &a{13}\n
|
|
||||||
{PREFIX}&f- &3Kalkulatory Kontekstu: &a{14}\n
|
|
||||||
{PREFIX}&f- &3Unikalne uprawnienia: &a{15}\n
|
|
||||||
{PREFIX}&f- &bKonfiguracja:\n
|
|
||||||
{PREFIX}&f- &3Używany Server UUIDs: {16}\n
|
|
||||||
{PREFIX}&f- &bObliczanie uprawnień:\n
|
|
||||||
{PREFIX}&f- &3Łącznie ze światem: {17}\n
|
|
||||||
{PREFIX}&f- &3Łącznie z globalnym światem: {18}\n
|
|
||||||
{PREFIX}&f- &3Stosowanie grup globalnych: {19}\n
|
|
||||||
{PREFIX}&f- &3Stosowanie Globalnych Grup Światowych: {20}\n
|
|
||||||
{PREFIX}&f- &3Stosowanie symboli wieloznacznych: {21}\n
|
|
||||||
{PREFIX}&f- &3Stosowanie Regex: {22}\n
|
|
||||||
{PREFIX}&f- &3Stosowanie skrótu: {23}
|
|
||||||
create-group-error: "Podczas tworzenia grupy wystąpił błąd."
|
|
||||||
delete-group-error: "Podczas usuwania grupy wystąpił błąd."
|
|
||||||
delete-group-error-default: "Nie można usunąć grupy domyślnej."
|
|
||||||
groups-list: "&aGrupy: {0}"
|
|
||||||
create-track-error: "Podczas tworzenia ścieżki wystąpił błąd."
|
|
||||||
delete-track-error: "Podczas usuwania ścieżki wystąpił błąd."
|
|
||||||
tracks-list: "&aŚcieżki: {0}"
|
|
||||||
listnodes: "&b{0}'s Węzły:"
|
|
||||||
listnodes-with-page: "&b{0}'s Węzły: {1}"
|
|
||||||
listnodes-temp: >
|
|
||||||
&b{0}'s Tymczasowe Węzły:\n
|
|
||||||
{1}
|
|
||||||
listparents: >
|
|
||||||
&b{0}'s Grupy Rodzicielskie:\n
|
|
||||||
{1}
|
|
||||||
listparents-temp: >
|
|
||||||
&b{0}'s Tymczasowe Grupy Rodzicielskie:\n
|
|
||||||
{1}
|
|
||||||
list-tracks: >
|
|
||||||
&b{0}'s Ścieżki:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "{0} nie jest na żadnej ścieżce."
|
|
||||||
context-pair-inline: "&3{0}=&b{1}"
|
|
||||||
context-pair--global-inline: "&eglobalnie"
|
|
||||||
context-pair-sep: "&a, "
|
|
||||||
context-pair: "&8(&7{0}=&f{1}&8)"
|
|
||||||
check-permission: "&b{0}&a ma uprawnienia &b{1}&a ustawione na {2}&a w kontekście {3}&a."
|
|
||||||
setpermission-success: "&aUstawiono &b{0}&a na &b{1}&a dla &b{2}&a w kontekście {3}&a."
|
|
||||||
setpermission-temp-success: "&aUstawiono &b{0}&a na &b{1}&a dla &b{2}&a na czas trwania &b{3}&a w kontekście {4}&a."
|
|
||||||
unsetpermission-success: "&aUsunięto &b{0}&a dla &b{1}&a w kontekście {2}&a."
|
|
||||||
unset-temp-permission-success: "&aTymczasowe uprawnienia &b{0}&a dla &b{1}&a w kontekście {2}&a."
|
|
||||||
set-inherit-success: "&b{0}&a teraz dziedziczy uprawnienia od &b{1}&a w kontekście {2}&a."
|
|
||||||
set-temp-inherit-success: "&b{0}&a teraz dziedziczy uprawnienia &b{1}&a na czas trwania &b{2}&a w kontekście {3}&a."
|
|
||||||
set-parent-success: "&b{0}&a gdyby istniejące grupy macierzyste zostały wyczyszczone, a teraz tylko dziedziczą &b{1}&a w kontekście {2}&a."
|
|
||||||
set-track-parent-success: "&b{0}&a miały istniejące grupy macierzyste na ścieżce &b{1}&a wyczyszczone, a teraz dziedziczą &b{2}&a w kontekście {3}&a."
|
|
||||||
unset-inherit-success: "&b{0}&a już nie dziedziczy uprawnień &b{1}&a w kontekście {2}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a przestaje tymczasowo dziedziczyć uprawnienia &b{1}&a w kontekście {2}&a."
|
|
||||||
clear-success: "&b{0}&a's uprawnienia zostały wyczyszczone w kontekście {1}&a. (&b{2}&a węzły zostały usunięte.)"
|
|
||||||
clear-success-singular: "&b{0}&a's uprawnienia zostały wyczyszczone w kontekście {1}&a. (&b{2}&a węzeł został usunięty.)"
|
|
||||||
parent-clear-success: "&b{0}&a's rodzice zostali wyczyszczeni w kontekście {1}&a. &b{2}&a węzły zostały usunięte.)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a's rodzice zostali wyczyszczeni w kontekście {1}&a. &b{2}&a węzeł został usunięty.)"
|
|
||||||
parent-clear-track-success: "&b{0}&a's rodzice na ścieżce &b{1}&a zostali wyczyszczeni w kontekście {2}&a. &b{3}&a węzły zostały usunięte.)"
|
|
||||||
parent-clear-track-success-singular: "&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. &b{3}&a węzeł został usunięty.)"
|
|
||||||
meta-clear-success: "&b{0}&a's meta zostały usunięte w kontekście {1}&a. &b{2}&a węzły zostały usunięte.)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a's meta zostały usunięte w kontekście {1}&a. &b{2}&a węzeł został usunięty.)"
|
|
||||||
illegal-date-error: "Nie można przeanalizować daty '{0}'."
|
|
||||||
past-date-error: "W przeszłości nie można ustawić daty!"
|
|
||||||
chat-meta-prefix-header: "&b{0}'s Prefiksy"
|
|
||||||
chat-meta-suffix-header: "&b{0}'s Suffiksy"
|
|
||||||
meta-header: "&b{0}'s Meta"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f\"{1}&f\" &8(&7odziedziczone po &a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f\"{1}&f\" &8(&7odziedziczone po &a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7odziedziczone po &a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7odziedziczone po &a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0} nie ma prefiksów."
|
|
||||||
chat-meta-suffix-none: "&b{0} has no suffiksów."
|
|
||||||
meta-none: "&b{0} nie ma meta."
|
|
||||||
meta-invalid-priority: "Nieprawidłowy priorytet '{0}'. Spodziewany numer."
|
|
||||||
already-has-chat-meta: "{0} już to ma {1} ustawione."
|
|
||||||
does-not-have-chat-meta: "{0} nie ma tego {1} ustawionego."
|
|
||||||
add-chatmeta-success: "&b{0}&a ma {1} &f\"{2}&f\"&a ustawiony priorytet z &b{3}&a w kontekście {4}&a."
|
|
||||||
add-temp-chatmeta-success: "&b{0}&a ma {1} &f\"{2}&f\"&a ustawiony priorytet z &b{3}&a na czas trwania &b{4}&a w kontekście {5}&a."
|
|
||||||
remove-chatmeta-success: "&b{0}&a ma {1} &f\"{2}&f\"&a at priority &b{3}&a removed in context {4}&a."
|
|
||||||
bulk-remove-chatmeta-success: "&b{0}&a ma cały {1}es na priorytecie &b{2}&a usunięte w kontekście {3}&a."
|
|
||||||
remove-temp-chatmeta-success: "&b{0}&a ma tymczasowo {1} &f\"{2}&f\"&a at priority &b{3}&a usunięte w kontekście {4}&a."
|
|
||||||
bulk-remove-temp-chatmeta-success: "&b{0}&a miał wszystkie tymczasowe {1}es na priorytecie &b{2}&a usunięte w kontekście {3}&a."
|
|
||||||
already-has-meta: "{0} ma już tę parę par kluczy meta."
|
|
||||||
set-meta-success: "&aUstawiono wartość meta dla klucza &f\"{0}&f\"&a do &f\"{1}&f\"&a dla &b{2}&a w kontekście {3}&a."
|
|
||||||
set-meta-temp-success: "&aUstawiono wartości meta dla klucza &f\"{0}&f\"&a do &f\"{1}&f\"&a dla &b{2}&a na czas trwania &b{3}&a w kontekście {4}&a."
|
|
||||||
unset-meta-success: "&aUsunięto wartość meta za pomocą klucza &f\"{0}&f\"&a dla &b{1}&a w kontekście {2}&a."
|
|
||||||
unset-meta-temp-success: "&aUsunięcie tymczasowej wartości meta za pomocą klucza &f\"{0}&f\"&a dla &b{1}&a w kontekście {2}&a."
|
|
||||||
bulk-update-invalid-data-type: "Nieprawidłowy typ. Spodziewane 'all', 'users' lub 'groups'."
|
|
||||||
bulk-update-invalid-constraint: "Nieprawidłowe ograniczenie &4{0}&c. Ograniczenia powinny być w formacie '&f<field> <comparison operator> <value>&c'."
|
|
||||||
bulk-update-invalid-comparison: "Nieprawidłowy operator porównania '&4{0}&c'. Oczekiwany jeden z poniższych: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&aOperacja aktualizacji została w kolejce. &7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&aUruchom &b/{0} bulkupdate confirm {1}&a i wykonaj aktualizacje."
|
|
||||||
bulk-update-unknown-id: "&aOperacja z id &b{0}&a nie istnieje lub upłynął."
|
|
||||||
bulk-update-starting: "&aUaktualnianie zbiorcze."
|
|
||||||
bulk-update-success: "&bAktualizacja zbiorcza powiodła się pomyślnie."
|
|
||||||
bulk-update-failure: "&cAktualizacja zbiorcza nie powiodła się. Sprawdź, czy konsola nie zawiera błędów."
|
|
||||||
user-info-general: >
|
|
||||||
{PREFIX}&b&l> &bInfo Użytkownika: &f{0}\n
|
|
||||||
{PREFIX}&f- &3UUID: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Status: {2}\n
|
|
||||||
{PREFIX}&f- &3Grupa Podstawowa: &f{3}\n
|
|
||||||
{PREFIX}&f- &aLiczba:\n
|
|
||||||
{PREFIX}&f- &3Uprawnień: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Tymczasowych uprawnień: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Prefiksów: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Suffiksów: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Meta: &a{8}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &aDane buforowane:\n
|
|
||||||
{PREFIX}&f- &3Posiada dane kontekstowe: {0}\n
|
|
||||||
{PREFIX}&f- &3Obecne konteksty: {1}\n
|
|
||||||
{PREFIX}&f- &3Obecny Prefiks: {2}\n
|
|
||||||
{PREFIX}&f- &3Obecny Suffiks: {3}
|
|
||||||
info-parent-header: "&f- &aGrupy Rodziców:"
|
|
||||||
info-temp-parent-header: "&f- &aTymczasowe Grupy Rodziców:"
|
|
||||||
user-removegroup-error-primary: "Nie można usunąć użytkownika z podstawowej grupy."
|
|
||||||
user-primarygroup-success: "&b{0}&a's pierwsza grupa została ustawiona na &b{1}&a."
|
|
||||||
user-primarygroup-warn-option: "&cUwaga: Podstawowa metoda obliczania grupy jest używana przez ten serwer &7({0}) &cmoże nie odzwierciedlać tej zmiany."
|
|
||||||
user-primarygroup-error-alreadyhas: "Użytkownik ma już tę grupę jako pierwszą."
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a nie był już użytkownikiem z &b{1}&a, dodając je teraz."
|
|
||||||
user-track-error-not-contain-group: "Podany przez Ciebie użytkownik nie jest jeszcze w żadnej z grup na tej ścieżce."
|
|
||||||
user-track-added-to-first: "&b{0}&a nie jest w żadnej grupie na tej ścieżce, więc został dodany do pierwszej grupy, &b{1}&a w kontekście {2}&a."
|
|
||||||
user-promote-success: "&aPromowanie użytkownika wzdłuż toru &b{0}&a z &b{1}&a do &b{2}&a w kontekście {3}&a."
|
|
||||||
user-promote-error-endoftrack: "Koniec ścieżki &4{0}&c został osiągnięty. Nie można promować użytkownika."
|
|
||||||
user-promote-error-malformed: >
|
|
||||||
{PREFIX}Następna grupa na ścieżce, {0}, już nie istnieje. Nie można promować użytkownika..\n
|
|
||||||
{PREFIX}Albo utwórz grupę lub usuń ją ze ścieżki i spróbuj ponownie.
|
|
||||||
user-demote-success: "&aObniżanie użytkownika wzdłuż ścieżki &b{0}&a z &b{1}&a do &b{2}&a w kontekście {3}&a."
|
|
||||||
user-demote-endoftrack: "Koniec ścieżki &4{0}&c został osiągnięty, więc &4{1}&c zostało usunięte z &4{2}&c."
|
|
||||||
user-demote-error-malformed: >
|
|
||||||
{PREFIX}Poprzednia grupa na ścieżce, {0}, już nie istnieje. Nie można obniżyć użytkownika.\n
|
|
||||||
{PREFIX}Albo utwórz grupę lub usuń ją ze ścieżki i spróbuj ponownie.
|
|
||||||
group-info-general: >
|
|
||||||
{PREFIX}&b&l> &bInfo Grupy: &f{0}\n
|
|
||||||
{PREFIX}&f- &3Wyświetlana Nazwa: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Rola: &f{2}\n
|
|
||||||
{PREFIX}&f- &aLiczba:\n
|
|
||||||
{PREFIX}&f- &3Uprawnienia: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Tymczasowe Uprawnienia: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Prefiksy: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Suffiksy: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Meta: &a{7}
|
|
||||||
group-set-weight: "&aSet weight to &b{0}&a for group &b{1}&a."
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &bWyświetlanie ścieżki: &f{0}\n
|
|
||||||
{PREFIX}&f- &7Ścieżka: &f{1}
|
|
||||||
track-clear: "&b{0}&a grupy zostały usunięte"
|
|
||||||
track-append-success: "&aGrupa &b{0}&a została z powodzeniem dodana do śledzenia &b{1}&a."
|
|
||||||
track-insert-success: "&aGrupa &b{0}&a została pomyślnie wstawiona do ścieżki &b{1}&a na pozycji &b{2}&a."
|
|
||||||
track-insert-error-number: "Przewidywany numer, ale otrzymany: {0}"
|
|
||||||
track-insert-error-invalid-pos: "Nie można wstawić w pozycji {0}. Wyloguj się z granic."
|
|
||||||
track-remove-success: "&aGrupa &b{0}&a została z powodzeniem usunięta ze ścieżki &b{1}&a."
|
|
||||||
log-load-error: "Nie można załadować loga."
|
|
||||||
log-invalid-page: "Nieprawidłowy numer strony."
|
|
||||||
log-invalid-page-range: "Nieprawidłowy numer strony. Wprowadź wartość między 1 a {0}."
|
|
||||||
log-no-entries: "&bBrak wpisów do logów."
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} temu&8) {2}"
|
|
||||||
log-notify-toggle-on: "&aWłączone&b wyjście z logowania."
|
|
||||||
log-notify-toggle-off: "&cWyłączone&b wyjście z logowania."
|
|
||||||
log-notify-already-on: "Obecnie otrzymujesz powiadomienia."
|
|
||||||
log-notify-already-off: "Obecnie nie otrzymujesz powiadomień."
|
|
||||||
log-notify-unknown: "Stan nieznany. Oczekiwanie na \"on\" lub \"off\"."
|
|
||||||
log-search-header: "&aWyświetlanie ostatnich działań dotyczących zapytania &b{0} &a(strona &f{1}&a z &f{2}&a)"
|
|
||||||
log-recent-header: "&aWyświetlanie ostatnich działań (strona &f{0}&a z &f{1}&a)"
|
|
||||||
log-recent-by-header: "&aPokazanie ostatnich działań przez &b{0} &a(strona &f{1}&a z &f{2}&a)"
|
|
||||||
log-history-user-header: "&aWyświetlanie historii dla użytkowników &b{0} &a(strona &f{1}&a z &f{2}&a)"
|
|
||||||
log-history-group-header: "&aWyświetlanie historii dla grup &b{0} &a(strona &f{1}&a z &f{2}&a)"
|
|
||||||
log-history-track-header: "&aWyświetlanie historii dla ścieżki &b{0} &a(strona &f{1}&a z &f{2}&a)"
|
|
||||||
log-export-already-exists: "Błąd: Plik {0} już istnieje."
|
|
||||||
log-export-not-writable: "Błąd: Plik {0} jest tylko do odczytu."
|
|
||||||
log-export-empty: "Log jest pusty i dlatego nie może być eksportowany"
|
|
||||||
log-export-failure: "Podczas zapisywania do pliku wystąpił nieoczekiwany błąd."
|
|
||||||
log-export-success: "&aPomyślnie exportowano log do &b{0}&a."
|
|
||||||
import-already-running: "Inny proces importowania jest już uruchomiony. Spróbuj ponownie później."
|
|
||||||
export-already-running: "Inny proces eksportowania jest już uruchomiony. Spróbuj ponownie później."
|
|
||||||
import-log-doesnt-exist: "Błąd: Plik {0} nie istnieje."
|
|
||||||
import-log-not-readable: "Błąd: Plik {0} nie można odczytać."
|
|
||||||
import-log-failure: "Podczas odtwarzania loga wystąpił nieoczekiwany błąd."
|
|
||||||
import-progress: "&b(Import) &b-> &f{0} &fprocent kompletne &7- &b{1}&f/&b{2} &foperacja zakończona z &c{3} &fbłędami."
|
|
||||||
import-progress-sin: "&b(Import) &b-> &f{0} &fprocent kompletne &7- &b{1}&f/&b{2} &foperacja zakończona z &c{3} &fbłędami."
|
|
||||||
import-start: "&b(Import) &b-> &fUruchamianie procesu importowania."
|
|
||||||
import-end-complete: "&b(Import) &a&lZAKOŃCZONE &7- zajęło &b{0} &7sekundy - &7Nie ma błędów."
|
|
||||||
import-end-complete-err: "&b(Import) &a&lZAKOŃCZONE &7- zajęło &b{0} &7sekundy - &c{1} błędy."
|
|
||||||
import-end-complete-err-sin: "&b(Import) &a&lZAKOŃCZONE &7- zajęło &b{0} &7sekundy - &c{1} błąd."
|
|
||||||
import-end-error-header: >
|
|
||||||
{PREFIX}&b(Import) &7------------> &fWyświetlanie błędu #&b{0} &7<------------\n
|
|
||||||
{PREFIX}&b(Import) &fWykonując: &3Komende #{1}\n
|
|
||||||
{PREFIX}&b(Import) &fKomenda: &7{2}\n
|
|
||||||
{PREFIX}&b(Import) &fWpisane: &3{3}\n
|
|
||||||
{PREFIX}&b(Import) &fWyjście:
|
|
||||||
import-end-error-content: "&b(Import) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Import) &7<------------------------------------------>"
|
|
@ -1,303 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: ru_RU (Russian)
|
|
||||||
# Author: Pixelmon.PRO
|
|
||||||
|
|
||||||
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[ПРЕДУПРЕЖДЕНИЕ] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ОШИБКА] {0}"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&aОнлайн"
|
|
||||||
player-offline: "&cОффлайн"
|
|
||||||
loading-error: "Не удалось загрузить данные разрешений. Пожалуйста обратитесь к Администратору."
|
|
||||||
op-disabled: "&bНа этом сервере отключена ванильная система OP."
|
|
||||||
op-disabled-sponge: "&2Статус Оператора Сервера не влияет на установленный плагин разрешений. Пожалуйста, отредактируйте данные пользователя напрямую."
|
|
||||||
log: "&3LOG &3&l> {0}"
|
|
||||||
export-log: "&3ЭКСПОРТ &3&l> &f{0}"
|
|
||||||
export-log-progress: "&3ЭКСПОРТ &3&l> &7{0}"
|
|
||||||
migration-log: "&3ПЕРЕМЕЩЕНИЕ &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3ПЕРЕМЕЩЕНИЕ &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "Команда не распознана."
|
|
||||||
command-no-permission: "У вас нет разрешения на использование этой команды!"
|
|
||||||
already-haspermission: "{0} уже имеет такое разрешение!"
|
|
||||||
does-not-havepermission: "{0} не имеет этого набора разрешений."
|
|
||||||
already-has-temp-permission: "{0} уже имеет этот набор временных разрешений!"
|
|
||||||
does-not-have-temp-permission: "{0} не имеет этого набора временных разрешений."
|
|
||||||
user-not-found: "&bНе удалось найти пользователя."
|
|
||||||
user-not-online: "&bПользователь &a{0}&b не онлайн."
|
|
||||||
user-no-data: "&bПользователь &a{0}&b не имеет загруженных данных."
|
|
||||||
user-save-success: "&7(Пользовательские данные были сохранены на хранение)"
|
|
||||||
user-save-error: "При сохранении пользователя произошла ошибка."
|
|
||||||
user-create-fail: "При создании нового пользователя возникла ошибка."
|
|
||||||
group-not-found: "&bНе удалось найти группу."
|
|
||||||
group-save-success: "&7(Групповые данные были сохранены на хранение)"
|
|
||||||
group-save-error: "При сохранении группы произошла ошибка."
|
|
||||||
track-not-found: "&bНе удалось найти путь."
|
|
||||||
track-save-success: "&7(Данные о путе сохранены на хранение)"
|
|
||||||
track-save-error: "При сохранении пути произошла ошибка."
|
|
||||||
user-invalid-entry: "&d{0}&c не является допустимым именем пользователя/uuid."
|
|
||||||
group-invalid-entry: "Имена групп могут содержать только буквенно-цифровые символы."
|
|
||||||
track-invalid-entry: "Имена путей могут содержать только буквенно-цифровые символы."
|
|
||||||
server-invalid-entry: "Имена серверов могут содержать только буквенно-цифровые символы."
|
|
||||||
use-inherit-command: "Используйте команды «parent add» и «parent remove» вместо указания узла (node)."
|
|
||||||
verbose-invalid-filter: "&cНедопустимый подробный (verbose) фильтр: &f{0}"
|
|
||||||
verbose-on: "&Запись подробной проверки установлена на &aTRUE &bдля всех разрешений (пермов)."
|
|
||||||
verbose-on-query: "&Запись подробной проверки установлена на &aTRUE &bДля разрешений, соответствующих следующим фильтрам: &f{0}"
|
|
||||||
verbose-off: "&Запись подробной проверки установлена на &cFALSE&b."
|
|
||||||
verbose-recording-on: "&Запись подробной записи установлена на &aTRUE &bдля всех разрешений."
|
|
||||||
verbose-recording-on-query: "&Запись подробной записи установлена на &aTRUE &bДля разрешений, соответствующих следующим фильтрам: &f{0}"
|
|
||||||
verbose-recording-upload-start: "&bЗапись подробной информации была отключена. Загрузка результатов..."
|
|
||||||
verbose-recording-url: "&aПодробный URL результатов:"
|
|
||||||
tree-upload-start: "&bСоздание дерева разрешений..."
|
|
||||||
tree-empty: "&aНе удалось создать дерево. Ничего не найдено."
|
|
||||||
tree-url: "&aURL дерева разрешений:"
|
|
||||||
search-searching: "&aПоиск пользователей и групп с помощью &b{0}&a..."
|
|
||||||
search-searching-members: "&aПоиск пользователей и групп, унаследовавших от &b{0}&a..."
|
|
||||||
search-result: "&aНайдено &b{0}&a записи из &b{1}&a пользователей и &b{2}&a групп."
|
|
||||||
search-showing-users: "&bПросмотр записей пользователя:"
|
|
||||||
search-showing-groups: "&bПросмотр записей в группах:"
|
|
||||||
search-showing-users-with-page: "&bПросмотр записей пользователя: {0}"
|
|
||||||
search-showing-groups-with-page: "&bПросмотр записей в группах: {0}"
|
|
||||||
check-result: "&aРезультат проверки разрешения пользователя &b{0}&a на разрешение &b{1}&a: &f{2}"
|
|
||||||
create-success: "&b{0}&a было успешно создано."
|
|
||||||
delete-success: "&b{0}&a успешно удален."
|
|
||||||
rename-success: "&b{0}&a был успешно переименован в &b{1}&a."
|
|
||||||
clone-success: "&b{0}&a был успешно клонирован на &b{1}&a."
|
|
||||||
already-inherits: "{0} уже наследует '{1}'."
|
|
||||||
does-not-inherit: "{0} не наследует '{1}'."
|
|
||||||
already-temp-inherits: "{0} уже временно наследует '{1}'."
|
|
||||||
does-not-temp-inherit: "{0} временно не наследует '{1}'."
|
|
||||||
track-already-contains: "Путь {0} уже содержит группу '{1}'."
|
|
||||||
track-does-not-contain: "Путь {0} не содержит группу '{1}'."
|
|
||||||
track-ambiguous-call: "Указанный пользователь является членом нескольких групп на этом пути. Невозможно определить их местоположение."
|
|
||||||
group-already-exists: "Эта группа уже существует!"
|
|
||||||
group-does-not-exist: "Эта группа не существует!"
|
|
||||||
group-load-error: "Произошла непредвиденная ошибка. Группа не загружена."
|
|
||||||
groups-load-error: "Произошла непредвиденная ошибка. Не удалось загрузить все группы."
|
|
||||||
track-already-exists: "Этот путь уже существует!"
|
|
||||||
track-does-not-exist: "Этот путь не существует!"
|
|
||||||
track-load-error: "Произошла непредвиденная ошибка. Путь не загружен."
|
|
||||||
tracks-load-error: "Произошла непредвиденная ошибка. Не удалось загрузить все пути."
|
|
||||||
track-empty: "Путь нельзя использовать, так как он пуст или содержит только одну группу."
|
|
||||||
update-task-request: "&bОбновление задачи запланировано."
|
|
||||||
update-task-complete: "&aОбновление задачи завершено."
|
|
||||||
update-task-complete-network: "&aОбновление задачи завершено. Теперь пытаемся подключиться к другим серверам."
|
|
||||||
update-task-push-success: "&aДругие серверы были уведомлены через &b{0} cообщения и удаленный доступ."
|
|
||||||
update-task-push-failure: "&cОшибка при нажатии изменений на других серверах."
|
|
||||||
update-task-push-failure-not-setup: "&cОшибка при нажатии изменений на других серверах. Служба обмена сообщениями не настроена."
|
|
||||||
reload-config-success: "&aФайл конфигурации был перезагружен. &7(Некоторые параметры будут применяться только после перезапуска сервера.)"
|
|
||||||
info: >
|
|
||||||
{PREFIX}&2Выполнение &bLuckPerms v{0}&2 by &bLuck&2.\n
|
|
||||||
{PREFIX}&f- &3Платформа: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Способ Хранения: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Имя Сервера: &f{3}\n
|
|
||||||
{PREFIX}&f- &3Интервал Синхронизации: &a{4} &fминут\n
|
|
||||||
{PREFIX}&f- &3Служба обмена сообщениями: &f{5}\n
|
|
||||||
{PREFIX}&f- &bГрафы:\n
|
|
||||||
{PREFIX}&f- &3Игроки Онлайн: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Загруженные пользователи: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Загруженные группы: &a{8}\n
|
|
||||||
{PREFIX}&f- &3Загруженные пути: &a{9}\n
|
|
||||||
{PREFIX}&f- &3Размер лога: &a{10}\n
|
|
||||||
{PREFIX}&f- &3UUID Размер кеша: &a{11}\n
|
|
||||||
{PREFIX}&f- &3Переводы загружены: &a{12}\n
|
|
||||||
{PREFIX}&f- &3Контексты перед обработкой: &a{13}\n
|
|
||||||
{PREFIX}&f- &3Счетчик контекста: &a{14}\n
|
|
||||||
{PREFIX}&f- &3Уникальные разрешения: &a{15}\n
|
|
||||||
{PREFIX}&f- &bКонфигурация:\n
|
|
||||||
{PREFIX}&f- &3Использует сервер UUIDs: {16}\n
|
|
||||||
{PREFIX}&f- &bСчетчик разрешений:\n
|
|
||||||
{PREFIX}&f- &3Включая глобальные: {17}\n
|
|
||||||
{PREFIX}&f- &3Включая глобальный мир: {18}\n
|
|
||||||
{PREFIX}&f- &3Применения глобальных групп: {19}\n
|
|
||||||
{PREFIX}&f- &3Применения глобальных групп мира: {20}\n
|
|
||||||
{PREFIX}&f- &3Применения подстановочных знаков (Wildcards): {21}\n
|
|
||||||
{PREFIX}&f- &3Применение регулярных выражений: {22}\n
|
|
||||||
{PREFIX}&f- &3Применение стенографии (Shorthand): {23}
|
|
||||||
create-group-error: "При создании группы произошла ошибка."
|
|
||||||
delete-group-error: "При удалении группы произошла ошибка."
|
|
||||||
delete-group-error-default: "Вы не можете удалить группу по умолчанию."
|
|
||||||
groups-list: "&aГруппы: {0}"
|
|
||||||
create-track-error: "При создании пути произошла ошибка."
|
|
||||||
delete-track-error: "При удалении пути произошла ошибка."
|
|
||||||
tracks-list: "&aГенеральные пути: {0}"
|
|
||||||
listnodes: "&b{0}'s Узлы:"
|
|
||||||
listnodes-with-page: "&b{0}'s Узлы: {1}"
|
|
||||||
listnodes-temp: >
|
|
||||||
&b{0}'s Временные узлы:\n
|
|
||||||
{1}
|
|
||||||
listparents: >
|
|
||||||
&b{0}'s Родительские группы:\n
|
|
||||||
{1}
|
|
||||||
listparents-temp: >
|
|
||||||
&b{0}'s Временные родительские группы:\n
|
|
||||||
{1}
|
|
||||||
listgroups: >
|
|
||||||
&b{0}'s Группы:\n
|
|
||||||
{1}
|
|
||||||
listgroups-temp: >
|
|
||||||
&b{0}'s Временные группы:\n
|
|
||||||
{1}
|
|
||||||
list-tracks: >
|
|
||||||
&b{0}'s Пути:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "{0} не на каких-либо путях."
|
|
||||||
context-pair-inline: "&3{0}=&b{1}"
|
|
||||||
context-pair--global-inline: "&eГлобальный"
|
|
||||||
context-pair-end: "&a."
|
|
||||||
context-pair-sep: "&a, "
|
|
||||||
context-pair: "&8(&7{0}=&f{1}&8)"
|
|
||||||
check-permission: "&b{0}&a имеет разрешение &b{1}&a установленое в {2}&a в контексте {3}&a."
|
|
||||||
check-permission-inherited: "&b{0}&a имеет разрешение &b{1}&a установленое в {2}&a в контексте {3}&a, наследованный от &b{4}&a."
|
|
||||||
setpermission-success: "&aУстановить &b{0}&a к &b{1}&a для &b{2}&a."
|
|
||||||
setpermission-temp-success: "&aУстановить &b{0}&a к &b{1}&a для &b{2}&a На срок &b{3}&a."
|
|
||||||
unsetpermission-success: "&aСбросить &b{0}&a для &b{1}&a."
|
|
||||||
unset-temp-permission-success: "&aСбросить временное разрешение &b{0}&a для &b{1}&a."
|
|
||||||
set-inherit-success: "&b{0}&a теперь наследует разрешения от &b{1}&a."
|
|
||||||
set-parent-success: "&b{0}&a их существующие родительские группы очищены, и теперь только наследуют &b{1}&a."
|
|
||||||
set-temp-inherit-success: "&b{0}&a теперь наследует разрешения от &b{1}&a на срок &b{2}&a."
|
|
||||||
unset-inherit-success: "&b{0}&a больше не наследует разрешения от &b{1}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a больше не наследует временные разрешения (пермы) &b{1}&a."
|
|
||||||
clear-success: "&b{0}&a's разрешения были очищены. (&b{1}&a узлы были удалены.)"
|
|
||||||
clear-success-singular: "&b{0}&a's разрешения были очищены. (&b{1}&a узел удален.)"
|
|
||||||
parent-clear-success: "&b{0}&a's родители очищены. (&b{1}&a узлы были удалены.)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a's родители очищены. (&b{1}&a узел удален.)"
|
|
||||||
meta-clear-success: "&b{0}&a's мета очищена. (&b{1}&a узлы были удалены.)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a's мета очищена. (&b{1}&a узел удален.)"
|
|
||||||
illegal-date-error: "Не удалось выполнить синтаксический анализ даты '{0}'."
|
|
||||||
past-date-error: "Вы не можете установить дату в прошлом!"
|
|
||||||
chat-meta-prefix-header: "&b{0}'s Префиксы"
|
|
||||||
chat-meta-suffix-header: "&b{0}'s Суффиксы"
|
|
||||||
meta-header: "&b{0}'s Мета"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f\"{1}&f\" &8(&7унаследованный от &a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f\"{1}&f\" &8(&7унаследованный от &a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7унаследованный от &a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f\"{1}&f\" &8(&7унаследованный от &a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0} не имеет префиксов."
|
|
||||||
chat-meta-suffix-none: "&b{0} не имеет суффиксов."
|
|
||||||
meta-none: "&b{0} не имеет мету."
|
|
||||||
meta-invalid-priority: "Недопустимый приоритет '{0}'. Ожидается число."
|
|
||||||
already-has-chat-meta: "{0} уже имеет этот {1}."
|
|
||||||
does-not-have-chat-meta: "{0} не имеет этого {1}."
|
|
||||||
add-chatmeta-success: "&b{0}&a имеет {1} &f\"{2}&f\"&a установлен в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
add-temp-chatmeta-success: "&b{0}&a имеет {1} &f\"{2}&f\"&a установлен в приоритете &b{3}&a на срок &b{4}&a в контексте {5}&a."
|
|
||||||
remove-chatmeta-success: "&b{0}&a имеет {1} &f\"{2}&f\"&a в приоритете &b{3}&a удален из контекста {4}&a."
|
|
||||||
bulk-remove-chatmeta-success: "&b{0}&a все временные {1}es в приоритете &b{3}&a были удалены из контекста {4}&a."
|
|
||||||
remove-temp-chatmeta-success: "&b{0}&a временно установленный {1} &f\"{2}&f\"&a в приоритете &b{3}&a был удален из контекста {4}&a."
|
|
||||||
bulk-remove-temp-chatmeta-success: "&b{0}&a все временные {1}es в приоритете &b{3}&a были удалены из контекста {4}&a."
|
|
||||||
already-has-meta: "{0} уже установлено, что установлена пара мета-значения клавиши."
|
|
||||||
set-meta-success: "&aУстановить метазначение для клавиши &f\"{0}&f\"&a к &f\"{1}&f\"&a для &b{2}&a."
|
|
||||||
set-meta-temp-success: "&aУстановить метазначение для клавиши &f\"{0}&f\"&a к &f\"{1}&f\"&a для &b{2}&a на срок &b{3}&a."
|
|
||||||
unset-meta-success: "&aСбросить метазначение с помощью клавиши &f\"{0}&f\"&a для &b{1}&a."
|
|
||||||
unset-meta-temp-success: "&aСбросить временное мета-значение с помощью клавиши &f\"{0}&f\"&a для &b{1}&a."
|
|
||||||
bulk-update-invalid-data-type: "Недопустимый тип. Выберите 'all', 'users' или 'groups'."
|
|
||||||
bulk-update-invalid-constraint: "Недопустимое ограничение &4{0}&c. Ограничения должны быть в формате '&f<поле> <оператор сравнения> <значение>&c'."
|
|
||||||
bulk-update-invalid-comparison: "Недопустимый оператор сравнения '&4{0}&c'. Выберите одно из следующих: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&aМассовое обновление было поставлено в очередь. &7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&aВведите &b/{0} bulkupdate confirm {1} &aчтобы подтвердить выполнение массового обновления."
|
|
||||||
bulk-update-unknown-id: "&aОперация с id &b{0} &aне существует или истек срок действия."
|
|
||||||
bulk-update-starting: "&aВыполнение массового обновления."
|
|
||||||
bulk-update-success: "&bМассовое обновление успешно завершено."
|
|
||||||
bulk-update-failure: "&cНе удалось выполнить массовое обновление. Проверьте консоль на наличие ошибок."
|
|
||||||
bulk-change-type-error: "Недопустимый тип. Введите 'server' или 'world'."
|
|
||||||
bulk-change-success: "&aПрименение изменения успешно. {0} записей изменено."
|
|
||||||
user-info-general: >
|
|
||||||
{PREFIX}&b&l> &bИнформация о пользователе: &f{0}\n
|
|
||||||
{PREFIX}&f- &3UUID: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Статус: {2}\n
|
|
||||||
{PREFIX}&f- &3Первичная группа: &f{3}\n
|
|
||||||
{PREFIX}&f- &aГрафы:\n
|
|
||||||
{PREFIX}&f- &3Разрешения: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Временные разрешения: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Префиксы: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Суффиксы: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Мета: &a{8}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &aКэшированные данные:\n
|
|
||||||
{PREFIX}&f- &3Загружается: {0}\n
|
|
||||||
{PREFIX}&f- &3Текущие контексты: {1}\n
|
|
||||||
{PREFIX}&f- &3Текущие префиксы: {2}\n
|
|
||||||
{PREFIX}&f- &3Текущие суффиксы: {3}
|
|
||||||
info-parent-header: "&f- &aРодительские группы:"
|
|
||||||
info-temp-parent-header: "&f- &aВременные родительские группы:"
|
|
||||||
user-getuuid: "&bUUID для &b{0}&b это &b{1}&b."
|
|
||||||
user-removegroup-error-primary: "Вы не можете удалить пользователя из своей основной группы."
|
|
||||||
user-primarygroup-success: "&b{0}&a's для основной группы установил значение &b{1}&a."
|
|
||||||
user-primarygroup-warn-option: "&cВнимание: метод расчета основной группы, используемый этим сервером &7({0}) &cМожет не отражать это изменение."
|
|
||||||
user-primarygroup-error-alreadyhas: "Пользователь уже установил эту группу в качестве основной группы."
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a еще не был членом &b{1}&a, Добавить его сейчас."
|
|
||||||
user-track-error-not-contain-group: "Указанный пользователь не находится ни в каких группах на этом пути."
|
|
||||||
user-track-added-to-first: "&b{0}&a не находится ни в каких группах на этом треке, поэтому они были добавлены в первую группу &b{1}&a в контексте {2}&a."
|
|
||||||
user-promote-success: "&aПовышение пользователя &b{0}&a от &b{1}&a к &b{2}&a в контексте {3}&a."
|
|
||||||
user-promote-error-endoftrack: "Конец пути &4{0}&c, был достигнут. Не удалось повысить пользователя."
|
|
||||||
user-promote-error-malformed: >
|
|
||||||
{PREFIX}Следующая группа на пути, {0}, более не существует. Не удалось продвинуть пользователя.\n
|
|
||||||
{PREFIX}Создайте группу или удалите ее с пути и повторите попытку.
|
|
||||||
user-demote-success: "&aПонижение пользователя по пути &b{0}&a от &b{1}&a к &b{2}&a в контексте {3}&a."
|
|
||||||
user-demote-endoftrack: "Конец пути &4{0}&c был достингут, поэтому &4{1}&c был удален из &4{2}&c."
|
|
||||||
user-demote-error-malformed: >
|
|
||||||
{PREFIX}Предыдущая группа на пути, {0}, более не существуют. Невозможно понизить рейтинг пользователя.\n
|
|
||||||
{PREFIX}Создайте группу или удалите ее с пути и повторите попытку.
|
|
||||||
user-showpos: >
|
|
||||||
&aпоказывает &b{0}&a's позицию на пути &b{1}&a.\n
|
|
||||||
{2}
|
|
||||||
group-info-general: >
|
|
||||||
{PREFIX}&b&l> &bИнфо о группе: &f{0}\n
|
|
||||||
{PREFIX}&f- &3Отображаемое имя: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Значение: &f{2}\n
|
|
||||||
{PREFIX}&f- &aГрафы:\n
|
|
||||||
{PREFIX}&f- &3Разрешения: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Временные разрешения: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Префиксы: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Суффиксы: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Мета: &a{7}
|
|
||||||
group-set-weight: "&aУстановить значение &b{0}&a для группы &b{1}&a."
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &bПоказать путь: &f{0}\n
|
|
||||||
{PREFIX}&f- &7Путь: &f{1}
|
|
||||||
track-clear: "&b{0}&a's путь групп был очищен."
|
|
||||||
track-append-success: "&aГруппа &b{0}&a успешно добавлен в путь &b{1}&a."
|
|
||||||
track-insert-success: "&aГруппа &b{0}&a был успешно добавлен в путь &b{1}&a на позиции &b{2}&a."
|
|
||||||
track-insert-error-number: "Ожидаемое число, но вместо этого получено: {0}"
|
|
||||||
track-insert-error-invalid-pos: "Невозможно вставить в позицию {0}. Индекс вне пределов."
|
|
||||||
track-remove-success: "&aГруппа &b{0}&a Успешно удален с пути &b{1}&a."
|
|
||||||
log-load-error: "Не удалось загрузить лог."
|
|
||||||
log-invalid-page: "Недействительный номер страницы."
|
|
||||||
log-invalid-page-range: "Недопустимый номер страницы. Введите значение от 1 до {0}."
|
|
||||||
log-no-entries: "&bНет логов для отображения."
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} тому назад&8) {2}"
|
|
||||||
log-notify-toggle-on: "&aВключен&b вывод лога."
|
|
||||||
log-notify-toggle-off: "&cОтключен&b вывод лога."
|
|
||||||
log-notify-already-on: "Вы уже получаете оповещения."
|
|
||||||
log-notify-already-off: "Вы не получаете оповещений."
|
|
||||||
log-notify-unknown: "Состояние неизвестно. Ожидание \"on\" или \"off\"."
|
|
||||||
log-search-header: "&aПросмотр недавних действий для запроса &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-recent-header: "&aПоследние действия (страница &f{0}&a из &f{1}&a)"
|
|
||||||
log-recent-by-header: "&aПоказывать последние действия &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-user-header: "&aОтображение истории для пользователя &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-group-header: "&aОтображение истории для группы &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-track-header: "&aОтображение истории для пути &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-export-already-exists: "Ошибка: файл {0} уже существует."
|
|
||||||
log-export-not-writable: "Ошибка: файл {0} недоступен для записи."
|
|
||||||
log-export-empty: "Логи пусты и поэтому не могут быть экспортированы."
|
|
||||||
log-export-failure: "Произошла непредвиденная ошибка во время записи в файл."
|
|
||||||
log-export-success: "&aФайл логов успешно экспортирован в &b{0}&a."
|
|
||||||
import-already-running: "Другой процесс импорта уже запущен. Дождитесь завершения и повторите попытку."
|
|
||||||
export-already-running: "Другой процесс экспорта уже запущен. Дождитесь завершения и повторите попытку."
|
|
||||||
import-log-doesnt-exist: "Ошибка: файл {0} не существует."
|
|
||||||
import-log-not-readable: "Ошибка: файл {0} не читается."
|
|
||||||
import-log-failure: "Произошла непредвиденная ошибка при чтении лога."
|
|
||||||
import-progress: "&b(Импортировать) &b-> &f{0} &fПроцент завершен &7- &b{1}&f/&b{2} &fОперации в комплекте с &c{3} &fошибками."
|
|
||||||
import-progress-sin: "&b(Импортировать) &b-> &f{0} &fПроцент завершен &7- &b{1}&f/&b{2} &fОперации в комплекте с &c{3} &fошибками."
|
|
||||||
import-start: "&b(Импортировать) &b-> &fЗапуск процесса импорта."
|
|
||||||
import-end-complete: "&b(Импортировать) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &7Нет ошибок."
|
|
||||||
import-end-complete-err: "&b(Импортировать) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &c{1} ошибок."
|
|
||||||
import-end-complete-err-sin: "&b(Импортировать) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &c{1} ошибок."
|
|
||||||
import-end-error-header: >
|
|
||||||
{PREFIX}&b(Import) &7------------> &fОтображение ошибки #&b{0} &7<------------\n
|
|
||||||
{PREFIX}&b(Import) &fВыполняя: &3Команду #{1}\n
|
|
||||||
{PREFIX}&b(Import) &fКоманда: &7{2}\n
|
|
||||||
{PREFIX}&b(Import) &fТип: &3{3}\n
|
|
||||||
{PREFIX}&b(Import) &fВывод:
|
|
||||||
import-end-error-content: "&b(Импортировать) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Импортировать) &7<------------------------------------------>"
|
|
@ -1,728 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: ru_RU (Russian)
|
|
||||||
# Author: DarkFort | vk.com/darkfortmc
|
|
||||||
|
|
||||||
prefix: "&7&l[&b&lL&3&lP&7&l] &c"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&aОнлайн"
|
|
||||||
player-offline: "&cОффлайн"
|
|
||||||
loading-error: "&cНе удалось загрузить данные разрешений. Пожалуйста, повторите попытку позже."
|
|
||||||
op-disabled: "&bНа этом сервере отключена ванильная система OP."
|
|
||||||
op-disabled-sponge: "&2Обратите внимание, что статус Оператора сервера не влияет на проверку прав на Sponge при установке плагина разрешения. Пожалуйста, отредактируйте данные пользователя напрямую."
|
|
||||||
log-info: "&7&l[&bL&3P&7&l] &3{0}"
|
|
||||||
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[ПРЕДУПРЕЖДЕНИЕ] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ОШИБКА] {0}"
|
|
||||||
log: "&3ЛОГ &3&l> {0}"
|
|
||||||
verbose-log: "&3РАСШИРЕННЫЙ_ЛОГ &3&l> {0}"
|
|
||||||
export-log: "&3ЭКСПОРТ &3&l> &f{0}"
|
|
||||||
export-log-progress: "&3ЭКСПОРТ &3&l> &7{0}"
|
|
||||||
migration-log: "&3ПЕРЕМЕЩЕНИЕ &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3ПЕРЕМЕЩЕНИЕ &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "&cКоманда не распознана."
|
|
||||||
command-no-permission: "&cУ вас нет разрешения на использование этой команды!"
|
|
||||||
user-not-found: "&cПользователь &4{0}&c не был найден."
|
|
||||||
user-not-online: "&aПользователь &b{0}&a не онлайн."
|
|
||||||
user-save-error: "&cПроизошла ошибка при сохранении пользовательских данных для &4{0}&c."
|
|
||||||
group-not-found: "&cГруппа с именем &4{0}&c не была найдена."
|
|
||||||
group-save-error: "&cПроизошла ошибка при сохранении данных группы для &4{0}&c."
|
|
||||||
track-not-found: "&cПуть с именем &4{0}&c не был найден."
|
|
||||||
track-save-error: "&cПроизошла ошибка при сохранении данных пути для &4{0}&c."
|
|
||||||
user-invalid-entry: "&4{0}&c не является допустимым ником/uuid."
|
|
||||||
group-invalid-entry: "&4{0}&c не является допустимым именем группы."
|
|
||||||
track-invalid-entry: "&4{0}&c не является допустимым именем трека."
|
|
||||||
server-world-invalid-entry: "&cИмя сервера/мира может содержать только буквенно-цифровые символы и не может превышать 36 символов."
|
|
||||||
use-inherit-command: "&cИспользуйте команды 'parent add' и 'parent remove' вместо указания узла."
|
|
||||||
verbose-invalid-filter: "&4{0}&c не является допустимым расширенным фильтром."
|
|
||||||
verbose-on: "&bРасширенное логирование &aвключено &bдля проверки &aЛЮБОГО &bсоответствия."
|
|
||||||
verbose-on-query: "&bРасширенное логирование &aвключено &bдля проверки соответствия &a{0}&b."
|
|
||||||
verbose-off: "&bРасширенное логирование &cвыключено&b."
|
|
||||||
verbose-recording-on: "&bРасширенное логирование &aвключено &bдля проверки &aЛЮБОГО &bсоответствия."
|
|
||||||
verbose-recording-on-query: "&bРасширенное логирование &aвключено &bдля проверки соответствия &a{0}&b."
|
|
||||||
verbose-upload-start: "&bРасширенное логирование &cвыключено&b. Загрузка результатов..."
|
|
||||||
verbose-results-url: "&aURL-адрес подробного результата:"
|
|
||||||
tree-upload-start: "&bСоздание дерева разрешений..."
|
|
||||||
tree-empty: "&cНе удалось создать дерево. Ничего не найдено."
|
|
||||||
tree-url: "&aURL дерева разрешений:"
|
|
||||||
search-searching: "&aПоиск пользователей и групп с помощью &b{0}&a..."
|
|
||||||
search-searching-members: "&aПоиск пользователей и групп, которые наследуют &b{0}&a..."
|
|
||||||
search-result: "&aНайдено &b{0}&a записей из &b{1}&a пользователей и &b{2}&a групп."
|
|
||||||
search-showing-users: "&bПросмотр записей пользователя:"
|
|
||||||
search-showing-groups: "&bПросмотр записей в группах:"
|
|
||||||
search-showing-users-with-page: "&bПросмотр записей пользователя: {0}"
|
|
||||||
search-showing-groups-with-page: "&bПросмотр записей в группах: {0}"
|
|
||||||
apply-edits-invalid-code: "&cНеверный код. &7({0})"
|
|
||||||
apply-edits-unable-to-read: "&cНевозможно прочитать данные с использованием данного кода. &7({0})"
|
|
||||||
apply-edits-no-target: "&cНевозможно проанализировать цель редактирования. Пожалуйста, поставьте его как дополнительный аргумент."
|
|
||||||
apply-edits-target-group-not-exists: "&cЦелевая группа &4{0}&c не существует."
|
|
||||||
apply-edits-target-user-not-uuid: "&cЦелевой пользователь &4{0}&c имеет неверный UUID."
|
|
||||||
apply-edits-target-user-unable-to-load: "&cНе удалось загрузить целевого пользователя &4{0}&c."
|
|
||||||
apply-edits-target-unknown: "&cНеверная цель. &7({0})"
|
|
||||||
apply-edits-success: "&aУзлы &b{0}&a успешно применены к &b{1}&a."
|
|
||||||
editor-upload-failure: "&cНе <20><>далось загрузить данные разрешения в редактор."
|
|
||||||
editor-url: "&aURL-адрес редактора:"
|
|
||||||
check-result: "&aРезультат проверки прав пользователя &b{0}&a на разрешения &b{1}&a: &f{2}"
|
|
||||||
create-success: "&bГруппа {0}&a была успешно создана."
|
|
||||||
delete-success: "&bГруппа {0}&a была успешно удалена."
|
|
||||||
rename-success: "&bГруппа {0}&a была успешно переименована в &b{1}&a."
|
|
||||||
clone-success: "&bГруппа {0}&a была успешно клонирована в &b{1}&a."
|
|
||||||
already-inherits: "&bГруппа {0}&a уже наследуется от &b{1}&a в контексте {2}&a."
|
|
||||||
does-not-inherit: "&bГруппа {0}&a не наследуется от &b{1}&a в контексте {2}&a."
|
|
||||||
already-temp-inherits: "&bГруппа {0}&a уже временно наследуется от &b{1}&a в контексте {2}&a."
|
|
||||||
does-not-temp-inherit: "&bГруппа {0}&a временно не наследуется от &b{1}&a в контексте {2}&a."
|
|
||||||
track-already-contains: "&b{0}&a уже содержит &b{1}&a."
|
|
||||||
track-does-not-contain: "&b{0}&a не содержит &b{1}&a."
|
|
||||||
track-ambiguous-call: "&4{0}&c является участником нескольких групп на этом треке. Не удалось определить их местоположение."
|
|
||||||
already-exists: "&cГруппа &4{0}&c уже существует!"
|
|
||||||
does-not-exist: "&cГруппа &4{0}&c не существует!"
|
|
||||||
group-load-error: "&cПроизошла непредвиденная ошибка. Группа не загружена."
|
|
||||||
groups-load-error: "&cПроизошла непредвиденная ошибка. Невозможно загрузить все группы."
|
|
||||||
track-load-error: "&cПроизошла непредвиденная ошибка. Трек не загружен."
|
|
||||||
tracks-load-error: "&cПроизошла непредвиденная ошибка. Невозможно загрузить все треки."
|
|
||||||
track-empty: "&4{0}&c не может использоваться, поскольку он пуст или содержит только одну группу."
|
|
||||||
update-task-request: "&bЗапрошено обновление задачи. Пожалуйста, подождите..."
|
|
||||||
update-task-complete: "&aОбновление задачи завершено."
|
|
||||||
update-task-complete-network: "&aОбновление задачи завершено. Теперь попытка отправки на другие сервера."
|
|
||||||
update-task-push-success: "&aДругие серверы были успешно уведомлены через &b{0} &aобмен сообщениями."
|
|
||||||
update-task-push-failure: "&cОшибка, все изменения были <20><>тправлены на другие сервера."
|
|
||||||
update-task-push-failure-not-setup: "&cОшибка отправки изменений на другие сервера. &7(служба обмена сообщениями не настроена)"
|
|
||||||
reload-config-success: "&aФайл конфигурации был перезагружен. &7(некоторые параметры применяться только после перезапуска сервера)"
|
|
||||||
info-top: >
|
|
||||||
{PREFIX}&2Версия &bLuckPerms v{0}&2 от &bLuck&2.\n
|
|
||||||
{PREFIX}&f- &3Платформа: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Имя платформы: &f{2}\n
|
|
||||||
{PREFIX}&f- &3Версия сервера: &f{3}
|
|
||||||
info-middle: >
|
|
||||||
{PREFIX}&f- &bТип сообщения: &f{0}\n
|
|
||||||
{PREFIX}&f- &bПример:\n
|
|
||||||
{PREFIX}&f- &3Имя сервера: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Игроки онлайн: &a{2}\n
|
|
||||||
{PREFIX}&f- &3Уникальные подключения: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Время работы: &7{4}\n
|
|
||||||
{PREFIX}&f- &3Локальные данные: &a{5} &7пользователей, &a{6} &7групп, &a{7} &7треков\n
|
|
||||||
{PREFIX}&f- &3Контекстные калькуляторы: &a{8}\n
|
|
||||||
{PREFIX}&f- &3Известные разрешения: &a{9}\n
|
|
||||||
{PREFIX}&f- &3Активные процессоры: &7{10}
|
|
||||||
create-error: "&cПроизошла ошибка при создании &4{0}&c."
|
|
||||||
delete-error: "&cПроизошла ошибка при удалении &4{0}&c."
|
|
||||||
delete-group-error-default: "&cВы не можете удалить группу по умолчанию."
|
|
||||||
groups-list: "&aГруппы: &7(имя, вес, треки)"
|
|
||||||
groups-list-entry: "&f- &3{0} &7- &b{1}"
|
|
||||||
groups-list-entry-with-tracks: "&f- &3{0} &7- &b{1} &7- [&3{2}&7]"
|
|
||||||
tracks-list: "&aТреки: {0}"
|
|
||||||
listnodes: "&bРазрешения {0}:"
|
|
||||||
listnodes-with-page: "&bРазрешения {0}: {1}"
|
|
||||||
listnodes-temp: "&bВременные разрешения {0}:"
|
|
||||||
listnodes-temp-with-page: "&bВременные разрешения {0}: {1}"
|
|
||||||
listparents: "&bРодительские группы пользователя {0}:"
|
|
||||||
listparents-temp: "&bВременные родительские группы {0}:"
|
|
||||||
list-tracks: >
|
|
||||||
&b{0} Треки:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "&b{0}&a не находится ни на каких треках."
|
|
||||||
context-pair-inline: "&3{0}=&b{1}"
|
|
||||||
context-pair--global-inline: "&eглобальный"
|
|
||||||
context-pair-sep: "&a, "
|
|
||||||
context-pair: "&8(&7{0}=&f{1}&8)"
|
|
||||||
check-permission: "&b{0}&a имеет разрешение &b{1}&a установленое на {2}&a в контексте {3}&a."
|
|
||||||
check-inherits-permission: "&b{0}&a имеет разрешение &b{1}&a установленое на {2}&a в контексте {3}&a. &7(унаследованный от &a{4}&7)"
|
|
||||||
setpermission-success: "&aРазрешение &b{0}&a установлено на &b{1}&a для &b{2}&a в контексте {3}&a."
|
|
||||||
already-haspermission: "&b{0}&a уже имеет разрешение &b{1}&a установленное в контексте {2}&a."
|
|
||||||
setpermission-temp-success: "&aРазрешение &b{0}&a установлено на &b{1}&a для &b{2}&a на время &b{3}&a в контексте {4}&a."
|
|
||||||
already-has-temp-permission: "&b{0}&a уже имеет &b{1}&a временно установленное в контексте {2}&a."
|
|
||||||
unsetpermission-success: "&aРазрешение &b{0}&a отобрано у &b{1}&a в контексте {2}&a."
|
|
||||||
does-not-have-permission: "&b{0}&a не имеет &b{1}&a установленного в контексте {2}&a."
|
|
||||||
unset-temp-permission-success: "&aВременное разрешение &b{0}&a отобранно для &b{1}&a в контексте {2}&a."
|
|
||||||
does-not-have-temp-permission: "&b{0}&a не имеет &b{1}&a временно установленное в контексте {2}&a."
|
|
||||||
set-inherit-success: "&b{0}&a теперь наследует разрешения от &b{1}&a в контексте {2}&a."
|
|
||||||
set-temp-inherit-success: "&b{0}&a теперь наследует разрешения от &b{1}&a на время &b{2}&a в контексте {3}&a."
|
|
||||||
set-parent-success: "&aБыли удалены существующие родительские группы у &b{0} &aи теперь только наследуются от &b{1}&a в контексте {2}&a."
|
|
||||||
set-track-parent-success: "&b{0}&a существующие родительские группы на треке &b{1}&a очищены, и теперь только наследуются от &b{2}&a в контексте {3}&a."
|
|
||||||
unset-inherit-success: "&b{0}&a больше не наследует разрешения от &b{1}&a в контексте {2}&a."
|
|
||||||
unset-temp-inherit-success: "&b{0}&a больше не наследует разрешения от &b{1}&a в контексте {2}&a."
|
|
||||||
clear-success: "&aРазрешения &b{0}&a были очищены в контексте {1}&a. (&b{2}&a узлы были удалены.)"
|
|
||||||
clear-success-singular: "&aРазрешения &b{0}&a были очищены в контексте {1}&a. (&b{2}&a узлы были удалены.)"
|
|
||||||
parent-clear-success: "&aРодители &b{0}&a были очищены в контексте {1}&a. (&b{2}&a узлы были удалены.)"
|
|
||||||
parent-clear-success-singular: "&aРодители &b{0}&a были очищены в контексте {1}&a. (&b{2}&a узлы были удалены.)"
|
|
||||||
parent-clear-track-success: "&b{0}&a родители на треке &b{1}&a были очищены в контексте {2}&a. (&b{3}&a узлы были удалены.)"
|
|
||||||
parent-clear-track-success-singular: "&b{0}&a родители на треке &b{1}&a были очищены в контексте {2}&a. (&b{3}&a узлы были удалены.)"
|
|
||||||
meta-clear-success: "&b{0}&a мета, соответствующая типу &b{1}&a была очищена в контексте {2}&a. (&b{3}&a узлы были удалены.)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a мета, соответствующая типу &b{1}&a была очищена в контексте {2}&a. (&b{3}&a узлы были удалены.)"
|
|
||||||
illegal-date-error: "&cНе удалось разобрать дату &4{0}&c."
|
|
||||||
past-date-error: "&cВы не можете установить прошлую дату!"
|
|
||||||
chat-meta-prefix-header: "&bПрефиксы {0}"
|
|
||||||
chat-meta-suffix-header: "&bСуффиксы {0}"
|
|
||||||
meta-header: "&bМета {0}"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f'{1}&f' &8(&7унаследованный от &a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f'{1}&f' &8(&7унаследованный от &a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f'{1}&f' &8(&7унаследованный от &a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f'{1}&f' &8(&7унаследованный от &a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0} не имеет префиксов."
|
|
||||||
chat-meta-suffix-none: "&b{0} не имеет суффиксов."
|
|
||||||
meta-none: "&b{0} не имеет мету."
|
|
||||||
meta-invalid-priority: "&cНедопустимый приоритет &4{0}&c. Ожидается число."
|
|
||||||
already-has-chat-meta: "&b{0}&a уже имеет {1} &f'{2}&f'&a установленный в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
already-has-temp-chat-meta: "&b{0}&a уже имеет {1} &f'{2}&f'&a временно установленный в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
does-not-have-chat-meta: "&b{0}&a не имеет {1} &f'{2}&f'&a установленный в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
does-not-have-temp-chat-meta: "&b{0}&a не имеет {1} &f'{2}&f'&a временно установленный в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
add-chatmeta-success: "&b{0}&a теперь имеет {1} &f'{2}&f'&a установленный в приоритете &b{3}&a в контексте {4}&a."
|
|
||||||
add-temp-chatmeta-success: "&b{0}&a теперь имеет {1} &f'{2}&f'&a установленный в приоритете &b{3}&a на время &b{4}&a в контексте {5}&a."
|
|
||||||
remove-chatmeta-success: "&b{1} &f'{2}&f' &aс приоритетом &b{3}&a в &b{0}&a был удален в контексте &b{4}&a."
|
|
||||||
bulk-remove-chatmeta-success: "&b{1}es &aс приоритетом &b{2}&a в &b{0}&a был удален в контексте &b{3}&a."
|
|
||||||
remove-temp-chatmeta-success: "&b{1} &f'{2}&f'&a с приоритетом &b{3}&a в &b{0}&a был временно удален в контексте &b{4}&a."
|
|
||||||
bulk-remove-temp-chatmeta-success: "&aВсе &b{1}es &aс приоритетом &b{2}&a в &b{0}&a были временно удалены в контексте &b{3}&a."
|
|
||||||
already-has-meta: "&b{0}&a уже имеет мета-ключ &f'{1}&f'&a установлен в &f'{2}&f'&a в контексте {3}&a."
|
|
||||||
already-has-temp-meta: "&b{0}&a уже имеет мета-ключ &f'{1}&f'&a временно установлен &f'{2}&f'&a в контексте {3}&a."
|
|
||||||
doesnt-have-meta: "&b{0}&a не имеет мета-ключа &f'{1}&f'&a установлен в контексте {2}&a."
|
|
||||||
doesnt-have-temp-meta: "&b{0}&a не имеет мета-ключа &f'{1}&f'&a временно установлен в контексте {2}&a."
|
|
||||||
set-meta-success: "&aМета-ключ &f'{0}&f'&a у<><D183>тановлен на &f'{1}&f'&a для &b{2}&a в контексте {3}&a."
|
|
||||||
set-meta-temp-success: "&aМета-ключ &f'{0}&f'&a установлен на &f'{1}&f'&a для &b{2}&a на время &b{3}&a в контексте {4}&a."
|
|
||||||
unset-meta-success: "&aМета-ключ &f'{0}&f'&a отобран на &b{1}&a в контексте {2}&a."
|
|
||||||
unset-meta-temp-success: "&aВременный мета-ключ &f'{0}&f'&a отобран на &b{1}&a в контексте {2}&a."
|
|
||||||
bulk-update-invalid-data-type: "&cНедопустимый тип. Ожидается 'all', 'users' или 'groups'."
|
|
||||||
bulk-update-invalid-constraint: "&cНедопустимое ограничение &4{0}&c. Ограничения должны быть в формате '&f<field> <comparison operator> <value>&c'."
|
|
||||||
bulk-update-invalid-comparison: "&cНедействительный оператор сравнения '&4{0}&c'. Ожидается одно из следующих: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&aОперация массового обновления была поставлена в очередь. &7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&aВведите &b/{0} bulkupdate confirm {1} &aдля выполнения обновления."
|
|
||||||
bulk-update-unknown-id: "&aОперация с ID &b{0}&a не существует или истекла."
|
|
||||||
bulk-update-starting: "&aЗапуск массового обновления."
|
|
||||||
bulk-update-success: "&bМассовое обновление успешно завершено."
|
|
||||||
bulk-update-failure: "&cНе удалось выполнить массовое обновление. Проверьте консоль на наличие ошибок."
|
|
||||||
user-info-general: >
|
|
||||||
{PREFIX}&b&l> &bИнформация о пользователе: &f{0}\n
|
|
||||||
{PREFIX}&f- &3UUID: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Статус: {2}\n
|
|
||||||
{PREFIX}&f- &3Основная группа: &f{3}\n
|
|
||||||
{PREFIX}&f- &aСодержит:\n
|
|
||||||
{PREFIX}&f- &3Узлы: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Разрешения: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Префиксы: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Суффиксы: &a{7}\n
|
|
||||||
{PREFIX}&f- &3Мета: &a{8}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &aКэшированные данные:\n
|
|
||||||
{PREFIX}&f- &3Содержит контекстные данные: {0}\n
|
|
||||||
{PREFIX}&f- &3Текущие контексты: {1}\n
|
|
||||||
{PREFIX}&f- &3Текущий префикс: {2}\n
|
|
||||||
{PREFIX}&f- &3Текущий суффикс: {3}
|
|
||||||
info-parent-header: "&f- &aРодительские группы:"
|
|
||||||
info-temp-parent-header: "&f- &aВременные родительские группы:"
|
|
||||||
user-removegroup-error-primary: "&aНельзя удалить пользователя из основной группы."
|
|
||||||
user-primarygroup-success: "&b{0}&a основная группа была установлена на &b{1}&a."
|
|
||||||
user-primarygroup-warn-option: "&aПредупреждение: Метод вычисления основной группы, используемый этим сервером &7({0}) &aможет не отражать это изменение."
|
|
||||||
user-primarygroup-error-alreadyhas: "&b{0}&a уже имеет &b{1}&a в качестве основной группы."
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a еще не был участником &b{1}&a, добавление."
|
|
||||||
user-track-error-not-contain-group: "&b{0}&a еще не в каких-либо группах на &b{1}&a."
|
|
||||||
user-track-added-to-first: "&b{0}&a не находится в каких-либо группах на этом треке, поэтому они были добавлены в первую группу, &b{1}&a в контексте {2}&a."
|
|
||||||
user-promote-success: "&aПользователь &b{0}&a повышен по треку &b{1}&a из &b{2}&a в &b{3}&a в контексте {4}&a."
|
|
||||||
user-promote-error-endoftrack: "&aКонец трека &b{0}&a был достигнут. Не удалось продвинуть &b{1}&a."
|
|
||||||
user-promote-error-malformed: >
|
|
||||||
{PREFIX}&aСледующая группа на треке, &b{0}&a, больше не существует. Не удалось продвинуть пользователя.\n
|
|
||||||
{PREFIX}&aЛибо создайте группу, либо удалите ее из трека, и повторите попы<D0BF><D18B>ку.
|
|
||||||
user-demote-success: "&aПользователь &b{0}&a понижен по треку &b{1}&a из &b{2}&a в &b{3}&a в контексте {4}&a."
|
|
||||||
user-demote-endoftrack: "&aКонец трека &b{0}&a был достигнут, поэтому &b{1}&a был удален из &b{2}&a."
|
|
||||||
user-demote-error-malformed: >
|
|
||||||
{PREFIX}&aПредыдущая группа на треке, &b{0}&a, больше не существует. Невозможно понизить пользователя.\n
|
|
||||||
{PREFIX}&aЛибо создайте группу, либо удалите ее из трека, и повторите попытку.
|
|
||||||
group-info-general: >
|
|
||||||
{PREFIX}&b&l> &bИнформация о группе: &f{0}\n
|
|
||||||
{PREFIX}&f- &3Отображаемое имя: &f{1}\n
|
|
||||||
{PREFIX}&f- &3Вес: &f{2}\n
|
|
||||||
{PREFIX}&f- &aСодержит:\n
|
|
||||||
{PREFIX}&f- &3Узлы: &a{3}\n
|
|
||||||
{PREFIX}&f- &3Разрешения: &a{4}\n
|
|
||||||
{PREFIX}&f- &3Префиксы: &a{5}\n
|
|
||||||
{PREFIX}&f- &3Суффиксы: &a{6}\n
|
|
||||||
{PREFIX}&f- &3Мета: &a{7}
|
|
||||||
group-set-weight: "&aВес &b{0}&a установлен для группы &b{1}&a."
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &bОтображение трека: &f{0}\n
|
|
||||||
{PREFIX}&f- &7Путь: &f{1}
|
|
||||||
track-clear: "&b{0}&a's трек групп был очищен."
|
|
||||||
track-append-success: "&aГруппа &b{0}&a была добавлен в трек &b{1}&a."
|
|
||||||
track-insert-success: "&aГруппа &b{0}&a был вставлен в трек &b{1}&a в положении &b{2}&a."
|
|
||||||
track-insert-error-number: "&cОжидалось число, но вместо этого: {0}"
|
|
||||||
track-insert-error-invalid-pos: "&cНевозможно вставить в позицию &4{0}&c. &7(недействительная позиция)"
|
|
||||||
track-remove-success: "&aГруппа &b{0}&a была удалена с трека &b{1}&a."
|
|
||||||
log-load-error: "&cНе удалось загрузить лог."
|
|
||||||
log-invalid-page: "&cНедопустимый номер страницы."
|
|
||||||
log-invalid-page-range: "&cНедопустимый номер страницы. Введите значение между &41&c и &4{0}&c."
|
|
||||||
log-no-entries: "&bНет записей в лог, чтобы показать."
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} спустя&8) {2}"
|
|
||||||
log-notify-console: "&cНевозможно переключать уведомления для консоли."
|
|
||||||
log-notify-toggle-on: "&bВывод журнала &aвключен."
|
|
||||||
log-notify-toggle-off: "&bВывод журнала &cвыключен."
|
|
||||||
log-notify-already-on: "&cВы уже получаете уведомления."
|
|
||||||
log-notify-already-off: "&cВ настоящее время вы не получаете уведомлений."
|
|
||||||
log-notify-unknown: "&cСостояние неизвестно. Ожидалось \"on\" или \"off\"."
|
|
||||||
log-search-header: "&aПросмотр недавних действий для запроса &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-recent-header: "&aПросмотр последних действий (страница &f{0}&a из &f{1}&a)"
|
|
||||||
log-recent-by-header: "&aПросмотр последних действий &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-user-header: "&aПросмотр истории пользователя &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-group-header: "&aПросмотр истории группы &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-history-track-header: "&aПросмотр истории трека &b{0} &a(страница &f{1}&a из &f{2}&a)"
|
|
||||||
log-export-already-exists: "&cОшибка: Файл &4{0}&c уже существует."
|
|
||||||
log-export-not-writable: "&cОшибка: Файл &4{0}&c недоступен для записи."
|
|
||||||
log-export-empty: "&cЛог пуст и поэтому не может быть экспортирован."
|
|
||||||
log-export-failure: "&cПроизошла непредвиденная ошибка при записи в файл."
|
|
||||||
log-export-success: "&aЛог успешно экспортирован в &b{0}&a."
|
|
||||||
import-already-running: "&cДругой процесс импорта уже запущен. Подождите, пока он закончится и повторите попытку."
|
|
||||||
export-already-running: "&cДругой процесс и<><D0B8>порта уже запущен. Подождите, пока он закончится и повторите попытку."
|
|
||||||
import-log-doesnt-exist: "&cОшибка: Файл &4{0}&c не существует."
|
|
||||||
import-log-not-readable: "&cОшибка: Файл &4{0}&c не читается."
|
|
||||||
import-log-failure: "&cПроизошла непредвиденная ошибка при чтении из файла лога."
|
|
||||||
import-progress: "&b(Импорт) &b-> &f{0}&f% завершено &7- &b{1}&f/&b{2} &fопераций завершено с &c{3} &fошибками."
|
|
||||||
import-progress-sin: "&b(Импорт) &b-> &f{0}&f% завершено &7- &b{1}&f/&b{2} &fопераций завершено с &c{3} &fошибками."
|
|
||||||
import-start: "&b(Импорт) &b-> &fЗапуск процесса импорта."
|
|
||||||
import-end-complete: "&b(Импорт) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &7Без ошибок."
|
|
||||||
import-end-complete-err: "&b(Импорт) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &c{1} ошибки."
|
|
||||||
import-end-complete-err-sin: "&b(Импорт) &a&lЗАВЕРШЕНО &7- заняло &b{0} &7секунд - &c{1} ошибка."
|
|
||||||
import-end-error-header: >
|
|
||||||
{PREFIX}&b(Импорт) &7------------> &fОтображение ошибки #&b{0} &7<------------\n
|
|
||||||
{PREFIX}&b(Импорт) &fВо время выполнения: &3Команда #{1}\n
|
|
||||||
{PREFIX}&b(Импорт) &fКоманда: &7{2}\n
|
|
||||||
{PREFIX}&b(Импорт) &fТип: &3{3}\n
|
|
||||||
{PREFIX}&b(Импорт) &fВывод:
|
|
||||||
import-end-error-content: "&b(Импорт) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(Импорт) &7<------------------------------------------>"
|
|
||||||
|
|
||||||
command-specs:
|
|
||||||
user:
|
|
||||||
description: "Команды пользователя"
|
|
||||||
usage: "/%s user <пользователь>"
|
|
||||||
group:
|
|
||||||
description: "Команды групп"
|
|
||||||
usage: "/%s group <группа>"
|
|
||||||
track:
|
|
||||||
description: "Команды треков"
|
|
||||||
usage: "/%s track <трек>"
|
|
||||||
log:
|
|
||||||
description: "Команды лога"
|
|
||||||
usage: "/%s log"
|
|
||||||
sync:
|
|
||||||
description: "Синхронизация изменений с хранилищем"
|
|
||||||
usage: "/%s sync"
|
|
||||||
info:
|
|
||||||
description: "Общая информация о плагине"
|
|
||||||
usage: "/%s info"
|
|
||||||
verbose:
|
|
||||||
description: "Управление проверкой достоверности разрешений"
|
|
||||||
usage: "/%s verbose <true|false> [фильтр]"
|
|
||||||
args:
|
|
||||||
"on|record|off|paste": "включить/отключить ведение лога или вставить логированный вывод"
|
|
||||||
"filter": "фильтр для соответствия"
|
|
||||||
"--slim": "добавьте \"--slim\" для исключение данных трассировки из вставленного вывода"
|
|
||||||
tree:
|
|
||||||
description: "Создание древовидного представления разрешений"
|
|
||||||
usage: "/%s tree [селекция] [максимальный уровень] [игрок]"
|
|
||||||
args:
|
|
||||||
"selection": "корень дерева. указывайте \".\" для включения всех разрешений"
|
|
||||||
"max level": "сколько уровней ветвей должно быть возвращено"
|
|
||||||
"player": "имя онлайн-игрока для проверки"
|
|
||||||
search:
|
|
||||||
description: "Поиск пользователей/групп с определенным разрешением"
|
|
||||||
usage: "/%s search <разрешение>"
|
|
||||||
args:
|
|
||||||
"permission": "разрешение на поиск"
|
|
||||||
"page": "страница для просмотра"
|
|
||||||
check:
|
|
||||||
description: "Выполните стандартную проверку разрешения на онлайн игрока"
|
|
||||||
usage: "/%s check <пользователь> <разрешение>"
|
|
||||||
args:
|
|
||||||
"user": "пользователь для проверки"
|
|
||||||
"permission": "разрешение на проверку"
|
|
||||||
network-sync:
|
|
||||||
description: "Синхронизация изменений с хранилищем и запрос о том, что все остальные серверы в сети делают то же самое"
|
|
||||||
usage: "/%s networksync"
|
|
||||||
import:
|
|
||||||
description: "Импорт данных из файла"
|
|
||||||
usage: "/%s import <файл>"
|
|
||||||
args:
|
|
||||||
"file": "файл для импорта из"
|
|
||||||
export:
|
|
||||||
description: "Экспорт данных в файл"
|
|
||||||
usage: "/%s export <файл>"
|
|
||||||
args:
|
|
||||||
"file": "файл для экспорта в"
|
|
||||||
reload-config:
|
|
||||||
description: "Перезагрузить некоторые параметры конфигурации"
|
|
||||||
usage: "/%s reloadconfig"
|
|
||||||
bulk-update:
|
|
||||||
description: "Выполнение запросов массового изменения во всех данных"
|
|
||||||
usage: "/%s bulkupdate"
|
|
||||||
args:
|
|
||||||
"data type": "тип данных, которые изменяются. ('all', 'users' или 'groups')"
|
|
||||||
"action": "действие для выполнения данных. ('update' или 'delete')"
|
|
||||||
"action field": "поле для действия. требуется только для 'update'. ('permission', 'server' или 'world')"
|
|
||||||
"action value": "значение, которое требуется заменить. требуется только для 'update'."
|
|
||||||
"constraint...": "ограничения, необходимые для обновления"
|
|
||||||
migration:
|
|
||||||
description: "Команды миграции"
|
|
||||||
usage: "/%s migration"
|
|
||||||
apply-edits:
|
|
||||||
description: "Применяет изменения разрешений, внесенные в веб-редактор"
|
|
||||||
usage: "/%s applyedits <код> [цель]"
|
|
||||||
args:
|
|
||||||
"code": "уникальный код для данных"
|
|
||||||
"target": "кто должен применять данные для"
|
|
||||||
create-group:
|
|
||||||
description: "Создать новую группу"
|
|
||||||
usage: "/%s creategroup <группа>"
|
|
||||||
args:
|
|
||||||
"name": "название группы"
|
|
||||||
delete-group:
|
|
||||||
description: "Удалить группу"
|
|
||||||
usage: "/%s deletegroup <группа>"
|
|
||||||
args:
|
|
||||||
"name": "название группы"
|
|
||||||
list-groups:
|
|
||||||
description: "Список всех групп на платформе"
|
|
||||||
usage: "/%s listgroups"
|
|
||||||
create-track:
|
|
||||||
description: "Создать новый трек"
|
|
||||||
usage: "/%s createtrack <трек>"
|
|
||||||
args:
|
|
||||||
"name": "название трека"
|
|
||||||
delete-track:
|
|
||||||
description: "Удалить трек"
|
|
||||||
usage: "/%s deletetrack <трек>"
|
|
||||||
args:
|
|
||||||
"name": "название трека"
|
|
||||||
list-tracks:
|
|
||||||
description: "Список всех треков на платформе"
|
|
||||||
usage: "/%s listtracks"
|
|
||||||
user-info:
|
|
||||||
description: "Показывает информацию о пользователе"
|
|
||||||
user-switchprimarygroup:
|
|
||||||
description: "Переключает основную группу пользователя"
|
|
||||||
args:
|
|
||||||
"group": "группа для переключения на"
|
|
||||||
user-promote:
|
|
||||||
description: "Повышает пользователя по треку"
|
|
||||||
args:
|
|
||||||
"track": "трек для повышения пользователя"
|
|
||||||
"context...": "контексты для продвижения пользователя на"
|
|
||||||
user-demote:
|
|
||||||
description: "Понижает пользователя по треку"
|
|
||||||
args:
|
|
||||||
"track": "трек для понижения пользователя"
|
|
||||||
"context...": "контексты для продвижения пользователя на"
|
|
||||||
group-info:
|
|
||||||
description: "Получить информацию о группе"
|
|
||||||
group-listmembers:
|
|
||||||
description: "Показать пользователей/группы, которые наследуют эту группу"
|
|
||||||
args:
|
|
||||||
"page": "страница для просмотра"
|
|
||||||
group-setweight:
|
|
||||||
description: "Установить весс группы"
|
|
||||||
args:
|
|
||||||
"weight": "вес для установки"
|
|
||||||
group-rename:
|
|
||||||
description: "Переименовать группу"
|
|
||||||
args:
|
|
||||||
"name": "новое имя"
|
|
||||||
group-clone:
|
|
||||||
description: "Клонировать группу"
|
|
||||||
args:
|
|
||||||
"name": "имя группы для клонирования"
|
|
||||||
holder-editor:
|
|
||||||
description: "Открывает веб-редактор разрешений"
|
|
||||||
holder-showtracks:
|
|
||||||
description: "Перечисляет треки, на которых находится объект"
|
|
||||||
holder-clear:
|
|
||||||
description: "У<><D0A3>аляет все разрешения, родителей и мету"
|
|
||||||
args:
|
|
||||||
"context...": "контексты для фильтрации по"
|
|
||||||
permission:
|
|
||||||
description: "Редактировать разрешения"
|
|
||||||
parent:
|
|
||||||
description: "Редактировать наследование"
|
|
||||||
meta:
|
|
||||||
description: "Редактирование значений метаданных"
|
|
||||||
permission-info:
|
|
||||||
description: "Список узлов разрешений для объекта"
|
|
||||||
args:
|
|
||||||
"page": "страница для просмотра"
|
|
||||||
"filter": "строка для фильтрации по"
|
|
||||||
permission-set:
|
|
||||||
description: "Устанавливает разрешение для объекта"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешения для установки"
|
|
||||||
"true|false": "значение узла"
|
|
||||||
"context...": "контексты для добавления разрешения в"
|
|
||||||
permission-unset:
|
|
||||||
description: "Отобрать разрешение для объекта"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешения для отбирания"
|
|
||||||
"context...": "контексты для удаления разрешения в"
|
|
||||||
permission-settemp:
|
|
||||||
description: "Временно устанавливает разрешение для объекта"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешения для установки"
|
|
||||||
"true|false": "значение узла"
|
|
||||||
"duration": "продолжительность до истечения времени действия узла разрешения"
|
|
||||||
"context...": "контексты для добавления разрешения в"
|
|
||||||
permission-unsettemp:
|
|
||||||
description: "Отобрать временное разрешение для объекта"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешения для отбирания"
|
|
||||||
"context...": "контексты для удаления разрешения в"
|
|
||||||
permission-check:
|
|
||||||
description: "Проверяет, имеет ли объект определенный узел разрешений"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешений для проверки"
|
|
||||||
"context...": "контексты для проверки"
|
|
||||||
permission-check-inherits:
|
|
||||||
description: "Проверяет, наследует ли объект определенный узел разрешений"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешений для проверки"
|
|
||||||
"context...": "контексты для проверки"
|
|
||||||
parent-info:
|
|
||||||
description: "Перечисляет группы, наследуемые этим объектом"
|
|
||||||
parent-set:
|
|
||||||
description: "Удаляет все остальные группы, которые объект уже наследует и добавля<D0BB><D18F>т их к одному данному"
|
|
||||||
args:
|
|
||||||
"group": "группа для установки"
|
|
||||||
"context...": "контексты для установки группы в"
|
|
||||||
parent-add:
|
|
||||||
description: "Устанавливает другую группу для того, чтобы объект наследовал разрешения от"
|
|
||||||
args:
|
|
||||||
"group": "группа, наследуемая от"
|
|
||||||
"context...": "контексты для наследования группы в"
|
|
||||||
parent-remove:
|
|
||||||
description: "Удаляет ранее установленное правило наследования"
|
|
||||||
args:
|
|
||||||
"group": "группа для удаления"
|
|
||||||
"context...": "контексты для удаления группы в"
|
|
||||||
parent-set-track:
|
|
||||||
description: "Удаляет все остальные группы, которые объект уже наследует на данном треке, и добавляет их к одному данному"
|
|
||||||
args:
|
|
||||||
"track": "трек для установки"
|
|
||||||
"group": "группа для установки или число, относящееся к позиции группы на данном треке"
|
|
||||||
"context...": "контексты для установки группы в"
|
|
||||||
parent-add-temp:
|
|
||||||
description: "Устанавливает другую группу для того, чтобы объект временно наследовал разрешения"
|
|
||||||
args:
|
|
||||||
"group": "группа, наследуемая от"
|
|
||||||
"duration": "продолжительность членства в группе"
|
|
||||||
"context...": "контексты для наследования группы в"
|
|
||||||
parent-remove-temp:
|
|
||||||
description: "Удаляет ранее установленное временное правило наследования"
|
|
||||||
args:
|
|
||||||
"group": "группа для удаления"
|
|
||||||
"context...": "контексты для удаления группы в"
|
|
||||||
parent-clear:
|
|
||||||
description: "Очищает всех родителей"
|
|
||||||
args:
|
|
||||||
"context...": "контексты для фильтрации по"
|
|
||||||
parent-clear-track:
|
|
||||||
description: "Очищает всех родителей на определенном треке"
|
|
||||||
args:
|
|
||||||
"track": "трек для удаления"
|
|
||||||
"context...": "контексты для фильтрации по"
|
|
||||||
meta-info:
|
|
||||||
description: "Показать все метаданные чата"
|
|
||||||
meta-set:
|
|
||||||
description: "Задает значение меты"
|
|
||||||
args:
|
|
||||||
"key": "ключ для установки"
|
|
||||||
"value": "значение для установки"
|
|
||||||
"context...": "контексты для добавления мета-пары в"
|
|
||||||
meta-unset:
|
|
||||||
description: "Отобрать мета-значение"
|
|
||||||
args:
|
|
||||||
"key": "ключ для отмены"
|
|
||||||
"context...": "контексты для удаления мета-пары в"
|
|
||||||
meta-settemp:
|
|
||||||
description: "Временно устанавливает мета значение"
|
|
||||||
args:
|
|
||||||
"key": "ключ для установки"
|
|
||||||
"value": "значение для установки"
|
|
||||||
"duration": "продолжительность до истечения срока действия мета значения"
|
|
||||||
"context...": "контексты для добавления мета-пары в"
|
|
||||||
meta-unsettemp:
|
|
||||||
description: "Отобрать временное мета значение"
|
|
||||||
args:
|
|
||||||
"key": "ключ для отмены"
|
|
||||||
"context...": "контексты для удаления мета-пары в"
|
|
||||||
meta-addprefix:
|
|
||||||
description: "Добавляет префикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для добавления префикса в"
|
|
||||||
"prefix": "строка префикса"
|
|
||||||
"context...": "контексты для добавления префикса в"
|
|
||||||
meta-addsuffix:
|
|
||||||
description: "Добавляет суффикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для добавления суффикса в"
|
|
||||||
"suffix": "строка суффикса"
|
|
||||||
"context...": "контексты для добавления суффикса в"
|
|
||||||
meta-removeprefix:
|
|
||||||
description: "Удаляет префикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для удаления префикса в"
|
|
||||||
"prefix": "строка префикса"
|
|
||||||
"context...": "контексты для удаления префикса в"
|
|
||||||
meta-removesuffix:
|
|
||||||
description: "Удаляет суффикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для удаления суффикса в"
|
|
||||||
"suffix": "строка суффикса"
|
|
||||||
"context...": "контексты для удаления суффикса в"
|
|
||||||
meta-addtemp-prefix:
|
|
||||||
description: "Временно добавляет префикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для добавления префикса в"
|
|
||||||
"prefix": "строка префикса"
|
|
||||||
"duration": "продолжительность до истечения срока действия префикса"
|
|
||||||
"context...": "контексты для добавления префикса в"
|
|
||||||
meta-addtemp-suffix:
|
|
||||||
description: "Временно добавляет суффикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для добавления суффикса в"
|
|
||||||
"suffix": "строка суффикса"
|
|
||||||
"duration": "продолжительность до истечения срока суффикса"
|
|
||||||
"context...": "контексты для добавления суффикса в"
|
|
||||||
meta-removetemp-prefix:
|
|
||||||
description: "Удаляет временный префикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для удаления префикса в"
|
|
||||||
"prefix": "строка префикса"
|
|
||||||
"context...": "контексты для удаления префикса в"
|
|
||||||
meta-removetemp-suffix:
|
|
||||||
description: "Удаляет временный суффикс"
|
|
||||||
args:
|
|
||||||
"priority": "приоритет для удаления суффикса в"
|
|
||||||
"suffix": "строка суффикса"
|
|
||||||
"context...": "контексты для удаления суффикса в"
|
|
||||||
meta-clear:
|
|
||||||
description: "Удаляет все мета"
|
|
||||||
args:
|
|
||||||
"type": "тип мета для удаления"
|
|
||||||
"context...": "контексты для фильтрации по"
|
|
||||||
track-info:
|
|
||||||
description: "Получение информации о треке"
|
|
||||||
track-append:
|
|
||||||
description: "Добавляет группу в конец трека"
|
|
||||||
args:
|
|
||||||
"group": "группа для добавления"
|
|
||||||
track-insert:
|
|
||||||
description: "Вставляет группу в заданное положение вдоль трека"
|
|
||||||
args:
|
|
||||||
"group": "группа для вставки"
|
|
||||||
"position": "положение для вставки группы в (первая позиция на треке - 1)"
|
|
||||||
track-remove:
|
|
||||||
description: "Удаля<D0BB><D18F>т группу с трека"
|
|
||||||
args:
|
|
||||||
"group": "группа для удаления"
|
|
||||||
track-clear:
|
|
||||||
description: "Очищает группы на треке"
|
|
||||||
track-rename:
|
|
||||||
description: "Переименовать дорожку"
|
|
||||||
args:
|
|
||||||
"name": "новое имя"
|
|
||||||
track-clone:
|
|
||||||
description: "Клонировать трек"
|
|
||||||
args:
|
|
||||||
"name": "имя трека для клонирования"
|
|
||||||
log-recent:
|
|
||||||
description: "Просмотр последних действий"
|
|
||||||
args:
|
|
||||||
"user": "имя/uuid пользователя для фильтрации по"
|
|
||||||
"page": "номер страницы для просмотра"
|
|
||||||
log-search:
|
|
||||||
description: "Поиск в логе для записи"
|
|
||||||
args:
|
|
||||||
"query": "запрос для поиска по"
|
|
||||||
"page": "номер страницы для просмотра"
|
|
||||||
log-notify:
|
|
||||||
description: "Переключить уведомления лога"
|
|
||||||
args:
|
|
||||||
"on|off": "включить или выключить"
|
|
||||||
log-user-history:
|
|
||||||
description: "Просмотр истории пользователя"
|
|
||||||
args:
|
|
||||||
"user": "имя/uuid пользователя"
|
|
||||||
"page": "номер страницы для просмотра"
|
|
||||||
log-group-history:
|
|
||||||
description: "Просмотр истории группы"
|
|
||||||
args:
|
|
||||||
"group": "название группы"
|
|
||||||
"page": "номер страницы для просмотра"
|
|
||||||
log-track-history:
|
|
||||||
description: "Просмотр истории трека"
|
|
||||||
args:
|
|
||||||
"track": "название трека"
|
|
||||||
"page": "номер страницы для просмотра"
|
|
||||||
sponge:
|
|
||||||
description: "Редактирование дополнительных данных Sponge"
|
|
||||||
usage: "/%s sponge <коллекция> <субъект>"
|
|
||||||
args:
|
|
||||||
"collection": "Коллекция для запроса"
|
|
||||||
"subject": "изменяемый субъект"
|
|
||||||
sponge-permission-info:
|
|
||||||
description: "Показывает информацию о разрешениях субъекта"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты для фильтрации по"
|
|
||||||
sponge-permission-set:
|
|
||||||
description: "Устанавливает разрешение для Субъекта"
|
|
||||||
args:
|
|
||||||
"node": "узел разрешения для установки"
|
|
||||||
"tristate": "значение для установки разрешения на"
|
|
||||||
"contexts...": "контексты для установки разрешения в"
|
|
||||||
sponge-permission-clear:
|
|
||||||
description: "Удаляет разрешения для Субъектов"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты для очистки разрешений в"
|
|
||||||
sponge-parent-info:
|
|
||||||
description: "Показывает информацию о Субъектов родит<D0B8><D182>лей"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты для фильтрации по"
|
|
||||||
sponge-parent-add:
|
|
||||||
description: "Добавляет родителя к Субъекту"
|
|
||||||
args:
|
|
||||||
"collection": "Коллекция субъектов, в которой находится родительский Субъект"
|
|
||||||
"subject": "имя родительского Субъекта"
|
|
||||||
"contexts...": "контексты для добавления родителя в"
|
|
||||||
sponge-parent-remove:
|
|
||||||
description: "Удаляет родителя из Субъекта"
|
|
||||||
args:
|
|
||||||
"collection": "Коллекция субъектов, в которой находится родительский Субъект"
|
|
||||||
"subject": "имя родительского Субъекта"
|
|
||||||
"contexts...": "контексты для добавления родителя в"
|
|
||||||
sponge-parent-clear:
|
|
||||||
description: "Очистка родительских субъектов"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты, чтобы очистить родителей от"
|
|
||||||
sponge-option-info:
|
|
||||||
description: "Показывает информацию о параметрах объекта"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты для фильтрации по"
|
|
||||||
sponge-option-set:
|
|
||||||
description: "Устанавливает опцию для Субъекта"
|
|
||||||
args:
|
|
||||||
"key": "ключ для установки"
|
|
||||||
"value": "значение для установки ключа"
|
|
||||||
"contexts...": "контексты для установки опции в"
|
|
||||||
sponge-option-unset:
|
|
||||||
description: "Отбирает опцию для Субъекта"
|
|
||||||
args:
|
|
||||||
"key": "ключ для отмены"
|
|
||||||
"contexts...": "контексты для отбирания ключа в"
|
|
||||||
sponge-option-clear:
|
|
||||||
description: "Очистка параметров Субъектов"
|
|
||||||
args:
|
|
||||||
"contexts...": "контексты для очистки параметров в"
|
|
||||||
migration-command:
|
|
||||||
description: "Команда миграции"
|
|
||||||
migration-groupmanager:
|
|
||||||
description: "Команда миграции"
|
|
||||||
args:
|
|
||||||
"migrate as global": "если права мира должны быть проигнорированы и просто перенесены как глобальные"
|
|
||||||
migration-powerfulperms:
|
|
||||||
description: "Команда миграции"
|
|
||||||
args:
|
|
||||||
"address": "адрес базы данных PP"
|
|
||||||
"database": "имя базы данных PP"
|
|
||||||
"username": "имя пользователя для входа в БД"
|
|
||||||
"password": "пароль для входа в БД"
|
|
||||||
"db table": "имя таблицы PP, в которой хранятся данные игрока"
|
|
@ -1,735 +0,0 @@
|
|||||||
# LuckPerms Language File
|
|
||||||
# Locale: zh-CN (Simplified Chinese)
|
|
||||||
# Author: EuropeJing
|
|
||||||
|
|
||||||
prefix: "&7&l[&b&lL&3&lP&7&l] &c"
|
|
||||||
empty: "{0}"
|
|
||||||
player-online: "&a在线"
|
|
||||||
player-offline: "&c离线"
|
|
||||||
loading-error: "&c权限数据无法加载,请稍后再试。"
|
|
||||||
op-disabled: "&b此服务器上禁用了vanilla OP系统。"
|
|
||||||
op-disabled-sponge: "&2请注意,当安装权限插件时,服务器OP状态无效。请直接编辑用户数据。"
|
|
||||||
log-info: "&7&l[&bL&3P&7&l] &3{0}"
|
|
||||||
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[警告] {0}"
|
|
||||||
log-error: "&7&l[&bLuck&3Perms&7&l] &4[错误] {0}"
|
|
||||||
log: "&3日志 &3&l> {0}"
|
|
||||||
verbose-log: "&3详细 &3&l> {0}"
|
|
||||||
export-log: "&3输出 &3&l> &f{0}"
|
|
||||||
export-log-progress: "&3输出 &3&l> &7{0}"
|
|
||||||
migration-log: "&3移动 &7[&3{0}&7] &3&l> &f{1}"
|
|
||||||
migration-log-progress: "&3移动 &7[&3{0}&7] &3&l> &7{1}"
|
|
||||||
command-not-recognised: "&c命令未被识别。"
|
|
||||||
command-no-permission: "&c你没有权限使用这个命令!"
|
|
||||||
user-not-found: "&c找不到用户&4{0}&c。"
|
|
||||||
user-not-online: "&a用户&b{0}&a不在线。"
|
|
||||||
user-save-error: "&c保存用户&4{0}&c数据时出错。"
|
|
||||||
group-not-found: "&b找不到名为&4{0}&c的组。"
|
|
||||||
group-save-error: "&c保存组&4{0}&c数据时出错。"
|
|
||||||
track-not-found: "&b无法找到为&4{0}&c的权限组轨道。"
|
|
||||||
track-save-error: "&c保存权限组轨道&4{0}&c时出错。"
|
|
||||||
user-invalid-entry: "&4{0}&c不是有效的用户名/uuid。"
|
|
||||||
group-invalid-entry: "&4{0}&c不是有效的组名称。"
|
|
||||||
track-invalid-entry: "&4{0}&c不是有效的权限组轨道名称。"
|
|
||||||
server-world-invalid-entry: "&c服务器/世界名称只能包含字母数字字符,长度不能超过36个字符。"
|
|
||||||
verbose-invalid-filter: "&4{0}&c不是有效的详细过滤器"
|
|
||||||
verbose-on: "&b将匹配过滤器:&aANY&b的权限详细输出设置为&a开&b。"
|
|
||||||
verbose-on-query: "&b将匹配过滤器:&a{0}&b的权限详细输出设置为&a开&b。"
|
|
||||||
verbose-off: "&b详细输出设置为&c关&b。"
|
|
||||||
verbose-recording-on: "&b将匹配过滤器:&aANY&b的权限详细记录设置为&a开&b。"
|
|
||||||
verbose-recording-on-query: "&b将匹配过滤器:&a{0}&b的权限详细记录设置为&a开&b。"
|
|
||||||
verbose-upload-start: "&b详细记录被禁用。正在上传结果..."
|
|
||||||
verbose-results-url: "&a详细结果的网址:"
|
|
||||||
tree-upload-start: "&b生成权限树..."
|
|
||||||
tree-empty: "&c无法生成树,没有找到结果。"
|
|
||||||
tree-url: "&a权限树网址:"
|
|
||||||
search-searching: "&a使用&b{0}&a搜索用户和组..."
|
|
||||||
search-searching-members: "&a正在搜索继承自&b{0}&a的用户和组..."
|
|
||||||
search-result: "&a从&b{1}&a用户和&b{2}&a组找到&b{0}&a个条目。"
|
|
||||||
search-showing-users: "&b显示用户条目:"
|
|
||||||
search-showing-groups: "&b显示组条目:"
|
|
||||||
search-showing-users-with-page: "&b显示用户条目: {0}"
|
|
||||||
search-showing-groups-with-page: "&b显示组条目: {0}"
|
|
||||||
apply-edits-invalid-code: "&c无效的代码。&7({0})"
|
|
||||||
apply-edits-unable-to-read: "&c无法使用给定代码读取数据。&7({0})"
|
|
||||||
apply-edits-no-target: "&c无法解析编辑的目标。请提供它作为一个额外的参数。"
|
|
||||||
apply-edits-target-group-not-exists: "&c目标组&4{0}&c不存在。"
|
|
||||||
apply-edits-target-user-not-uuid: "&c目标用户&4{0}&c不是一个有效的uuid。"
|
|
||||||
apply-edits-target-user-unable-to-load: "&c无法加载目标用户&4{0}&c。"
|
|
||||||
apply-edits-target-unknown: "&c目标无效。&7({0})"
|
|
||||||
apply-edits-success: "&a网页编辑器数据已成功应用于&b{0}&a。"
|
|
||||||
apply-edits-success-summary: "&7(&a{0} &7{1} 和 &c{2} &7{3})"
|
|
||||||
apply-edits-diff-added: "&a+ &f{0}"
|
|
||||||
apply-edits-diff-removed: "&c- &f{0}"
|
|
||||||
editor-upload-failure: "&c无法将权限数据上传到编辑器。"
|
|
||||||
editor-url: "&a编辑器URL:"
|
|
||||||
check-result: "&a用户&b{0}&a获得允许&b{1}&a权限的检查结果&a: &f{2}"
|
|
||||||
create-success: "&b{0}&a创建成功。"
|
|
||||||
delete-success: "&b{0}&a删除成功。"
|
|
||||||
rename-success: "&b{0}&a成功被重命名为&b{1}&a。"
|
|
||||||
clone-success: "&b{0}&a成功地复制到&b{1}&a。"
|
|
||||||
already-inherits: "&b{0}&a已经从环境&b{2}&a中继承&b{1}&a。"
|
|
||||||
does-not-inherit: "&b{0}&a不再从环境&b{2}&a中继承&b{1}&a。"
|
|
||||||
already-temp-inherits: "&b{0}&a已经从环境&b{2}&a中临时继承&b{1}&a。"
|
|
||||||
does-not-temp-inherit: "&b{0}&a不再从环境&b{2}&a中临时继承&b{1}&a。"
|
|
||||||
track-already-contains: "&a权限组轨道&b{0}&a已经包含组&b{1}&a。"
|
|
||||||
track-does-not-contain: "&a权限组轨道&b{0}&a不包含组&b{1}&a。"
|
|
||||||
track-ambiguous-call: "&c用户&4{0}&c是此权限组轨道上多个组的成员,无法确定他们的位置。"
|
|
||||||
already-exists: "&4{0}&c已存在!"
|
|
||||||
does-not-exist: "&4{0}&c不存在!"
|
|
||||||
group-load-error: "&c发生意外错误,组未加载。"
|
|
||||||
groups-load-error: "&c发生意外错误,无法加载所有组。"
|
|
||||||
track-load-error: "&c发生意外错误。权限组轨道未加载。"
|
|
||||||
tracks-load-error: "&c发生意外错误,无法加载所有权限组轨道。"
|
|
||||||
track-empty: "&c权限组轨道&4{0}&c不能使用,因为它是空的或只包含一个组。"
|
|
||||||
update-task-request: "&b已请求更新任务。请稍候..."
|
|
||||||
update-task-complete: "&a更新任务完成。"
|
|
||||||
update-task-complete-network: "&a更新任务完成,现在尝试推送到其他服务器。"
|
|
||||||
update-task-push-success: "&a其他服务器通过&b{0}消息传递成功通知。"
|
|
||||||
update-task-push-failure: "&c将更改推送到其他服务器时出错。"
|
|
||||||
update-task-push-failure-not-setup: "&c将更改推送到其他服务器时出错。&7(未配置消息传递服务)"
|
|
||||||
reload-config-success: "&a重新加载配置文件。&7(一些选项将仅在服务器重新启动后才应用)"
|
|
||||||
info-top: >
|
|
||||||
{PREFIX}&2运行 &bLuckPerms v{0}&2 by &bLuck&2。\n
|
|
||||||
{PREFIX}&f- &3平台: &f{1}\n
|
|
||||||
{PREFIX}&f- &3服务器型号: &f{2}\n
|
|
||||||
{PREFIX}&f- &3服务器版本: &f{3}
|
|
||||||
info-middle: >
|
|
||||||
{PREFIX}&f- &3消息类型: &f{0}\n
|
|
||||||
{PREFIX}&f- &b详情:\n
|
|
||||||
{PREFIX}&f- &3服务器名称: &f{1}\n
|
|
||||||
{PREFIX}&f- &3在线玩家: &a{2}\n
|
|
||||||
{PREFIX}&f- &3唯一连接: &a{3}\n
|
|
||||||
{PREFIX}&f- &3正常运行时间: &7{4}\n
|
|
||||||
{PREFIX}&f- &3本地数据: &a{5}&7用户,&a{6}&7组,&a{7}&7权限组轨道\n
|
|
||||||
{PREFIX}&f- &3环境统计: &a{8}\n
|
|
||||||
{PREFIX}&f- &3已知权限: &a{9}\n
|
|
||||||
{PREFIX}&f- &3活动处理器: &7{10}
|
|
||||||
create-group-error: "&c创建组&4{0}&c时出错。"
|
|
||||||
delete-group-error: "&c删除组&4{0}&c时出错。"
|
|
||||||
delete-group-error-default: "&c你不能删除默认组。"
|
|
||||||
groups-list: "&a组: &7(名字,权重,权限组轨道)"
|
|
||||||
groups-list-entry: "&f- &3{0} &7- &b{1}"
|
|
||||||
groups-list-entry-with-tracks: "&f- &3{0} &7- &b{1} &7- [&3{2}&7]"
|
|
||||||
tracks-list: "&a权限组轨道: {0}"
|
|
||||||
listnodes: "&b{0}的权限:"
|
|
||||||
listnodes-with-page: "&b{0}的权限: {1}"
|
|
||||||
listnodes-temp: "&b{0}的临时权限:"
|
|
||||||
listnodes-temp-with-page: "&b{0}的临时权限: {1}"
|
|
||||||
listparents: "&b{0}的父组"
|
|
||||||
listparents-temp: "&b{0}的临时父组:"
|
|
||||||
list-tracks: >
|
|
||||||
&b{0}的权限组轨道:\n
|
|
||||||
{1}
|
|
||||||
list-tracks-empty: "&b{0}&a不在任何权限组轨道上。"
|
|
||||||
context-pair-inline: "&3{0}=&b{1}"
|
|
||||||
context-pair--global-inline: "&e全局"
|
|
||||||
context-pair-sep: "&a,"
|
|
||||||
context-pair: "&8(&7{0}=&f{1}&8)"
|
|
||||||
check-permission: "&b在环境&b{3}&b中,&b{0}&b的权限&b{1}&b被设置为&b{2}&b。"
|
|
||||||
check-inherits-permission: "&a在环境&b{3}&a中将&b{0}&a的&b{1}&a权限设置为&b{2}&a。&7(从&a{4}&7继承)"
|
|
||||||
setpermission-success: "&a在环境&b{3}&a中将&b{2}&a的&b{0}&a权限设置为&b{1}&a。"
|
|
||||||
already-haspermission: "&a在环境&b{2}&a中&b{0}&a已经设置权限&b{1}&a。"
|
|
||||||
setpermission-temp-success: "&a在环境&b{4}&a中将&b{2}&a的&b{0}&a临时权限设为&b{1}&a,持续时间&b{3}&a。"
|
|
||||||
already-has-temp-permission: "&a在环境&b{2}&a中&b{0}&a已经设置临时权限&b{1}&a。"
|
|
||||||
unsetpermission-success: "&a在环境&b{2}&a中取消&b{1}&a的&b{0}&a权限。"
|
|
||||||
does-not-have-permission: "&a在环境&b{2}&a中&b{0}&a没有设置权限&b{1}&a。"
|
|
||||||
unset-temp-permission-success: "&a在环境&b{2}&a中取消&b{1}&a的临时权限&b{0}&a。"
|
|
||||||
does-not-have-temp-permission: "&a在环境&b{2}&a中&b{0}&a没有设置临时权限&b{1}&a。"
|
|
||||||
set-inherit-success: "&b{0}&a现在在环境&b{2}&a中继承&b{1}&a的权限&a。"
|
|
||||||
set-temp-inherit-success: "&b{0}&a现在在环境&b{3}&a中继承&b{1}&a的权限,持续时间&b{2}&a。"
|
|
||||||
set-parent-success: "&b{0}&a现有的父组被清除,现在只在&b{2}&a中继承&b{1}&a。"
|
|
||||||
set-track-parent-success: "在权限组轨道&b{1}&a上&b{0}&a现有的父组被清除,现在只在&b{3}&a中继承&b{2}&a。"
|
|
||||||
unset-inherit-success: "&b{0}&a不再继承环境&b{2}&a中&b{1}&a的权限。"
|
|
||||||
unset-temp-inherit-success: "&b{0}&a在环境&b{2}&a中不再继承临时权限&b{1}&a。"
|
|
||||||
clear-success: "&b{0}&a的权限在环境&b{1}&a中被清除。(&b{2}&a节点已被删除。)"
|
|
||||||
clear-success-singular: "&b{0}&a的权限在环境&b{1}&a中被清除。(&b{2}&a节点已被删除。)"
|
|
||||||
parent-clear-success: "&b{0}&a的父组在环境&b{1}&a中被清除。(&b{2}&a节点被删除。)"
|
|
||||||
parent-clear-success-singular: "&b{0}&a的父组在环境&b{1}&a中被清除。(&b{2}&a节点被删除。)"
|
|
||||||
parent-clear-track-success: "在权限组轨道&b{1}&a上,&b{0}&a的父组在环境&b{2}&a中被清除。(&b{3}&a节点被删除。)"
|
|
||||||
parent-clear-track-success-singular: "在权限组轨道&b{1}&a上,&b{0}&a的父组在环境&b{2}&a中被清除。(&b{3}&a节点被删除。)"
|
|
||||||
meta-clear-success: "&b{0}&a的元数据匹配类型&b{1}&a在环境&b{2}&a中被清除。(&b{3}&a节点已被删除。)"
|
|
||||||
meta-clear-success-singular: "&b{0}&a的元数据匹配类型&b{1}&a在环境&b{2}&a中被清除。(&b{3}&a节点已被删除。)"
|
|
||||||
illegal-date-error: "&c无法解析日期'{0}'。"
|
|
||||||
past-date-error: "&c你不能设定一个过去的日期!"
|
|
||||||
chat-meta-prefix-header: "&b{0}的前缀"
|
|
||||||
chat-meta-suffix-header: "&b{0}的后缀"
|
|
||||||
meta-header: "&b{0}的元信息"
|
|
||||||
chat-meta-entry: "&b-> {0} &f- &f'{1}&f' &8(&7继承自&a{2}&8)"
|
|
||||||
chat-meta-entry-with-context: "&b-> {0} &f- &f'{1}&f' &8(&7继承自&a{2}&8){3}"
|
|
||||||
meta-entry: "&b-> &a{0} &f= &f'{1}&f' &8(&7继承自&a{2}&8)"
|
|
||||||
meta-entry-with-context: "&b-> &a{0} &f= &f'{1}&f' &8(&7继承自&a{2}&8){3}"
|
|
||||||
chat-meta-prefix-none: "&b{0}没有前缀。"
|
|
||||||
chat-meta-suffix-none: "&b{0}没有后缀。"
|
|
||||||
meta-none: "&b{0}没有元信息。"
|
|
||||||
meta-invalid-priority: "&c优先级&4{0}&c无效。应该是一个数字。"
|
|
||||||
already-has-chat-meta: "在环境&b{4}&a中设置&b{0}&a的元信息{1}&f'{2}&f'&a优先级为&b{3}&a。"
|
|
||||||
already-has-temp-chat-meta: "在环境&b{4}&a中设置&b{0}&a的元信息{1}&f'{2}&f'&a临时优先级为&b{3}&a。"
|
|
||||||
does-not-have-chat-meta: "在环境&b{4}&a中没有设置&b{0}&a的元信息{1}&f'{2}&f'&a优先级为&b{3}&a。"
|
|
||||||
does-not-have-temp-chat-meta: "在环境&b{4}&a中没有设置&b{0}&a的元信息{1}&f'{2}&f'&a临时优先级为&b{3}&a。"
|
|
||||||
add-chatmeta-success: "在环境&b{4}&a中将&b{0}&a的{1}设置为&f'{2}&f',优先级&b{3}&a。"
|
|
||||||
add-temp-chatmeta-success: "在环境&b{5}&a中将&b{0}&a的{1}设置为&f'{2}&f'&a,优先级&b{3}&a,持续时间为&b{4}&a。"
|
|
||||||
remove-chatmeta-success: "在环境&b{4}&a中删除了&b{0}&a优先级为&b{3}&a的{1} &f'{2}&f'&a。"
|
|
||||||
bulk-remove-chatmeta-success: "在环境&b{3}&a中删除了&b{0}&a优先级&b{2}&a的所有&b{1}&a。"
|
|
||||||
remove-temp-chatmeta-success: "在环境&b{4}&a中删除了&b{0}&a优先级&b{3}&a的临时{1} &f'{2}&f'&a。"
|
|
||||||
bulk-remove-temp-chatmeta-success: "在环境&b{3}&a中删除了&b{0}&a优先级&b{2}&a的所有临时&b{1}&a。"
|
|
||||||
already-has-meta: "&b{0}&a在环境&b{3}&a中设置了元信息&f'{1}&f'&a为&b&f'{2}&f'&a。"
|
|
||||||
already-has-temp-meta: "&b{0}&a在环境&b{3}&a中设置了临时元信息&f'{1}&f'&a为&b&f'{2}&f'&a。"
|
|
||||||
doesnt-have-meta: "&b{0}&a在环境&b{2}&a中没有设置元信息&f'{1}&f'&a。"
|
|
||||||
doesnt-have-temp-meta: "&b{0}&a在环境&b{2}&a中没有设置临时元信息&f'{1}&f'&a。"
|
|
||||||
set-meta-success: "&a在环境&b{3}&a中将&b{2}&a的元信息&f'{0}&f'&a设置为&f'{1}&f'&a。"
|
|
||||||
set-meta-temp-success: "&a在环境&b{4}&a中将&b{2}&a的元信息&f'{0}&f'&a设置为&f'{1}&f'&a,持续时间为&b{3}&a。"
|
|
||||||
unset-meta-success: "&a在环境{2}中取消设置&b{1}&a的元信息&f'{0}&f'&a。"
|
|
||||||
unset-meta-temp-success: "&a在环境{2}中取消设置&b{1}&a的临时元信息&f'{0}&f'&a。"
|
|
||||||
bulk-update-invalid-data-type: "&c类型无效。期望类型是'全部'、'用户'或'组'。"
|
|
||||||
bulk-update-invalid-constraint: "&c无效的约束&4{0}&c。约束的格式应该是'&f<field> <comparison operator> <value>&c'。"
|
|
||||||
bulk-update-invalid-comparison: "&c比较运算符无效'&4{0}&c'。应该以下之一: &f== != ~~ ~!"
|
|
||||||
bulk-update-queued: "&a批量更新操作已排队。&7(&f{0}&7)"
|
|
||||||
bulk-update-confirm: "&a运行&b/{0} bulkupdate &a确认{1}执行更新。"
|
|
||||||
bulk-update-unknown-id: "&a使用id&b{0}&a的操作不存在或已过期。"
|
|
||||||
bulk-update-starting: "&a运行批量更新。"
|
|
||||||
bulk-update-success: "&b批量更新已成功完成。"
|
|
||||||
bulk-update-failure: "&c批量更新失败。检查控制台是否有错误。"
|
|
||||||
user-info-general: >
|
|
||||||
{PREFIX}&b&l> &b用户信息: &f{0}\n
|
|
||||||
{PREFIX}&f- &3UUID: &f{1}\n
|
|
||||||
{PREFIX}&f- &3状态: {2}\n
|
|
||||||
{PREFIX}&f- &3主组: &f{3}\n
|
|
||||||
{PREFIX}&f- &a统计:\n
|
|
||||||
{PREFIX}&f- &3节点: &a{4}\n
|
|
||||||
{PREFIX}&f- &3权限: &a{5}\n
|
|
||||||
{PREFIX}&f- &3前缀: &a{6}\n
|
|
||||||
{PREFIX}&f- &3后缀: &a{7}\n
|
|
||||||
{PREFIX}&f- &3元信息: &a{8}
|
|
||||||
user-info-data: >
|
|
||||||
{PREFIX}&f- &a缓存数据:\n
|
|
||||||
{PREFIX}&f- &3具有环境数据: {0}\n
|
|
||||||
{PREFIX}&f- &3当前环境: {1}\n
|
|
||||||
{PREFIX}&f- &3当前前缀: {2}\n
|
|
||||||
{PREFIX}&f- &3当前后缀: {3}
|
|
||||||
info-parent-header: "&f- &a父组:"
|
|
||||||
info-temp-parent-header: "&f- &a临时父组:"
|
|
||||||
user-removegroup-error-primary: "&a你不能从其主组中删除用户。"
|
|
||||||
user-primarygroup-success: "&b{0}&a的主组已设为&b{1}&a。"
|
|
||||||
user-primarygroup-warn-option: "&a警告:此服务器&7({0})&a使用的主组计算方法可能无法反映此更改。"
|
|
||||||
user-primarygroup-error-alreadyhas: "&a已将&b{1}&a设置为用户&b{0}&a的主组。"
|
|
||||||
user-primarygroup-error-notmember: "&b{0}&a不是&b{1}&a的成员,现在添加它们。"
|
|
||||||
user-track-error-not-contain-group: "&a用户&b{0}&a尚未在权限组轨道&b{1}&a上的任何组中。"
|
|
||||||
user-track-added-to-first: "&b{0}&a不在此权限组轨道上的任何组中,因此在环境&b{2}&a中将其添加到第一组&b{2}&a。"
|
|
||||||
user-promote-success: "&a在环境&b{4}&a中将用户&b{0}&a沿权限组轨道&b{1}&a从&b{2}&a提升到&b{3}&a。"
|
|
||||||
user-promote-error-endoftrack: "&a已达到权限组轨道&b{0}&a的结尾,所以无法提升用户&b{1}&a。"
|
|
||||||
user-promote-error-malformed: >
|
|
||||||
{PREFIX}&a权限组轨道上的下一个组&b{0}&a不存在。无法提升用户。\n
|
|
||||||
{PREFIX}&a创建组,或将其从权限组轨道中删除,然后重试。
|
|
||||||
user-demote-success: "&a在环境&b{4}&a中将&b{0}&a沿权限组轨道&b{1}&a从&b{2}&a下降到&b{3}&a。"
|
|
||||||
user-demote-endoftrack: "&a已达到权限组轨道&b{0}&a的结尾,所以&b{1}&a已从&b{2}&a中移除。"
|
|
||||||
user-demote-error-malformed: >
|
|
||||||
{PREFIX}&a权限组轨道上的上一组&b{0}&a不存在。无法降级用户。\n
|
|
||||||
{PREFIX}&a创建组,或将其从权限组轨道中删除,然后重试。
|
|
||||||
group-info-general: >
|
|
||||||
{PREFIX}&b&l> &b组信息: &f{0}\n
|
|
||||||
{PREFIX}&f- &3显示名称: &f{1}\n
|
|
||||||
{PREFIX}&f- &3权重: &f{2}\n
|
|
||||||
{PREFIX}&f- &a统计:\n
|
|
||||||
{PREFIX}&f- &3节点: &a{3}\n
|
|
||||||
{PREFIX}&f- &3临时权限: &a{4}\n
|
|
||||||
{PREFIX}&f- &3前缀: &a{5}\n
|
|
||||||
{PREFIX}&f- &3后缀: &a{6}\n
|
|
||||||
{PREFIX}&f- &3元信息: &a{7}
|
|
||||||
group-set-weight: "&a将组&b{1}&a的权重设置为&b{0}&a。"
|
|
||||||
group-set-display-name-doesnt-have: "&b{0}&a没有设置显示名称。"
|
|
||||||
group-set-display-name-already-has: "&b{0}&a已经有一个显示名称&b{1}&a。"
|
|
||||||
group-set-display-name-already-in-use: "&a显示名称&b{0}&a已经被&b{1}&a占用。"
|
|
||||||
group-set-display-name: "&a设置组&b{1}&a的显示名称为&b{0}&a。"
|
|
||||||
group-set-display-name-removed: "&a删除组&b{0}&a的显示名称。"
|
|
||||||
track-info: >
|
|
||||||
{PREFIX}&b&l> &b显示权限组轨道: &f{0}\n
|
|
||||||
{PREFIX}&f- &7路径: &f{1}
|
|
||||||
track-clear: "&b{0}&a的权限组轨道已被清除。"
|
|
||||||
track-append-success: "&a组&b{0}&a已成功添加到权限组轨道&b{1}&a。"
|
|
||||||
track-insert-success: "&a组&b{0}&a已成功插入权限组轨道&b{1}&a的&b{2}&a位置。"
|
|
||||||
track-insert-error-number: "&c没有预期的数量,而是收到: {0}"
|
|
||||||
track-insert-error-invalid-pos: "&c无法插入位置&4{0}&c。&7(无效位置)"
|
|
||||||
track-remove-success: "&a组&b{0}&a已成功从权限组轨道&b{1}&a移除。"
|
|
||||||
log-load-error: "&c日志无法加载。"
|
|
||||||
log-invalid-page: "&c页码无效。"
|
|
||||||
log-invalid-page-range: "&c页码无效,请输入&41&c和&4{0}&c之间的值。"
|
|
||||||
log-no-entries: "&b没有日志条目显示。"
|
|
||||||
log-entry: "&b#{0} -> &8(&7{1} ago&8) {2}"
|
|
||||||
log-notify-console: "&c无法切换控制台通知。"
|
|
||||||
log-notify-toggle-on: "&a启用&b记录输出。"
|
|
||||||
log-notify-toggle-off: "&c禁用&b记录输出。"
|
|
||||||
log-notify-already-on: "&c你已经收到通知。"
|
|
||||||
log-notify-already-off: "&c你目前没有收到通知。"
|
|
||||||
log-notify-unknown: "&c状态未知。输入 \"on\" 或者 \"off\"。"
|
|
||||||
log-search-header: "&a显示最近的查询操作&b{0} &a(&f{1}&a/&f{2}&a)"
|
|
||||||
log-recent-header: "&a显示最近操作 (&f{0}&a/&f{1}&a)"
|
|
||||||
log-recent-by-header: "&a显示&b{0}&a的最近操作 (&f{1}&a/&f{2}&a)"
|
|
||||||
log-history-user-header: "&a显示用户的历史记录&b{0} &a(&f{1}&a/&f{2}&a)"
|
|
||||||
log-history-group-header: "&a显示组的历史记录 &b{0} &a(&f{1}&a/&f{2}&a)"
|
|
||||||
log-history-track-header: "&a显示权限组轨道的历史记录 &b{0} &a(&f{1}&a/&f{2}&a)"
|
|
||||||
log-export-already-exists: "&c错误: 文件&4{0}&c已经存在。"
|
|
||||||
log-export-not-writable: "&c错误: 文件&4{0}&c不可写。"
|
|
||||||
log-export-empty: "&c日志为空,因此无法导出。"
|
|
||||||
log-export-failure: "&c写入文件时出现意外错误。"
|
|
||||||
log-export-success: "&a成功导出日志&b{0}&a。"
|
|
||||||
import-already-running: "&c另一个导入过程已经在运行,请等待完成,然后重试。"
|
|
||||||
export-already-running: "&c另一个导出过程已经在运行,请等待完成,然后重试。"
|
|
||||||
import-log-doesnt-exist: "&c错误: 文件&4{0}&c不存在。"
|
|
||||||
import-log-not-readable: "&c错误: 文件&4{0}&c不可读。"
|
|
||||||
import-log-failure: "&c从日志文件读取时发生意外错误。"
|
|
||||||
import-progress: "&b(导入) &b-> &f{0}&f%完成 &7- &b{1}&f/&b{2} &f完成 &c{3}&f错误。"
|
|
||||||
import-progress-sin: "&b(导入) &b-> &f{0}&f%完成 &7- &b{1}&f/&b{2} &f完成 &c{3}&f错误。"
|
|
||||||
import-start: "&b(导入) &b-> &f开始导入过程。"
|
|
||||||
import-end-complete: "&b(导入) &a&l已完成 &7- 用了 &b{0} &7秒 - &7没有错误。"
|
|
||||||
import-end-complete-err: "&b(导入) &a&l已完成 &7- 用了 &b{0} &7秒 - &c{1}错误。"
|
|
||||||
import-end-complete-err-sin: "&b(导入) &a&l已完成 &7- 用了 &b{0} &7秒 - &c{1}错误。"
|
|
||||||
import-end-error-header: >
|
|
||||||
{PREFIX}&b(导入) &7------------> &f显示错误 #&b{0} &7<------------\n
|
|
||||||
{PREFIX}&b(导入) &f执行: &3命令 #{1}\n
|
|
||||||
{PREFIX}&b(导入) &f命令: &7{2}\n
|
|
||||||
{PREFIX}&b(导入) &f类型: &3{3}\n
|
|
||||||
{PREFIX}&b(导入) &f输出:
|
|
||||||
import-end-error-content: "&b(导入) &b-> &c{0}"
|
|
||||||
import-end-error-footer: "&b(导入) &7<------------------------------------------>"
|
|
||||||
|
|
||||||
command-specs:
|
|
||||||
user:
|
|
||||||
description: "用户命令"
|
|
||||||
usage: "/%s user <用户>"
|
|
||||||
group:
|
|
||||||
description: "组命令"
|
|
||||||
usage: "/%s group <组>"
|
|
||||||
track:
|
|
||||||
description: "权限组轨道指令"
|
|
||||||
usage: "/%s track <权限组轨道>"
|
|
||||||
log:
|
|
||||||
description: "日志命令"
|
|
||||||
usage: "/%s log"
|
|
||||||
sync:
|
|
||||||
description: "与存储同步更改"
|
|
||||||
usage: "/%s sync"
|
|
||||||
info:
|
|
||||||
description: "打印通用插件信息"
|
|
||||||
usage: "/%s info"
|
|
||||||
verbose:
|
|
||||||
description: "管理详细权限检查"
|
|
||||||
usage: "/%s verbose <true|false> [filter]"
|
|
||||||
args:
|
|
||||||
"on|record|off|paste": "是否启用/禁用日志记录,或粘贴记录的输出"
|
|
||||||
"filter": "过滤器匹配项"
|
|
||||||
"--slim": "添加\"--slim\"从粘贴的输出中排除跟踪数据"
|
|
||||||
tree:
|
|
||||||
description: "生成权限的树视图"
|
|
||||||
usage: "/%s tree [selection] [max level] [player]"
|
|
||||||
args:
|
|
||||||
"selection": "树的根,指定\".\"包括所有权限"
|
|
||||||
"max level": "应该返回多少分支级别"
|
|
||||||
"player": "要检查的在线玩家的名称"
|
|
||||||
search:
|
|
||||||
description: "搜索具有特定权限的用户/组"
|
|
||||||
usage: "/%s search <permission>"
|
|
||||||
args:
|
|
||||||
"permission": "权限搜索"
|
|
||||||
"page": "页面查看"
|
|
||||||
check:
|
|
||||||
description: "对用户执行标准的权限检查"
|
|
||||||
usage: "/%s check <user> <permission>"
|
|
||||||
args:
|
|
||||||
"user": "检查用户"
|
|
||||||
"permission": "允许检查"
|
|
||||||
network-sync:
|
|
||||||
description: "与存储同步更改并请求网络上所有其他服务器都同步"
|
|
||||||
usage: "/%s networksync"
|
|
||||||
import:
|
|
||||||
description: "从文件导入数据"
|
|
||||||
usage: "/%s import <file>"
|
|
||||||
args:
|
|
||||||
"file": "要导入的文件"
|
|
||||||
export:
|
|
||||||
description: "将数据导出到文件"
|
|
||||||
usage: "/%s export <file>"
|
|
||||||
args:
|
|
||||||
"file": "要导出的文件"
|
|
||||||
reload-config:
|
|
||||||
description: "重新加载部分配置选项"
|
|
||||||
usage: "/%s reloadconfig"
|
|
||||||
bulk-update:
|
|
||||||
description: "对所有数据执行批量更改查询"
|
|
||||||
usage: "/%s bulkupdate"
|
|
||||||
args:
|
|
||||||
"data type": "正在更改的数据类型。('all'、'users'、'groups')"
|
|
||||||
"action": "对数据执行的操作。('update' or 'delete')"
|
|
||||||
"action field": "要采取行动的领域。只需要'update'。('permission'、'server'、'world')"
|
|
||||||
"action value": "替换的值。只需要'update'。"
|
|
||||||
"constraint...": "更新所需的限制"
|
|
||||||
migration:
|
|
||||||
description: "迁移命令"
|
|
||||||
usage: "/%s migration"
|
|
||||||
apply-edits:
|
|
||||||
description: "应用从Web编辑器进行的权限更改"
|
|
||||||
usage: "/%s applyedits <code> [target]"
|
|
||||||
args:
|
|
||||||
"code": "数据的唯一代码"
|
|
||||||
"target": "应用数据到谁"
|
|
||||||
create-group:
|
|
||||||
description: "创建新组"
|
|
||||||
usage: "/%s creategroup <group>"
|
|
||||||
args:
|
|
||||||
"name": "组的名称"
|
|
||||||
delete-group:
|
|
||||||
description: "删除组"
|
|
||||||
usage: "/%s deletegroup <group>"
|
|
||||||
args:
|
|
||||||
"name": "组的名称"
|
|
||||||
list-groups:
|
|
||||||
description: "列出平台上的所有组"
|
|
||||||
usage: "/%s listgroups"
|
|
||||||
create-track:
|
|
||||||
description: "创建新权限组轨道"
|
|
||||||
usage: "/%s createtrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "权限组轨道的名称"
|
|
||||||
delete-track:
|
|
||||||
description: "删除权限组轨道"
|
|
||||||
usage: "/%s deletetrack <track>"
|
|
||||||
args:
|
|
||||||
"name": "权限组轨道的名称"
|
|
||||||
list-tracks:
|
|
||||||
description: "列出平台上的所有权限组轨道"
|
|
||||||
usage: "/%s listtracks"
|
|
||||||
user-info:
|
|
||||||
description: "显示有关用户的信息"
|
|
||||||
user-switchprimarygroup:
|
|
||||||
description: "切换用户的主组"
|
|
||||||
args:
|
|
||||||
"group": "组切换到"
|
|
||||||
user-promote:
|
|
||||||
description: "在权限组轨道提升用户"
|
|
||||||
args:
|
|
||||||
"track": "提升用户的权限组轨道"
|
|
||||||
"context...": "提升用户使用的环境"
|
|
||||||
user-demote:
|
|
||||||
description: "在权限组轨道降低用户"
|
|
||||||
args:
|
|
||||||
"track": "降低用户的权限组轨道"
|
|
||||||
"context...": "降低用户使用的环境"
|
|
||||||
group-info:
|
|
||||||
description: "提供有关组的信息"
|
|
||||||
group-listmembers:
|
|
||||||
description: "显示从该组继承的用户/组"
|
|
||||||
args:
|
|
||||||
"page": "页面查看"
|
|
||||||
group-setweight:
|
|
||||||
description: "设置组权重"
|
|
||||||
args:
|
|
||||||
"weight": "设定权重"
|
|
||||||
group-rename:
|
|
||||||
description: "重命名组"
|
|
||||||
args:
|
|
||||||
"name": "新名字"
|
|
||||||
group-clone:
|
|
||||||
description: "克隆组"
|
|
||||||
args:
|
|
||||||
"name": "要克隆到的组的名称"
|
|
||||||
holder-editor:
|
|
||||||
description: "打开网页权限编辑器"
|
|
||||||
holder-showtracks:
|
|
||||||
description: "列出对象所在的权限组轨道"
|
|
||||||
holder-clear:
|
|
||||||
description: "删除所有权限,父组和元"
|
|
||||||
args:
|
|
||||||
"context...": "过滤的环境"
|
|
||||||
permission:
|
|
||||||
description: "编辑权限"
|
|
||||||
parent:
|
|
||||||
description: "编辑继承"
|
|
||||||
meta:
|
|
||||||
description: "编辑元数据值"
|
|
||||||
permission-info:
|
|
||||||
description: "列出对象拥有的权限节点"
|
|
||||||
args:
|
|
||||||
"page": "页面查看"
|
|
||||||
"filter": "要过滤的字符串"
|
|
||||||
permission-set:
|
|
||||||
description: "设置对象的权限"
|
|
||||||
args:
|
|
||||||
"node": "要添加的权限"
|
|
||||||
"true|false": "节点的值"
|
|
||||||
"context...": "添加权限的环境"
|
|
||||||
permission-unset:
|
|
||||||
description: "取消对象的权限"
|
|
||||||
args:
|
|
||||||
"node": "取消的权限节点"
|
|
||||||
"context...": "删除权限的环境"
|
|
||||||
permission-settemp:
|
|
||||||
description: "设置对象的临时权限"
|
|
||||||
args:
|
|
||||||
"node": "要添加的权限"
|
|
||||||
"true|false": "节点的值"
|
|
||||||
"duration": "到期时间"
|
|
||||||
"context...": "权限的环境"
|
|
||||||
permission-unsettemp:
|
|
||||||
description: "取消对对象的临时权限"
|
|
||||||
args:
|
|
||||||
"node": "要取消的权限"
|
|
||||||
"context...": "权限的环境"
|
|
||||||
permission-check:
|
|
||||||
description: "检查对象是否具有某个权限节点"
|
|
||||||
args:
|
|
||||||
"node": "要检查的权限"
|
|
||||||
"context...": "权限的环境"
|
|
||||||
permission-check-inherits:
|
|
||||||
description: "检查对象是否继承某个权限节点"
|
|
||||||
args:
|
|
||||||
"node": "要检查的权限"
|
|
||||||
"context...": "权限的环境"
|
|
||||||
parent-info:
|
|
||||||
description: "列出此对象从哪里继承的组"
|
|
||||||
parent-set:
|
|
||||||
description: "删除对象已经继承的所有其他组,并将其添加到给定的对象组中。"
|
|
||||||
args:
|
|
||||||
"group": "组设为"
|
|
||||||
"context...": "设置组的环境"
|
|
||||||
parent-add:
|
|
||||||
description: "为该对象设置另一个组来继承权限"
|
|
||||||
args:
|
|
||||||
"group": "要继承的组"
|
|
||||||
"context...": "继承该组的环境"
|
|
||||||
parent-remove:
|
|
||||||
description: "删除先前设置的继承规则"
|
|
||||||
args:
|
|
||||||
"group": "删除的组"
|
|
||||||
"context...": "删除组的环境"
|
|
||||||
parent-set-track:
|
|
||||||
description: "删除对象在给定权限组轨道上继承的所有其他组,并将其添加到给定的权限组轨道上。"
|
|
||||||
args:
|
|
||||||
"track": "设置的权限组轨道"
|
|
||||||
"group": "组中设置的组,或与组中在给定权限组轨道上的位置相关的数字"
|
|
||||||
"context...": "设置组的环境"
|
|
||||||
parent-add-temp:
|
|
||||||
description: "为对象设置另一个组,以便从临时继承权限"
|
|
||||||
args:
|
|
||||||
"group": "要继承的组"
|
|
||||||
"duration": "持续时间"
|
|
||||||
"context...": "继承该组的环境"
|
|
||||||
parent-remove-temp:
|
|
||||||
description: "删除以前设置的临时继承规则"
|
|
||||||
args:
|
|
||||||
"group": "组删除"
|
|
||||||
"context...": "删除组的环境"
|
|
||||||
parent-clear:
|
|
||||||
description: "清除所有的父组"
|
|
||||||
args:
|
|
||||||
"context...": "过滤的环境"
|
|
||||||
parent-clear-track:
|
|
||||||
description: "清除给定权限组轨道上的所有父组"
|
|
||||||
args:
|
|
||||||
"track": "删除的权限组轨道"
|
|
||||||
"contexts...": "选择的环境"
|
|
||||||
meta-info:
|
|
||||||
description: "显示所有聊天元"
|
|
||||||
meta-set:
|
|
||||||
description: "设置元值"
|
|
||||||
args:
|
|
||||||
"key": "设定的键"
|
|
||||||
"value": "要设置的值"
|
|
||||||
"context...": "将元添加到"
|
|
||||||
meta-unset:
|
|
||||||
description: "取消设定元值"
|
|
||||||
args:
|
|
||||||
"key": "要取消的键"
|
|
||||||
"context...": "删除元的环境"
|
|
||||||
meta-settemp:
|
|
||||||
description: "暂时设置一个元值"
|
|
||||||
args:
|
|
||||||
"key": "设定的键"
|
|
||||||
"value": "要设置的值"
|
|
||||||
"duration": "持续时间"
|
|
||||||
"context...": "将元组添加到"
|
|
||||||
meta-unsettemp:
|
|
||||||
description: "取消设置临时元值"
|
|
||||||
args:
|
|
||||||
"key": "要取消的键"
|
|
||||||
"context...": "删除元的环境"
|
|
||||||
meta-addprefix:
|
|
||||||
description: "添加前缀"
|
|
||||||
args:
|
|
||||||
"priority": "添加的前缀优先级"
|
|
||||||
"prefix": "前缀字符串"
|
|
||||||
"context...": "添加前缀的环境"
|
|
||||||
meta-addsuffix:
|
|
||||||
description: "添加后缀"
|
|
||||||
args:
|
|
||||||
"priority": "添加的后缀优先级"
|
|
||||||
"suffix": "后缀字符串"
|
|
||||||
"context...": "添加后缀的环境"
|
|
||||||
meta-removeprefix:
|
|
||||||
description: "删除前缀"
|
|
||||||
args:
|
|
||||||
"priority": "删除的前缀优先级"
|
|
||||||
"prefix": "前缀字符串"
|
|
||||||
"context...": "删除前缀的环境"
|
|
||||||
meta-removesuffix:
|
|
||||||
description: "删除后缀"
|
|
||||||
args:
|
|
||||||
"priority": "删除的后缀优先级"
|
|
||||||
"suffix": "后缀字符串"
|
|
||||||
"context...": "删除后缀的环境"
|
|
||||||
meta-addtemp-prefix:
|
|
||||||
description: "添加临时前缀"
|
|
||||||
args:
|
|
||||||
"priority": "删除的前缀优先级"
|
|
||||||
"prefix": "前缀字符串"
|
|
||||||
"duration": "持续时间"
|
|
||||||
"context...": "添加前缀的环境"
|
|
||||||
meta-addtemp-suffix:
|
|
||||||
description: "添加临时后缀"
|
|
||||||
args:
|
|
||||||
"priority": "添加的后缀优先级"
|
|
||||||
"suffix": "后缀字符串"
|
|
||||||
"duration": "持续时间"
|
|
||||||
"context...": "添加后缀的环境"
|
|
||||||
meta-removetemp-prefix:
|
|
||||||
description: "删除临时前缀"
|
|
||||||
args:
|
|
||||||
"priority": "删除的前缀优先级"
|
|
||||||
"prefix": "前缀字符串"
|
|
||||||
"context...": "删除前缀的环境"
|
|
||||||
meta-removetemp-suffix:
|
|
||||||
description: "删除临时后缀"
|
|
||||||
args:
|
|
||||||
"priority": "删除的后缀优先级"
|
|
||||||
"suffix": "后缀字符串"
|
|
||||||
"context...": "删除后缀的环境"
|
|
||||||
meta-clear:
|
|
||||||
description: "清除所有元"
|
|
||||||
args:
|
|
||||||
"type": "要删除的元数据类型"
|
|
||||||
"context...": "过滤的环境"
|
|
||||||
track-info:
|
|
||||||
description: "提供有关权限组轨道的信息"
|
|
||||||
track-append:
|
|
||||||
description: "追加一个组到权限组轨道的最后"
|
|
||||||
args:
|
|
||||||
"group": "追加的组"
|
|
||||||
track-insert:
|
|
||||||
description: "在权限组轨道上的给定位置插入一个组"
|
|
||||||
args:
|
|
||||||
"group": "插入的组"
|
|
||||||
"position": "插入组的位置(权限组轨道上的第一个位置为1)"
|
|
||||||
track-remove:
|
|
||||||
description: "从权限组轨道中删除一个组"
|
|
||||||
args:
|
|
||||||
"group": "删除的组"
|
|
||||||
track-clear:
|
|
||||||
description: "清除权限组轨道上的组"
|
|
||||||
track-rename:
|
|
||||||
description: "重命名权限组轨道"
|
|
||||||
args:
|
|
||||||
"name": "新名字"
|
|
||||||
track-clone:
|
|
||||||
description: "克隆权限组轨道"
|
|
||||||
args:
|
|
||||||
"name": "要克隆的权限组轨道的名称"
|
|
||||||
log-recent:
|
|
||||||
description: "查看最近的登陆"
|
|
||||||
args:
|
|
||||||
"user": "用户的名称/uuid"
|
|
||||||
"page": "要查看的页码"
|
|
||||||
log-search:
|
|
||||||
description: "搜索日志中的条目"
|
|
||||||
args:
|
|
||||||
"query": "搜索的查询"
|
|
||||||
"page": "要查看的页码"
|
|
||||||
log-notify:
|
|
||||||
description: "切换日志通知"
|
|
||||||
args:
|
|
||||||
"on|off": "是否打开或关闭"
|
|
||||||
log-user-history:
|
|
||||||
description: "查看用户的历史记录"
|
|
||||||
args:
|
|
||||||
"user": "用户名/ uuid"
|
|
||||||
"page": "要查看的页码"
|
|
||||||
log-group-history:
|
|
||||||
description: "查看组的历史"
|
|
||||||
args:
|
|
||||||
"group": "组名"
|
|
||||||
"page": "要查看的页码"
|
|
||||||
log-track-history:
|
|
||||||
description: "查看权限组轨道的历史"
|
|
||||||
args:
|
|
||||||
"track": "权限组轨道的名称"
|
|
||||||
"page": "要查看的页码"
|
|
||||||
sponge:
|
|
||||||
description: "编辑额外的Sponge数据"
|
|
||||||
usage: "/%s sponge <collection> <subject>"
|
|
||||||
args:
|
|
||||||
"collection": "要查询的集合"
|
|
||||||
"subject": "修改的主题"
|
|
||||||
sponge-permission-info:
|
|
||||||
description: "显示有关主题权限的信息"
|
|
||||||
args:
|
|
||||||
"contexts...": "选择的环境"
|
|
||||||
sponge-permission-set:
|
|
||||||
description: "设置一个主题的权限"
|
|
||||||
args:
|
|
||||||
"node": "要设置的权限节点"
|
|
||||||
"tristate": "设置允许值"
|
|
||||||
"contexts...": "选择的环境"
|
|
||||||
sponge-permission-clear:
|
|
||||||
description: "清除一个主题的权限"
|
|
||||||
args:
|
|
||||||
"contexts...": "清除的环境"
|
|
||||||
sponge-parent-info:
|
|
||||||
description: "显示关于该主题父项的信息"
|
|
||||||
args:
|
|
||||||
"contexts...": "选择的环境"
|
|
||||||
sponge-parent-add:
|
|
||||||
description: "向主题添加父项"
|
|
||||||
args:
|
|
||||||
"collection": "父主题的主题集合"
|
|
||||||
"subject": "父主题的名称"
|
|
||||||
"contexts...": "添加父项的环境"
|
|
||||||
sponge-parent-remove:
|
|
||||||
description: "从主题中删除父项"
|
|
||||||
args:
|
|
||||||
"collection": "父主题的主题集合"
|
|
||||||
"subject": "父主题的名称"
|
|
||||||
"contexts...": "删除父项的环境"
|
|
||||||
sponge-parent-clear:
|
|
||||||
description: "清除主题父项"
|
|
||||||
args:
|
|
||||||
"contexts...": "清除父项的主题"
|
|
||||||
sponge-option-info:
|
|
||||||
description: "显示有关主题选项的信息"
|
|
||||||
args:
|
|
||||||
"contexts...": "选择的环境"
|
|
||||||
sponge-option-set:
|
|
||||||
description: "为主题设置一个选项"
|
|
||||||
args:
|
|
||||||
"key": "设定键"
|
|
||||||
"value": "设置的键"
|
|
||||||
"contexts...": "设置选项的环境"
|
|
||||||
sponge-option-unset:
|
|
||||||
description: "取消主题一个选项"
|
|
||||||
args:
|
|
||||||
"key": "取消的键"
|
|
||||||
"contexts...": "取消选项的环境"
|
|
||||||
sponge-option-clear:
|
|
||||||
description: "清除对象的选择"
|
|
||||||
args:
|
|
||||||
"contexts...": "清除选项的环境"
|
|
||||||
migration-command:
|
|
||||||
description: "迁移命令"
|
|
||||||
migration-groupmanager:
|
|
||||||
description: "迁移命令"
|
|
||||||
args:
|
|
||||||
"migrate as global": "如果世界权限应该被忽略,并且刚刚迁移为全局"
|
|
||||||
migration-powerfulperms:
|
|
||||||
description: "迁移命令"
|
|
||||||
args:
|
|
||||||
"address": "PP数据库的地址"
|
|
||||||
"database": "PP数据库的名称"
|
|
||||||
"username": "登录DB的用户名"
|
|
||||||
"password": "登录DB的用密码"
|
|
||||||
"db table": "存储用户数据的PP表的名称"
|
|
@ -34,6 +34,7 @@ import java.util.Optional;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a permission node.
|
* Represents a permission node.
|
||||||
@ -354,43 +355,127 @@ public interface Node extends Map.Entry<String, Boolean> {
|
|||||||
*/
|
*/
|
||||||
interface Builder {
|
interface Builder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of negated for the node
|
||||||
|
*
|
||||||
|
* @param negated the value
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#isNegated()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setNegated(boolean negated);
|
Builder setNegated(boolean negated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of the node
|
||||||
|
*
|
||||||
|
* @param value the value
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#getValuePrimitive()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setValue(boolean value);
|
Builder setValue(boolean value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Warning: this value does not persist, and disappears when the holder is re-loaded.
|
* Sets the override property for the node
|
||||||
* It is therefore only useful for transient nodes.
|
*
|
||||||
|
* <p>Warning: this value does not persist, and disappears when the holder is re-loaded.
|
||||||
|
* It is therefore only useful for transient nodes.</p>
|
||||||
|
*
|
||||||
|
* @param override the override state
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#isOverride()
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setOverride(boolean override);
|
Builder setOverride(boolean override);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the nodes expiry as a unix timestamp in seconds
|
||||||
|
*
|
||||||
|
* @param expireAt the expiry time
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#getExpiryUnixTime()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setExpiry(long expireAt);
|
Builder setExpiry(long expireAt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the world value for the node
|
||||||
|
*
|
||||||
|
* @param world the world value
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#getWorld()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setWorld(@Nonnull String world);
|
Builder setWorld(@Nullable String world);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the server value for the node
|
||||||
|
*
|
||||||
|
* @param server the world value
|
||||||
|
* @return the builder
|
||||||
|
* @see Node#getServer()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder setServer(@Nonnull String server) throws IllegalArgumentException;
|
Builder setServer(@Nullable String server);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends an extra context onto the node
|
||||||
|
*
|
||||||
|
* @param key the context key
|
||||||
|
* @param value the context value
|
||||||
|
* @return the builder
|
||||||
|
* @see ContextSet
|
||||||
|
* @see Node#getContexts()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder withExtraContext(@Nonnull String key, @Nonnull String value);
|
Builder withExtraContext(@Nonnull String key, @Nonnull String value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends extra contexts onto the node
|
||||||
|
*
|
||||||
|
* @param map a map of contexts
|
||||||
|
* @see ContextSet
|
||||||
|
* @see Node#getContexts()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder withExtraContext(@Nonnull Map<String, String> map);
|
Builder withExtraContext(@Nonnull Map<String, String> map);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends extra contexts onto the node
|
||||||
|
*
|
||||||
|
* @param context a set of contexts
|
||||||
|
* @see ContextSet
|
||||||
|
* @see Node#getContexts()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder withExtraContext(@Nonnull Set<Map.Entry<String, String>> context);
|
Builder withExtraContext(@Nonnull Set<Map.Entry<String, String>> context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends an extra context onto the node
|
||||||
|
*
|
||||||
|
* @param entry the context
|
||||||
|
* @return the builder
|
||||||
|
* @see ContextSet
|
||||||
|
* @see Node#getContexts()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder withExtraContext(@Nonnull Map.Entry<String, String> entry);
|
Builder withExtraContext(@Nonnull Map.Entry<String, String> entry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends extra contexts onto the node
|
||||||
|
*
|
||||||
|
* @param set a contextset
|
||||||
|
* @see ContextSet
|
||||||
|
* @see Node#getContexts()
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Builder withExtraContext(@Nonnull ContextSet set);
|
Builder withExtraContext(@Nonnull ContextSet set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a node instance from the builder
|
||||||
|
*
|
||||||
|
* @return a new node instance
|
||||||
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Node build();
|
Node build();
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ abstract class AbstractContextSet implements ContextSet {
|
|||||||
|
|
||||||
final Multimap<String, String> otherContexts;
|
final Multimap<String, String> otherContexts;
|
||||||
|
|
||||||
if (other instanceof MutableContextSet) {
|
if (other instanceof AbstractContextSet) {
|
||||||
otherContexts = ((MutableContextSet) other).backing();
|
otherContexts = ((AbstractContextSet) other).backing();
|
||||||
} else {
|
} else {
|
||||||
otherContexts = other.toMultimap();
|
otherContexts = other.toMultimap();
|
||||||
}
|
}
|
||||||
|
@ -229,12 +229,19 @@ public final class ImmutableContextSet extends AbstractContextSet implements Con
|
|||||||
* A builder for {@link ImmutableContextSet}
|
* A builder for {@link ImmutableContextSet}
|
||||||
*/
|
*/
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
private final ImmutableSetMultimap.Builder<String, String> builder = ImmutableSetMultimap.builder();
|
private ImmutableSetMultimap.Builder<String, String> builder;
|
||||||
|
|
||||||
private Builder() {
|
private Builder() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private synchronized ImmutableSetMultimap.Builder<String, String> builder() {
|
||||||
|
if (builder == null) {
|
||||||
|
builder = ImmutableSetMultimap.builder();
|
||||||
|
}
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new key value pair to the set
|
* Adds a new key value pair to the set
|
||||||
*
|
*
|
||||||
@ -244,7 +251,7 @@ public final class ImmutableContextSet extends AbstractContextSet implements Con
|
|||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public Builder add(@Nonnull String key, @Nonnull String value) {
|
public Builder add(@Nonnull String key, @Nonnull String value) {
|
||||||
builder.put(sanitizeKey(key), sanitizeValue(value));
|
builder().put(sanitizeKey(key), sanitizeValue(value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,12 +316,11 @@ public final class ImmutableContextSet extends AbstractContextSet implements Con
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
public Builder addAll(@Nonnull ContextSet contextSet) {
|
public Builder addAll(@Nonnull ContextSet contextSet) {
|
||||||
checkNotNull(contextSet, "contextSet");
|
checkNotNull(contextSet, "contextSet");
|
||||||
if (contextSet instanceof MutableContextSet) {
|
if (contextSet instanceof AbstractContextSet) {
|
||||||
MutableContextSet other = ((MutableContextSet) contextSet);
|
AbstractContextSet other = ((AbstractContextSet) contextSet);
|
||||||
builder.putAll(other.backing());
|
if (!other.isEmpty()) {
|
||||||
} else if (contextSet instanceof ImmutableContextSet) {
|
builder().putAll(other.backing());
|
||||||
ImmutableContextSet other = ((ImmutableContextSet) contextSet);
|
}
|
||||||
builder.putAll(other.backing());
|
|
||||||
} else {
|
} else {
|
||||||
addAll(contextSet.toMultimap());
|
addAll(contextSet.toMultimap());
|
||||||
}
|
}
|
||||||
@ -323,7 +329,11 @@ public final class ImmutableContextSet extends AbstractContextSet implements Con
|
|||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public ImmutableContextSet build() {
|
public ImmutableContextSet build() {
|
||||||
return new ImmutableContextSet(builder.build());
|
if (builder == null) {
|
||||||
|
return empty();
|
||||||
|
} else {
|
||||||
|
return new ImmutableContextSet(builder.build());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -281,11 +281,8 @@ public final class MutableContextSet extends AbstractContextSet implements Conte
|
|||||||
*/
|
*/
|
||||||
public void addAll(@Nonnull ContextSet contextSet) {
|
public void addAll(@Nonnull ContextSet contextSet) {
|
||||||
checkNotNull(contextSet, "contextSet");
|
checkNotNull(contextSet, "contextSet");
|
||||||
if (contextSet instanceof MutableContextSet) {
|
if (contextSet instanceof AbstractContextSet) {
|
||||||
MutableContextSet other = ((MutableContextSet) contextSet);
|
AbstractContextSet other = ((AbstractContextSet) contextSet);
|
||||||
this.map.putAll(other.map);
|
|
||||||
} else if (contextSet instanceof ImmutableContextSet) {
|
|
||||||
ImmutableContextSet other = ((ImmutableContextSet) contextSet);
|
|
||||||
this.map.putAll(other.backing());
|
this.map.putAll(other.backing());
|
||||||
} else {
|
} else {
|
||||||
addAll(contextSet.toMultimap());
|
addAll(contextSet.toMultimap());
|
||||||
|
@ -48,19 +48,19 @@ public class BukkitSchedulerAdapter implements SchedulerAdapter {
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Accessors(fluent = true)
|
@Accessors(fluent = true)
|
||||||
private ExecutorService asyncFallback;
|
private final ExecutorService asyncFallback;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Accessors(fluent = true)
|
@Accessors(fluent = true)
|
||||||
private Executor asyncBukkit;
|
private final Executor asyncBukkit;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Accessors(fluent = true)
|
@Accessors(fluent = true)
|
||||||
private Executor sync;
|
private final Executor sync;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Accessors(fluent = true)
|
@Accessors(fluent = true)
|
||||||
private Executor async;
|
private final Executor async;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@ -75,7 +75,7 @@ public class BukkitSenderFactory extends SenderFactory<CommandSender> {
|
|||||||
protected void sendMessage(CommandSender sender, String s) {
|
protected void sendMessage(CommandSender sender, String s) {
|
||||||
// send sync if command block
|
// send sync if command block
|
||||||
if (sender instanceof BlockCommandSender) {
|
if (sender instanceof BlockCommandSender) {
|
||||||
getPlugin().getScheduler().doSync(new BlockMessageAgent(((BlockCommandSender) sender), s));
|
getPlugin().getScheduler().doSync(new BlockMessengerAgent(((BlockCommandSender) sender), s));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ public class BukkitSenderFactory extends SenderFactory<CommandSender> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fallback to legacy format
|
// Fallback to legacy format
|
||||||
sender.sendMessage(TextUtils.toLegacy(message));
|
sendMessage(sender, TextUtils.toLegacy(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -126,7 +126,7 @@ public class BukkitSenderFactory extends SenderFactory<CommandSender> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
private static final class BlockMessageAgent implements Runnable {
|
private static final class BlockMessengerAgent implements Runnable {
|
||||||
private final BlockCommandSender block;
|
private final BlockCommandSender block;
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import com.google.common.base.Preconditions;
|
|||||||
import me.lucko.luckperms.api.ChatMetaType;
|
import me.lucko.luckperms.api.ChatMetaType;
|
||||||
import me.lucko.luckperms.api.Contexts;
|
import me.lucko.luckperms.api.Contexts;
|
||||||
import me.lucko.luckperms.api.Node;
|
import me.lucko.luckperms.api.Node;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||||
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
||||||
import me.lucko.luckperms.common.caching.type.MetaAccumulator;
|
import me.lucko.luckperms.common.caching.type.MetaAccumulator;
|
||||||
import me.lucko.luckperms.common.caching.type.MetaCache;
|
import me.lucko.luckperms.common.caching.type.MetaCache;
|
||||||
@ -319,11 +319,11 @@ public class VaultChatHook extends AbstractVaultChat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Contexts createContextForWorldSet(String world) {
|
private Contexts createContextForWorldSet(String world) {
|
||||||
MutableContextSet context = MutableContextSet.create();
|
ImmutableContextSet.Builder context = ImmutableContextSet.builder();
|
||||||
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
||||||
context.add(Contexts.WORLD_KEY, world.toLowerCase());
|
context.add(Contexts.WORLD_KEY, world.toLowerCase());
|
||||||
}
|
}
|
||||||
context.add(Contexts.SERVER_KEY, permissionHook.getVaultServer());
|
context.add(Contexts.SERVER_KEY, permissionHook.getVaultServer());
|
||||||
return new Contexts(context, permissionHook.isIncludeGlobal(), true, true, true, true, false);
|
return new Contexts(context.build(), permissionHook.isIncludeGlobal(), true, true, true, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import me.lucko.luckperms.api.LPConfiguration;
|
|||||||
import me.lucko.luckperms.common.config.ConfigKey;
|
import me.lucko.luckperms.common.config.ConfigKey;
|
||||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||||
import me.lucko.luckperms.common.config.LuckPermsConfiguration;
|
import me.lucko.luckperms.common.config.LuckPermsConfiguration;
|
||||||
|
import me.lucko.luckperms.common.utils.ImmutableCollectors;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -78,7 +79,8 @@ public class ApiConfiguration implements LPConfiguration {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> getSplitStorageOptions() {
|
public Map<String, String> getSplitStorageOptions() {
|
||||||
return handle.get(ConfigKeys.SPLIT_STORAGE_OPTIONS);
|
return handle.get(ConfigKeys.SPLIT_STORAGE_OPTIONS).entrySet().stream()
|
||||||
|
.collect(ImmutableCollectors.toMap(e -> e.getKey().name().toLowerCase(), Map.Entry::getValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -51,7 +51,7 @@ public class AssignmentRule {
|
|||||||
this.hasTrueExpression = AssignmentExpression.compile(hasTrueExpression);
|
this.hasTrueExpression = AssignmentExpression.compile(hasTrueExpression);
|
||||||
this.hasFalseExpression = AssignmentExpression.compile(hasFalseExpression);
|
this.hasFalseExpression = AssignmentExpression.compile(hasFalseExpression);
|
||||||
this.lacksExpression = AssignmentExpression.compile(lacksExpression);
|
this.lacksExpression = AssignmentExpression.compile(lacksExpression);
|
||||||
this.toGive = toGive.stream().map(s -> LegacyNodeFactory.fromLegacyString(s, true)).collect(ImmutableCollectors.toList());;
|
this.toGive = toGive.stream().map(s -> LegacyNodeFactory.fromLegacyString(s, true)).collect(ImmutableCollectors.toList());
|
||||||
this.toTake = toTake.stream().map(s -> LegacyNodeFactory.fromLegacyString(s, true)).collect(ImmutableCollectors.toList());
|
this.toTake = toTake.stream().map(s -> LegacyNodeFactory.fromLegacyString(s, true)).collect(ImmutableCollectors.toList());
|
||||||
this.setPrimaryGroup = setPrimaryGroup;
|
this.setPrimaryGroup = setPrimaryGroup;
|
||||||
}
|
}
|
||||||
|
@ -155,12 +155,16 @@ public class Importer implements Runnable {
|
|||||||
|
|
||||||
int errors = (int) toExecute.stream().filter(v -> !v.getResult().asBoolean()).count();
|
int errors = (int) toExecute.stream().filter(v -> !v.getResult().asBoolean()).count();
|
||||||
|
|
||||||
if (errors == 0) {
|
switch (errors) {
|
||||||
notify.forEach(s -> Message.IMPORT_END_COMPLETE.send(s, seconds));
|
case 0:
|
||||||
} else if (errors == 1) {
|
notify.forEach(s -> Message.IMPORT_END_COMPLETE.send(s, seconds));
|
||||||
notify.forEach(s -> Message.IMPORT_END_COMPLETE_ERR_SIN.send(s, seconds, errors));
|
break;
|
||||||
} else {
|
case 1:
|
||||||
notify.forEach(s -> Message.IMPORT_END_COMPLETE_ERR.send(s, seconds, errors));
|
notify.forEach(s -> Message.IMPORT_END_COMPLETE_ERR_SIN.send(s, seconds, errors));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
notify.forEach(s -> Message.IMPORT_END_COMPLETE_ERR.send(s, seconds, errors));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
AtomicInteger errIndex = new AtomicInteger(1);
|
AtomicInteger errIndex = new AtomicInteger(1);
|
||||||
|
@ -50,7 +50,7 @@ public class BulkUpdateBuilder {
|
|||||||
private Action action = null;
|
private Action action = null;
|
||||||
|
|
||||||
// a set of constraints which data must match to be acted upon
|
// a set of constraints which data must match to be acted upon
|
||||||
private Set<Constraint> constraints = new LinkedHashSet<>();
|
private final Set<Constraint> constraints = new LinkedHashSet<>();
|
||||||
|
|
||||||
public BulkUpdateBuilder action(Action action) {
|
public BulkUpdateBuilder action(Action action) {
|
||||||
this.action = action;
|
this.action = action;
|
||||||
|
@ -245,12 +245,8 @@ public class CommandManager {
|
|||||||
|
|
||||||
arguments.remove(0); // remove the main command arg.
|
arguments.remove(0); // remove the main command arg.
|
||||||
|
|
||||||
if (!o.isPresent()) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pass the processing onto the main command
|
// Pass the processing onto the main command
|
||||||
return o.get().tabComplete(plugin, sender, arguments);
|
return o.map(cmd -> cmd.tabComplete(plugin, sender, arguments)).orElseGet(Collections::emptyList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendCommandUsage(Sender sender, String label) {
|
private void sendCommandUsage(Sender sender, String label) {
|
||||||
|
@ -174,7 +174,7 @@ public enum CommandPermission {
|
|||||||
private final String node;
|
private final String node;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Type type;
|
private final Type type;
|
||||||
|
|
||||||
CommandPermission(String node, Type type) {
|
CommandPermission(String node, Type type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
@ -149,11 +149,8 @@ public abstract class MainCommand<T, I> extends Command<Void, T> {
|
|||||||
.filter(s -> s.getName().equalsIgnoreCase(args.get(1)))
|
.filter(s -> s.getName().equalsIgnoreCase(args.get(1)))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if (!o.isPresent()) {
|
return o.map(cmd -> cmd.tabComplete(plugin, sender, args.subList(2, args.size()))).orElseGet(Collections::emptyList);
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
return o.get().tabComplete(plugin, sender, args.subList(2, args.size()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract List<String> getTargets(LuckPermsPlugin plugin);
|
protected abstract List<String> getTargets(LuckPermsPlugin plugin);
|
||||||
|
@ -128,11 +128,8 @@ public class SharedMainCommand<T extends PermissionHolder> extends SubCommand<T>
|
|||||||
.limit(1)
|
.limit(1)
|
||||||
.findAny();
|
.findAny();
|
||||||
|
|
||||||
if (!o.isPresent()) {
|
return o.map(cmd -> cmd.onTabComplete(plugin, sender, args.subList(1, args.size()))).orElseGet(Collections::emptyList);
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
return o.get().onTabComplete(plugin, sender, args.subList(1, args.size()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -112,10 +112,6 @@ public class LogMainCommand extends MainCommand<Log, Object> {
|
|||||||
.limit(1)
|
.limit(1)
|
||||||
.findAny();
|
.findAny();
|
||||||
|
|
||||||
if (!o.isPresent()) {
|
return o.map(cmd -> cmd.tabComplete(plugin, sender, args.subList(1, args.size()))).orElseGet(Collections::emptyList);
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
return o.get().tabComplete(plugin, sender, args.subList(1, args.size()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,12 +49,14 @@ import me.lucko.luckperms.common.primarygroup.AllParentsByWeightHolder;
|
|||||||
import me.lucko.luckperms.common.primarygroup.ParentsByWeightHolder;
|
import me.lucko.luckperms.common.primarygroup.ParentsByWeightHolder;
|
||||||
import me.lucko.luckperms.common.primarygroup.PrimaryGroupHolder;
|
import me.lucko.luckperms.common.primarygroup.PrimaryGroupHolder;
|
||||||
import me.lucko.luckperms.common.primarygroup.StoredHolder;
|
import me.lucko.luckperms.common.primarygroup.StoredHolder;
|
||||||
|
import me.lucko.luckperms.common.storage.SplitStorageType;
|
||||||
import me.lucko.luckperms.common.storage.StorageCredentials;
|
import me.lucko.luckperms.common.storage.StorageCredentials;
|
||||||
import me.lucko.luckperms.common.utils.ImmutableCollectors;
|
import me.lucko.luckperms.common.utils.ImmutableCollectors;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -417,14 +419,14 @@ public class ConfigKeys {
|
|||||||
/**
|
/**
|
||||||
* The options for split storage
|
* The options for split storage
|
||||||
*/
|
*/
|
||||||
public static final ConfigKey<Map<String, String>> SPLIT_STORAGE_OPTIONS = EnduringKey.wrap(AbstractKey.of(c -> {
|
public static final ConfigKey<Map<SplitStorageType, String>> SPLIT_STORAGE_OPTIONS = EnduringKey.wrap(AbstractKey.of(c -> {
|
||||||
return ImmutableMap.<String, String>builder()
|
EnumMap<SplitStorageType, String> map = new EnumMap<>(SplitStorageType.class);
|
||||||
.put("user", c.getString("split-storage.methods.user", "h2").toLowerCase())
|
map.put(SplitStorageType.USER, c.getString("split-storage.methods.user", "h2").toLowerCase());
|
||||||
.put("group", c.getString("split-storage.methods.group", "h2").toLowerCase())
|
map.put(SplitStorageType.GROUP, c.getString("split-storage.methods.group", "h2").toLowerCase());
|
||||||
.put("track", c.getString("split-storage.methods.track", "h2").toLowerCase())
|
map.put(SplitStorageType.TRACK, c.getString("split-storage.methods.track", "h2").toLowerCase());
|
||||||
.put("uuid", c.getString("split-storage.methods.uuid", "h2").toLowerCase())
|
map.put(SplitStorageType.UUID, c.getString("split-storage.methods.uuid", "h2").toLowerCase());
|
||||||
.put("log", c.getString("split-storage.methods.log", "h2").toLowerCase())
|
map.put(SplitStorageType.LOG, c.getString("split-storage.methods.log", "h2").toLowerCase());
|
||||||
.build();
|
return ImmutableMap.copyOf(map);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,7 +63,7 @@ public class Group extends PermissionHolder implements Identifiable<String> {
|
|||||||
private final GroupCachedData cachedData;
|
private final GroupCachedData cachedData;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private BufferedRequest<Void> refreshBuffer;
|
private final BufferedRequest<Void> refreshBuffer;
|
||||||
|
|
||||||
public Group(String name, LuckPermsPlugin plugin) {
|
public Group(String name, LuckPermsPlugin plugin) {
|
||||||
super(name, plugin);
|
super(name, plugin);
|
||||||
@ -118,9 +118,10 @@ public class Group extends PermissionHolder implements Identifiable<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private CompletableFuture<Void> reloadCachedData() {
|
private CompletableFuture<Void> reloadCachedData() {
|
||||||
return CompletableFuture.allOf(cachedData.reloadPermissions(), cachedData.reloadMeta()).thenAccept(n -> {
|
return CompletableFuture.allOf(
|
||||||
getPlugin().getApiProvider().getEventFactory().handleGroupDataRecalculate(this, cachedData);
|
cachedData.reloadPermissions(),
|
||||||
});
|
cachedData.reloadMeta()
|
||||||
|
).thenAccept(n -> getPlugin().getApiProvider().getEventFactory().handleGroupDataRecalculate(this, cachedData));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class GroupRefreshBuffer extends BufferedRequest<Void> {
|
private static final class GroupRefreshBuffer extends BufferedRequest<Void> {
|
||||||
|
@ -62,7 +62,7 @@ public class Track implements Identifiable<String> {
|
|||||||
/**
|
/**
|
||||||
* The groups within this track
|
* The groups within this track
|
||||||
*/
|
*/
|
||||||
private List<String> groups = Collections.synchronizedList(new ArrayList<>());
|
private final List<String> groups = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final ApiTrack delegate = new ApiTrack(this);
|
private final ApiTrack delegate = new ApiTrack(this);
|
||||||
|
@ -73,7 +73,7 @@ public class User extends PermissionHolder implements Identifiable<UserIdentifie
|
|||||||
private final UserCachedData cachedData;
|
private final UserCachedData cachedData;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private BufferedRequest<Void> refreshBuffer;
|
private final BufferedRequest<Void> refreshBuffer;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final ApiUser delegate = new ApiUser(this);
|
private final ApiUser delegate = new ApiUser(this);
|
||||||
@ -189,9 +189,10 @@ public class User extends PermissionHolder implements Identifiable<UserIdentifie
|
|||||||
}
|
}
|
||||||
|
|
||||||
public CompletableFuture<Void> reloadCachedData() {
|
public CompletableFuture<Void> reloadCachedData() {
|
||||||
return CompletableFuture.allOf(cachedData.reloadPermissions(), cachedData.reloadMeta()).thenAccept(n -> {
|
return CompletableFuture.allOf(
|
||||||
getPlugin().getApiProvider().getEventFactory().handleUserDataRecalculate(this, cachedData);
|
cachedData.reloadPermissions(),
|
||||||
});
|
cachedData.reloadMeta()
|
||||||
|
).thenAccept(n -> getPlugin().getApiProvider().getEventFactory().handleUserDataRecalculate(this, cachedData));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,7 +30,7 @@ import lombok.NonNull;
|
|||||||
import me.lucko.luckperms.api.Contexts;
|
import me.lucko.luckperms.api.Contexts;
|
||||||
import me.lucko.luckperms.api.Node;
|
import me.lucko.luckperms.api.Node;
|
||||||
import me.lucko.luckperms.api.context.ContextSet;
|
import me.lucko.luckperms.api.context.ContextSet;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -40,7 +40,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
class NodeBuilder implements Node.Builder {
|
class NodeBuilder implements Node.Builder {
|
||||||
protected String permission;
|
protected String permission;
|
||||||
private final MutableContextSet extraContexts = MutableContextSet.create();
|
private final ImmutableContextSet.Builder extraContexts = ImmutableContextSet.builder();
|
||||||
private Boolean value = true;
|
private Boolean value = true;
|
||||||
private boolean override = false;
|
private boolean override = false;
|
||||||
private String server = null;
|
private String server = null;
|
||||||
@ -144,6 +144,6 @@ class NodeBuilder implements Node.Builder {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Node build() {
|
public Node build() {
|
||||||
return new ImmutableNode(permission, value, override, expireAt, server, world, extraContexts);
|
return new ImmutableNode(permission, value, override, expireAt, server, world, extraContexts.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of LuckPerms, licensed under the MIT License.
|
||||||
|
*
|
||||||
|
* Copyright (c) lucko (Luck) <luck@lucko.me>
|
||||||
|
* Copyright (c) contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package me.lucko.luckperms.common.storage;
|
||||||
|
|
||||||
|
public enum SplitStorageType {
|
||||||
|
LOG, USER, GROUP, TRACK, UUID
|
||||||
|
}
|
@ -28,6 +28,7 @@ package me.lucko.luckperms.common.storage;
|
|||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
@ -46,8 +47,6 @@ import me.lucko.luckperms.common.storage.dao.sql.connection.hikari.PostgreConnec
|
|||||||
import me.lucko.luckperms.common.utils.ImmutableCollectors;
|
import me.lucko.luckperms.common.utils.ImmutableCollectors;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -56,19 +55,17 @@ public class StorageFactory {
|
|||||||
|
|
||||||
public static Set<StorageType> getRequiredTypes(LuckPermsPlugin plugin, StorageType defaultMethod) {
|
public static Set<StorageType> getRequiredTypes(LuckPermsPlugin plugin, StorageType defaultMethod) {
|
||||||
if (plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE)) {
|
if (plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE)) {
|
||||||
Map<String, String> types = new HashMap<>(plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE_OPTIONS));
|
return plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE_OPTIONS).entrySet().stream()
|
||||||
types.entrySet().stream()
|
.map(e -> {
|
||||||
.filter(e -> StorageType.parse(e.getValue()) == null)
|
StorageType type = StorageType.parse(e.getValue());
|
||||||
.forEach(e -> {
|
if (type == null) {
|
||||||
plugin.getLog().severe("Storage method for " + e.getKey() + " - " + e.getValue() + " not recognised. " +
|
plugin.getLog().severe("Storage method for " + e.getKey() + " - " + e.getValue() + " not recognised. " +
|
||||||
"Using the default instead.");
|
"Using the default instead.");
|
||||||
e.setValue(defaultMethod.getIdentifiers().get(0));
|
type = defaultMethod;
|
||||||
});
|
}
|
||||||
|
return type;
|
||||||
Set<String> neededTypes = new HashSet<>();
|
})
|
||||||
neededTypes.addAll(types.values());
|
.collect(ImmutableCollectors.toEnumSet(StorageType.class));
|
||||||
|
|
||||||
return neededTypes.stream().map(StorageType::parse).collect(ImmutableCollectors.toSet());
|
|
||||||
} else {
|
} else {
|
||||||
String method = plugin.getConfiguration().get(ConfigKeys.STORAGE_METHOD);
|
String method = plugin.getConfiguration().get(ConfigKeys.STORAGE_METHOD);
|
||||||
StorageType type = StorageType.parse(method);
|
StorageType type = StorageType.parse(method);
|
||||||
@ -85,21 +82,21 @@ public class StorageFactory {
|
|||||||
if (plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE)) {
|
if (plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE)) {
|
||||||
plugin.getLog().info("Loading storage provider... [SPLIT STORAGE]");
|
plugin.getLog().info("Loading storage provider... [SPLIT STORAGE]");
|
||||||
|
|
||||||
Map<String, String> types = new HashMap<>(plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE_OPTIONS));
|
Map<SplitStorageType, StorageType> mappedTypes = plugin.getConfiguration().get(ConfigKeys.SPLIT_STORAGE_OPTIONS).entrySet().stream()
|
||||||
types.entrySet().stream()
|
.map(e -> {
|
||||||
.filter(e -> StorageType.parse(e.getValue()) == null)
|
StorageType type = StorageType.parse(e.getValue());
|
||||||
.forEach(e -> e.setValue(defaultMethod.getIdentifiers().get(0)));
|
if (type == null) {
|
||||||
|
type = defaultMethod;
|
||||||
|
}
|
||||||
|
return Maps.immutableEntry(e.getKey(), type);
|
||||||
|
})
|
||||||
|
.collect(ImmutableCollectors.toEnumMap(SplitStorageType.class, Map.Entry::getKey, Map.Entry::getValue));
|
||||||
|
|
||||||
Set<String> neededTypes = new HashSet<>();
|
Map<StorageType, AbstractDao> backing = mappedTypes.values().stream()
|
||||||
neededTypes.addAll(types.values());
|
.distinct()
|
||||||
|
.collect(ImmutableCollectors.toEnumMap(StorageType.class, e -> e, e -> makeDao(e, plugin)));
|
||||||
|
|
||||||
Map<String, AbstractDao> backing = new HashMap<>();
|
storage = AbstractStorage.create(plugin, new SplitStorageDao(plugin, backing, mappedTypes));
|
||||||
|
|
||||||
for (String type : neededTypes) {
|
|
||||||
backing.put(type, makeDao(StorageType.parse(type), plugin));
|
|
||||||
}
|
|
||||||
|
|
||||||
storage = AbstractStorage.create(plugin, new SplitStorageDao(plugin, backing, types));
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
String method = plugin.getConfiguration().get(ConfigKeys.STORAGE_METHOD);
|
String method = plugin.getConfiguration().get(ConfigKeys.STORAGE_METHOD);
|
||||||
|
@ -35,6 +35,8 @@ import me.lucko.luckperms.common.model.Group;
|
|||||||
import me.lucko.luckperms.common.model.Track;
|
import me.lucko.luckperms.common.model.Track;
|
||||||
import me.lucko.luckperms.common.model.User;
|
import me.lucko.luckperms.common.model.User;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
|
import me.lucko.luckperms.common.storage.SplitStorageType;
|
||||||
|
import me.lucko.luckperms.common.storage.StorageType;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -44,10 +46,10 @@ import java.util.Set;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class SplitStorageDao extends AbstractDao {
|
public class SplitStorageDao extends AbstractDao {
|
||||||
private final Map<String, AbstractDao> backing;
|
private final Map<StorageType, AbstractDao> backing;
|
||||||
private final Map<String, String> types;
|
private final Map<SplitStorageType, StorageType> types;
|
||||||
|
|
||||||
public SplitStorageDao(LuckPermsPlugin plugin, Map<String, AbstractDao> backing, Map<String, String> types) {
|
public SplitStorageDao(LuckPermsPlugin plugin, Map<StorageType, AbstractDao> backing, Map<SplitStorageType, StorageType> types) {
|
||||||
super(plugin, "Split Storage");
|
super(plugin, "Split Storage");
|
||||||
this.backing = ImmutableMap.copyOf(backing);
|
this.backing = ImmutableMap.copyOf(backing);
|
||||||
this.types = ImmutableMap.copyOf(types);
|
this.types = ImmutableMap.copyOf(types);
|
||||||
@ -92,18 +94,18 @@ public class SplitStorageDao extends AbstractDao {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logAction(LogEntry entry) throws Exception {
|
public void logAction(LogEntry entry) throws Exception {
|
||||||
backing.get(types.get("log")).logAction(entry);
|
backing.get(types.get(SplitStorageType.LOG)).logAction(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Log getLog() throws Exception {
|
public Log getLog() throws Exception {
|
||||||
return backing.get(types.get("log")).getLog();
|
return backing.get(types.get(SplitStorageType.LOG)).getLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyBulkUpdate(BulkUpdate bulkUpdate) throws Exception {
|
public void applyBulkUpdate(BulkUpdate bulkUpdate) throws Exception {
|
||||||
String userType = types.get("user");
|
StorageType userType = types.get(SplitStorageType.USER);
|
||||||
String groupType = types.get("group");
|
StorageType groupType = types.get(SplitStorageType.GROUP);
|
||||||
|
|
||||||
backing.get(userType).applyBulkUpdate(bulkUpdate);
|
backing.get(userType).applyBulkUpdate(bulkUpdate);
|
||||||
|
|
||||||
@ -115,91 +117,91 @@ public class SplitStorageDao extends AbstractDao {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User loadUser(UUID uuid, String username) throws Exception {
|
public User loadUser(UUID uuid, String username) throws Exception {
|
||||||
return backing.get(types.get("user")).loadUser(uuid, username);
|
return backing.get(types.get(SplitStorageType.USER)).loadUser(uuid, username);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveUser(User user) throws Exception {
|
public void saveUser(User user) throws Exception {
|
||||||
backing.get(types.get("user")).saveUser(user);
|
backing.get(types.get(SplitStorageType.USER)).saveUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<UUID> getUniqueUsers() throws Exception {
|
public Set<UUID> getUniqueUsers() throws Exception {
|
||||||
return backing.get(types.get("user")).getUniqueUsers();
|
return backing.get(types.get(SplitStorageType.USER)).getUniqueUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HeldPermission<UUID>> getUsersWithPermission(String permission) throws Exception {
|
public List<HeldPermission<UUID>> getUsersWithPermission(String permission) throws Exception {
|
||||||
return backing.get(types.get("user")).getUsersWithPermission(permission);
|
return backing.get(types.get(SplitStorageType.USER)).getUsersWithPermission(permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Group createAndLoadGroup(String name) throws Exception {
|
public Group createAndLoadGroup(String name) throws Exception {
|
||||||
return backing.get(types.get("group")).createAndLoadGroup(name);
|
return backing.get(types.get(SplitStorageType.GROUP)).createAndLoadGroup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Group> loadGroup(String name) throws Exception {
|
public Optional<Group> loadGroup(String name) throws Exception {
|
||||||
return backing.get(types.get("group")).loadGroup(name);
|
return backing.get(types.get(SplitStorageType.GROUP)).loadGroup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadAllGroups() throws Exception {
|
public void loadAllGroups() throws Exception {
|
||||||
backing.get(types.get("group")).loadAllGroups();
|
backing.get(types.get(SplitStorageType.GROUP)).loadAllGroups();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveGroup(Group group) throws Exception {
|
public void saveGroup(Group group) throws Exception {
|
||||||
backing.get(types.get("group")).saveGroup(group);
|
backing.get(types.get(SplitStorageType.GROUP)).saveGroup(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteGroup(Group group) throws Exception {
|
public void deleteGroup(Group group) throws Exception {
|
||||||
backing.get(types.get("group")).deleteGroup(group);
|
backing.get(types.get(SplitStorageType.GROUP)).deleteGroup(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HeldPermission<String>> getGroupsWithPermission(String permission) throws Exception {
|
public List<HeldPermission<String>> getGroupsWithPermission(String permission) throws Exception {
|
||||||
return backing.get(types.get("group")).getGroupsWithPermission(permission);
|
return backing.get(types.get(SplitStorageType.GROUP)).getGroupsWithPermission(permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Track createAndLoadTrack(String name) throws Exception {
|
public Track createAndLoadTrack(String name) throws Exception {
|
||||||
return backing.get(types.get("track")).createAndLoadTrack(name);
|
return backing.get(types.get(SplitStorageType.TRACK)).createAndLoadTrack(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Track> loadTrack(String name) throws Exception {
|
public Optional<Track> loadTrack(String name) throws Exception {
|
||||||
return backing.get(types.get("track")).loadTrack(name);
|
return backing.get(types.get(SplitStorageType.TRACK)).loadTrack(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadAllTracks() throws Exception {
|
public void loadAllTracks() throws Exception {
|
||||||
backing.get(types.get("track")).loadAllTracks();
|
backing.get(types.get(SplitStorageType.TRACK)).loadAllTracks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveTrack(Track track) throws Exception {
|
public void saveTrack(Track track) throws Exception {
|
||||||
backing.get(types.get("track")).saveTrack(track);
|
backing.get(types.get(SplitStorageType.TRACK)).saveTrack(track);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTrack(Track track) throws Exception {
|
public void deleteTrack(Track track) throws Exception {
|
||||||
backing.get(types.get("track")).deleteTrack(track);
|
backing.get(types.get(SplitStorageType.TRACK)).deleteTrack(track);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveUUIDData(UUID uuid, String username) throws Exception {
|
public void saveUUIDData(UUID uuid, String username) throws Exception {
|
||||||
backing.get(types.get("uuid")).saveUUIDData(uuid, username);
|
backing.get(types.get(SplitStorageType.UUID)).saveUUIDData(uuid, username);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getUUID(String username) throws Exception {
|
public UUID getUUID(String username) throws Exception {
|
||||||
return backing.get(types.get("uuid")).getUUID(username);
|
return backing.get(types.get(SplitStorageType.UUID)).getUUID(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName(UUID uuid) throws Exception {
|
public String getName(UUID uuid) throws Exception {
|
||||||
return backing.get(types.get("uuid")).getName(uuid);
|
return backing.get(types.get(SplitStorageType.UUID)).getName(uuid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,9 +109,8 @@ public class LegacyYamlMigration implements Runnable {
|
|||||||
|
|
||||||
Map<String, Object> data = readMapFromFile(oldFile);
|
Map<String, Object> data = readMapFromFile(oldFile);
|
||||||
|
|
||||||
Map<String, Boolean> perms = new HashMap<>();
|
|
||||||
String name = (String) data.get("name");
|
String name = (String) data.get("name");
|
||||||
perms.putAll((Map<String, Boolean>) data.get("perms"));
|
Map<String, Boolean> perms = new HashMap<>((Map<String, Boolean>) data.get("perms"));
|
||||||
|
|
||||||
Set<NodeModel> nodes = perms.entrySet().stream()
|
Set<NodeModel> nodes = perms.entrySet().stream()
|
||||||
.map(e -> LegacyNodeFactory.fromLegacyString(e.getKey(), e.getValue()))
|
.map(e -> LegacyNodeFactory.fromLegacyString(e.getKey(), e.getValue()))
|
||||||
@ -154,11 +153,10 @@ public class LegacyYamlMigration implements Runnable {
|
|||||||
|
|
||||||
Map<String, Object> data = readMapFromFile(oldFile);
|
Map<String, Object> data = readMapFromFile(oldFile);
|
||||||
|
|
||||||
Map<String, Boolean> perms = new HashMap<>();
|
|
||||||
String uuid = (String) data.get("uuid");
|
String uuid = (String) data.get("uuid");
|
||||||
String name = (String) data.get("name");
|
String name = (String) data.get("name");
|
||||||
String primaryGroup = (String) data.get("primary-group");
|
String primaryGroup = (String) data.get("primary-group");
|
||||||
perms.putAll((Map<String, Boolean>) data.get("perms"));
|
Map<String, Boolean> perms = new HashMap<>((Map<String, Boolean>) data.get("perms"));
|
||||||
|
|
||||||
Set<NodeModel> nodes = perms.entrySet().stream()
|
Set<NodeModel> nodes = perms.entrySet().stream()
|
||||||
.map(e -> LegacyNodeFactory.fromLegacyString(e.getKey(), e.getValue()))
|
.map(e -> LegacyNodeFactory.fromLegacyString(e.getKey(), e.getValue()))
|
||||||
|
@ -31,6 +31,8 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collector;
|
import java.util.stream.Collector;
|
||||||
|
|
||||||
@ -61,6 +63,16 @@ public class ImmutableCollectors {
|
|||||||
return (Collector) SET;
|
return (Collector) SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T extends Enum<T>> Collector<T, EnumSet<T>, ImmutableSet<T>> toEnumSet(Class<T> clazz) {
|
||||||
|
//noinspection unchecked
|
||||||
|
return Collector.of(
|
||||||
|
() -> EnumSet.noneOf(clazz),
|
||||||
|
EnumSet::add,
|
||||||
|
(l, r) -> { l.addAll(r); return l; },
|
||||||
|
ImmutableSet::copyOf
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static <T, K, V> Collector<T, ImmutableMap.Builder<K, V>, ImmutableMap<K, V>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) {
|
public static <T, K, V> Collector<T, ImmutableMap.Builder<K, V>, ImmutableMap<K, V>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) {
|
||||||
return Collector.of(
|
return Collector.of(
|
||||||
ImmutableMap.Builder<K, V>::new,
|
ImmutableMap.Builder<K, V>::new,
|
||||||
@ -70,4 +82,13 @@ public class ImmutableCollectors {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T, K extends Enum<K>, V> Collector<T, EnumMap<K, V>, ImmutableMap<K, V>> toEnumMap(Class<K> clazz, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) {
|
||||||
|
return Collector.of(
|
||||||
|
() -> new EnumMap<>(clazz),
|
||||||
|
(r, t) -> r.put(keyMapper.apply(t), valueMapper.apply(t)),
|
||||||
|
(l, r) -> { l.putAll(r); return l; },
|
||||||
|
ImmutableMap::copyOf
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,13 +57,11 @@ public final class SubjectDataProxy implements SubjectData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<Set<Context>, Map<String, Boolean>> getAllPermissions() {
|
public Map<Set<Context>, Map<String, Boolean>> getAllPermissions() {
|
||||||
return (Map) handle().thenApply(handle -> {
|
return (Map) handle().thenApply(handle -> handle.getAllPermissions().entrySet().stream()
|
||||||
return handle.getAllPermissions().entrySet().stream()
|
.collect(ImmutableCollectors.toMap(
|
||||||
.collect(ImmutableCollectors.toMap(
|
e -> CompatibilityUtil.convertContexts(e.getKey()),
|
||||||
e -> CompatibilityUtil.convertContexts(e.getKey()),
|
Map.Entry::getValue
|
||||||
Map.Entry::getValue
|
))).join();
|
||||||
));
|
|
||||||
}).join();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -99,14 +99,11 @@ public class SpongeCommandExecutor extends CommandManager implements CommandCall
|
|||||||
String element = it.next();
|
String element = it.next();
|
||||||
if (element.startsWith("@")) {
|
if (element.startsWith("@")) {
|
||||||
try {
|
try {
|
||||||
Player ret = Selector.parse(element).resolve(source).stream()
|
Selector.parse(element).resolve(source).stream()
|
||||||
.filter(e -> e instanceof Player)
|
.filter(e -> e instanceof Player)
|
||||||
.map(e -> ((Player) e))
|
.map(e -> ((Player) e))
|
||||||
.findFirst().orElse(null);
|
.findFirst()
|
||||||
|
.ifPresent(ret -> it.set(ret.getUniqueId().toString()));
|
||||||
if (ret != null) {
|
|
||||||
it.set(ret.getUniqueId().toString());
|
|
||||||
}
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
// ignored
|
// ignored
|
||||||
}
|
}
|
||||||
|
@ -218,7 +218,7 @@ public class SpongeMainCommand extends Command<Void, LPSubjectData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(Sender sender) {
|
public boolean isAuthorized(Sender sender) {
|
||||||
return getSubCommands().stream().filter(sc -> sc.isAuthorized(sender)).count() != 0;
|
return getSubCommands().stream().anyMatch(sc -> sc.isAuthorized(sender));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Command<LPSubjectData, ?>> getSubCommands() {
|
public List<Command<LPSubjectData, ?>> getSubCommands() {
|
||||||
|
Loading…
Reference in New Issue
Block a user