Format code

This commit is contained in:
2026-05-16 23:08:09 +02:00
parent 81dd8045f2
commit d110df924e
562 changed files with 11025 additions and 10059 deletions
+251 -251
View File
@@ -17,263 +17,263 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
PREFIX=§eSchematic§8»§7
ON=§aon
OFF=§coff
CHANGE=§7To change
CLICK=§7Click
CLICK_DRAG_ITEM=§7Click or drag item here
CURRENT=§7Current: {0}
CONFIRM=§aConfirm
CANCEL=§cCancel
BLANK={0}
PREFIX = §eSchematic§8»§7
ON = §aon
OFF = §coff
CHANGE = §7To change
CLICK = §7Click
CLICK_DRAG_ITEM = §7Click or drag item here
CURRENT = §7Current: {0}
CONFIRM = §aConfirm
CANCEL = §cCancel
BLANK = {0}
UTIL_NAME_REQUIRED=§cFolder name required
UTIL_NAME_TOO_LONG=§cSchematic name too long
UTIL_NAME_INVALID_CHAR=§cThe specified schema name contains forbidden characters
UTIL_NAME_FORBIDDEN=§cThe path must not contain \"§l{0}§c\"
UTIL_LIST_HEAD=§eSchematics §8(§e{0}§8)
UTIL_LIST_PATH=§7Current path: §e{0}
UTIL_LIST_BACK=§e../
UTIL_LIST_BACK_HOVER=§eBack {0}
UTIL_LIST_DIR=§7§lDIR
UTIL_LIST_TYPE=§8§l{0}
UTIL_LIST_BASE=§e
UTIL_LIST_FROM=§8from §7{0}
UTIL_LIST_OPEN_DIR=§eShow directory
UTIL_LIST_OPEN_SCHEM=§eManage schematics
UTIL_LIST_REMOVE=[Remove]
UTIL_LIST_REMOVE_HOVER=§7Remove yourself from the directory
UTIL_LIST_BACK_ARROW=««
UTIL_LIST_BACK_ARROW_HOVER=§ePrevious page
UTIL_LIST_NEXT=Page ({0}/{1}) »»
UTIL_LIST_NEXT_HOVER=§eNext page
UTIL_INFO_SCHEM=§7Schematic: §e{0}
UTIL_INFO_NAME=§7Name: §e{0}
UTIL_INFO_REVISIONS=§7Revisions: §e{0}
UTIL_INFO_OWNER=§7Owner: §e{0}
UTIL_INFO_PARENT=§7Directory: §e{0}
UTIL_INFO_UPDATED=§7Last update: §e{0}
UTIL_INFO_TYPE=§7Type: §e{0}
UTIL_INFO_TYPE_DIR=§eDIR
UTIL_INFO_RANK=§7Rank: §e{0}
UTIL_INFO_COLOR=§7Color translation: {0}
UTIL_INFO_REPLAY=§7Replay playback: {0}
UTIL_INFO_FORMAT=§7Format: §e{0}
UTIL_INFO_STATUS=§cState: §c{0}: {1}
UTIL_INFO_MEMBER=§7Members: §e{0}
UTIL_INFO_MEMBER_STRING=Members:
UTIL_INFO_ACTION_LOAD=(Load)
UTIL_INFO_ACTION_LOAD_HOVER=§eLoad schematic
UTIL_INFO_ACTION_DOWNLOAD=(Download)
UTIL_INFO_ACTION_DOWNLOAD_HOVER=§eDownload schematic
UTIL_INFO_ACTION_TYPE_HOVER=§eChange schematic type
UTIL_INFO_ACTION_ADD_HOVER=§eAdd member
UTIL_INFO_ACTION_REMOVE_HOVER=§eRemove {0}
UTIL_INFO_ACTION_MOVE_HOVER=§eMove schematic
UTIL_INFO_ACTION_REVISIONS_HOVER=§eList revisions
UTIL_INFO_ACTION_RENAME_HOVER=§eRename schematic
UTIL_INFO_ACTION_DELETE=(Delete)
UTIL_INFO_ACTION_DELETE_HOVER=§eDelete schematic
UTIL_LOAD_NOT_HERE=§cYou cannot load schematics here
UTIL_LOAD_NOT_HERE_ALL=§cSchematics cannot be loaded on this build
UTIL_LOAD_DIR=§cYou cannot load folders
UTIL_LOAD_DONE=§7Schematic §e{0} loaded
UTIL_LOAD_NO_DATA=§cNo data could be found in the Schematic
UTIL_LOAD_ERROR=§cThe schematic could not be loaded
UTIL_LOAD_ILLEGAL_REVISION=§cThe schematic doesn't have {0} revisions
UTIL_DOWNLOAD_PUNISHED=§cYou are not allowed to download schematics: §f§l{0}
UTIL_DOWNLOAD_NOT_OWN=§cYou may download only your own schematics
UTIL_DOWNLOAD_LINK=Your download link:
UTIL_TYPE_PUNISHED=§cYou are not allowed to submit schematics until §e{1}§7: §f§l{0}
UTIL_TYPE_PUNISHED_PERMA=§cYou are permanently prohibited from submitting schematics: §f§l{0}
UTIL_TYPE_NOT_OWN=§cYou can only submit your own schematics
UTIL_TYPE_DIR=§cYou cannot submit folders
UTIL_TYPE_NOT_ASSIGNABLE=§cSchematics cannot be changed for this type
UTIL_TYPE_ALREADY=§cThe Schematic already has this type
UTIL_TYPE_DONE=§aChange schematic type
UTIL_TYPE_FIGHT_ALREADY=§cYou have already submitted this schematic
UTIL_TYPE_AFTER_DEADLINE=§cSchematics of this type can no longer be submitted. Deadline was: {0}
UTIL_TYPE_TOO_MANY=§cYou have sent in too many Schematics
UTIL_TYPE_ERROR=§cThe Schematic is not compliant with the rules
UTIL_TYPE_EXTEND=§aThe preparation server is starting
UTIL_SUBMIT_TITLE=Extend Schematic
UTIL_SUBMIT_REPLAY_ON=§aReplay allowed
UTIL_SUBMIT_REPLAY_OFF=§cReplay locked
UTIL_SUBMIT_COLOR_ON=§aReplace pink to team color
UTIL_SUBMIT_COLOR_OFF=§cDo not replace pink
UTIL_SUBMIT_DIRECT=§eSubmit directly
UTIL_SUBMIT_DIRECT_DONE=§aThe Schematic will be reviewed in a timely manner
UTIL_SUBMIT_DIRECT_PLAYABLE=§aYou can now use this Schematic in the arena! Good luck and have fun.
UTIL_SUBMIT_EXTEND=§eExtend Schematic
UTIL_SUBMIT_EXTEND_DONE=§aThe preparation server is starting
UTIL_CHECK_TYPE_NOT_FOUND=§cThe type {0} was not found
UTIL_CHECK_SUCCESS=§aThe schematic was checked successfully
UTIL_NAME_REQUIRED = §cFolder name required
UTIL_NAME_TOO_LONG = §cSchematic name too long
UTIL_NAME_INVALID_CHAR = §cThe specified schema name contains forbidden characters
UTIL_NAME_FORBIDDEN = §cThe path must not contain \"§l{0}§c\"
UTIL_LIST_HEAD = §eSchematics §8(§e{0}§8)
UTIL_LIST_PATH = §7Current path: §e{0}
UTIL_LIST_BACK = §e../
UTIL_LIST_BACK_HOVER = §eBack {0}
UTIL_LIST_DIR = §7§lDIR
UTIL_LIST_TYPE = §8§l{0}
UTIL_LIST_BASE = §e
UTIL_LIST_FROM = §8from §7{0}
UTIL_LIST_OPEN_DIR = §eShow directory
UTIL_LIST_OPEN_SCHEM = §eManage schematics
UTIL_LIST_REMOVE = [Remove]
UTIL_LIST_REMOVE_HOVER = §7Remove yourself from the directory
UTIL_LIST_BACK_ARROW = ««
UTIL_LIST_BACK_ARROW_HOVER = §ePrevious page
UTIL_LIST_NEXT = Page ({0}/{1}) »»
UTIL_LIST_NEXT_HOVER = §eNext page
UTIL_INFO_SCHEM = §7Schematic: §e{0}
UTIL_INFO_NAME = §7Name: §e{0}
UTIL_INFO_REVISIONS = §7Revisions: §e{0}
UTIL_INFO_OWNER = §7Owner: §e{0}
UTIL_INFO_PARENT = §7Directory: §e{0}
UTIL_INFO_UPDATED = §7Last update: §e{0}
UTIL_INFO_TYPE = §7Type: §e{0}
UTIL_INFO_TYPE_DIR = §eDIR
UTIL_INFO_RANK = §7Rank: §e{0}
UTIL_INFO_COLOR = §7Color translation: {0}
UTIL_INFO_REPLAY = §7Replay playback: {0}
UTIL_INFO_FORMAT = §7Format: §e{0}
UTIL_INFO_STATUS = §cState: §c{0}: {1}
UTIL_INFO_MEMBER = §7Members: §e{0}
UTIL_INFO_MEMBER_STRING = Members:
UTIL_INFO_ACTION_LOAD = (Load)
UTIL_INFO_ACTION_LOAD_HOVER = §eLoad schematic
UTIL_INFO_ACTION_DOWNLOAD = (Download)
UTIL_INFO_ACTION_DOWNLOAD_HOVER = §eDownload schematic
UTIL_INFO_ACTION_TYPE_HOVER = §eChange schematic type
UTIL_INFO_ACTION_ADD_HOVER = §eAdd member
UTIL_INFO_ACTION_REMOVE_HOVER = §eRemove {0}
UTIL_INFO_ACTION_MOVE_HOVER = §eMove schematic
UTIL_INFO_ACTION_REVISIONS_HOVER = §eList revisions
UTIL_INFO_ACTION_RENAME_HOVER = §eRename schematic
UTIL_INFO_ACTION_DELETE = (Delete)
UTIL_INFO_ACTION_DELETE_HOVER = §eDelete schematic
UTIL_LOAD_NOT_HERE = §cYou cannot load schematics here
UTIL_LOAD_NOT_HERE_ALL = §cSchematics cannot be loaded on this build
UTIL_LOAD_DIR = §cYou cannot load folders
UTIL_LOAD_DONE = §7Schematic §e{0} loaded
UTIL_LOAD_NO_DATA = §cNo data could be found in the Schematic
UTIL_LOAD_ERROR = §cThe schematic could not be loaded
UTIL_LOAD_ILLEGAL_REVISION = §cThe schematic doesn't have {0} revisions
UTIL_DOWNLOAD_PUNISHED = §cYou are not allowed to download schematics: §f§l{0}
UTIL_DOWNLOAD_NOT_OWN = §cYou may download only your own schematics
UTIL_DOWNLOAD_LINK = Your download link:
UTIL_TYPE_PUNISHED = §cYou are not allowed to submit schematics until §e{1}§7: §f§l{0}
UTIL_TYPE_PUNISHED_PERMA = §cYou are permanently prohibited from submitting schematics: §f§l{0}
UTIL_TYPE_NOT_OWN = §cYou can only submit your own schematics
UTIL_TYPE_DIR = §cYou cannot submit folders
UTIL_TYPE_NOT_ASSIGNABLE = §cSchematics cannot be changed for this type
UTIL_TYPE_ALREADY = §cThe Schematic already has this type
UTIL_TYPE_DONE = §aChange schematic type
UTIL_TYPE_FIGHT_ALREADY = §cYou have already submitted this schematic
UTIL_TYPE_AFTER_DEADLINE = §cSchematics of this type can no longer be submitted. Deadline was: {0}
UTIL_TYPE_TOO_MANY = §cYou have sent in too many Schematics
UTIL_TYPE_ERROR = §cThe Schematic is not compliant with the rules
UTIL_TYPE_EXTEND = §aThe preparation server is starting
UTIL_SUBMIT_TITLE = Extend Schematic
UTIL_SUBMIT_REPLAY_ON = §aReplay allowed
UTIL_SUBMIT_REPLAY_OFF = §cReplay locked
UTIL_SUBMIT_COLOR_ON = §aReplace pink to team color
UTIL_SUBMIT_COLOR_OFF = §cDo not replace pink
UTIL_SUBMIT_DIRECT = §eSubmit directly
UTIL_SUBMIT_DIRECT_DONE = §aThe Schematic will be reviewed in a timely manner
UTIL_SUBMIT_DIRECT_PLAYABLE = §aYou can now use this Schematic in the arena! Good luck and have fun.
UTIL_SUBMIT_EXTEND = §eExtend Schematic
UTIL_SUBMIT_EXTEND_DONE = §aThe preparation server is starting
UTIL_CHECK_TYPE_NOT_FOUND = §cThe type {0} was not found
UTIL_CHECK_SUCCESS = §aThe schematic was checked successfully
COMMAND_INVALID_NODE=§cInvalid Schematic
COMMAND_NOT_OWN=§cYou can only use this command on your own Schematic
COMMAND_MUST_DIR=§cYou can only use this command on a directory
COMMAND_MUST_SCHEM=§cYou can only use this command on a Schematic
COMMAND_ENTER_NAME=Insert name
COMMAND_PUNISHMENT_NO_SAVE_EXTERNAL=§cYou can not make schematics on other build server
COMMAND_PUNISHMENT_NO_SAVE=§cSchematics cannot be made on this build
COMMAND_SAVE_NO_NAME=§cYou must also specify a name for the schematic after the folder
COMMAND_SAVE_FOLDER=§cSchematic is a folder
COMMAND_SAVE_NO_OVERWRITE=§cYou must not overwrite this Schematic
COMMAND_SAVE_CLIPBOARD_EMPTY=§cYour clipboard is empty
COMMAND_SAVE_ERROR=§cError while saving the Schematic
COMMAND_SAVE_DONE=Schematic §e{0} §7stored
COMMAND_SAVE_OVERWRITE=Schematic §e{0} §7overwritten
COMMAND_SAVE_OVERWRITE_CONFIRM=§cThe Schematic §e{0} §calready exists. Do you want to overwrite it? §e*click*
COMMAND_SAVE_OVERWRITE_CONFIRM_HOVER=§eOverwrite Schematic
COMMAND_ADD_PUNISH=§cYou may not add anyone to your schematics: §f§l{0}
COMMAND_ADD_USER_PUNISHED=§c{0} must not be added to schematics
COMMAND_ADD_OWN=§cSo please: This is your own Schematic!
COMMAND_ADD_PUBLIC=§cFor public requests please contact the moderator
COMMAND_ADD_ALREADY=§c{0} is already added to this schematic
COMMAND_ADD_ADDED=You now have access to the Schematic §e{0} §7of §e{1}
COMMAND_ADD_NONE=§cNo player has been added
COMMAND_ADD_ONE=§7The player §e{0} was added to the schematic
COMMAND_ADD_MANY=§7The players §e{0} were added to the schematic
COMMAND_DELMEM_DONE=The player §e{0} §7no longer has access to the Schematic §e{1}
COMMAND_DELMEM_DELETED=§cYou now no longer have access to the Schematic §e{0} §7of §e{1}
COMMAND_SEARCH_NOT_A_PLAYER=§cThe player §e{0} §cdoes not exists
COMMAND_LOCKREPLAY=Replays of fights with {0} can no longer be viewed from now on
COMMAND_REPLACE_COLOR_OFF=In fights {0} pink blocks are not replaced
COMMAND_REPLACE_COLOR_ON=In fights {0} pink blocks are replaced
COMMAND_DIR_DONE=§7Directory §e{0} §7created
COMMAND_CHANGE_TYPE_SELECT=§eSelect type
COMMAND_MOVE_RECURSIVE=§cThis only gives mistakes, trust me
COMMAND_MOVE_DONE=§7The schematic can now be found under §e{0}
COMMAND_RENAME_DONE=§7The schematic is now called §e{0}
COMMAND_ADD_TEAM_NOT_IN_TEAM=§cYou are not in any team
COMMAND_DEL_TEAM_NOT_IN_TEAM=§cYou are not in any team
COMMAND_DEL_TEAM_NONE=§7No player was removed
COMMAND_DEL_TEAM_DONE=§7The player §e{0} §7were removed from the Schematic
COMMAND_CLEAR_MEMBER_DONE=§7All players were removed from the Schematic
COMMAND_DEL_ALL_MEMBER=§e{0} §7has been removed from §e{1} §7Schematics
COMMAND_PUBLIC_ON=§aYou are now the public user
COMMAND_PUBLIC_OFF=§cYou are no longer the public user
COMMAND_DELETE_NOT_OWN=§cThe schematic is not yours
COMMAND_DELETE_MEMBER=§aYou have removed yourself from the Schematic
COMMAND_DELETE_DIR=§aThe folder §e{0}§a is deleted...
COMMAND_DELETE_DIR_FULL=§cThe folder must be empty to delete it
COMMAND_DELETE_SCHEM=§aThe Schematic §e{0}§a is deleted...
COMMAND_CHECK_SELECTION_INCOMPLETE=§cThe selection is incomplete
COMMAND_CHECK_CLIPBOARD_EMPTY=§cThe clipboard is empty
COMMAND_FIX_OK=§aThe schematic is already fixed
COMMAND_FIX_DONE=§aThe schematic has been fixed
COMMAND_FIX_COULD_NOT_FIX=§cCould not fix this in the schematic
COMMAND_FIX_MANUAL=manually fix
COMMAND_FIX_ERROR=§cError while fixing the schematic, please contact a developer
COMMAND_FIX_WRONG_VERSION=§cThis feature is only available for version 1.15 and greater
COMMAND_INVALID_NODE = §cInvalid Schematic
COMMAND_NOT_OWN = §cYou can only use this command on your own Schematic
COMMAND_MUST_DIR = §cYou can only use this command on a directory
COMMAND_MUST_SCHEM = §cYou can only use this command on a Schematic
COMMAND_ENTER_NAME = Insert name
COMMAND_PUNISHMENT_NO_SAVE_EXTERNAL = §cYou can not make schematics on other build server
COMMAND_PUNISHMENT_NO_SAVE = §cSchematics cannot be made on this build
COMMAND_SAVE_NO_NAME = §cYou must also specify a name for the schematic after the folder
COMMAND_SAVE_FOLDER = §cSchematic is a folder
COMMAND_SAVE_NO_OVERWRITE = §cYou must not overwrite this Schematic
COMMAND_SAVE_CLIPBOARD_EMPTY = §cYour clipboard is empty
COMMAND_SAVE_ERROR = §cError while saving the Schematic
COMMAND_SAVE_DONE = Schematic §e{0} §7stored
COMMAND_SAVE_OVERWRITE = Schematic §e{0} §7overwritten
COMMAND_SAVE_OVERWRITE_CONFIRM = §cThe Schematic §e{0} §calready exists. Do you want to overwrite it? §e*click*
COMMAND_SAVE_OVERWRITE_CONFIRM_HOVER = §eOverwrite Schematic
COMMAND_ADD_PUNISH = §cYou may not add anyone to your schematics: §f§l{0}
COMMAND_ADD_USER_PUNISHED = §c{0} must not be added to schematics
COMMAND_ADD_OWN = §cSo please: This is your own Schematic!
COMMAND_ADD_PUBLIC = §cFor public requests please contact the moderator
COMMAND_ADD_ALREADY = §c{0} is already added to this schematic
COMMAND_ADD_ADDED = You now have access to the Schematic §e{0} §7of §e{1}
COMMAND_ADD_NONE = §cNo player has been added
COMMAND_ADD_ONE = §7The player §e{0} was added to the schematic
COMMAND_ADD_MANY = §7The players §e{0} were added to the schematic
COMMAND_DELMEM_DONE = The player §e{0} §7no longer has access to the Schematic §e{1}
COMMAND_DELMEM_DELETED = §cYou now no longer have access to the Schematic §e{0} §7of §e{1}
COMMAND_SEARCH_NOT_A_PLAYER = §cThe player §e{0} §cdoes not exists
COMMAND_LOCKREPLAY = Replays of fights with {0} can no longer be viewed from now on
COMMAND_REPLACE_COLOR_OFF = In fights {0} pink blocks are not replaced
COMMAND_REPLACE_COLOR_ON = In fights {0} pink blocks are replaced
COMMAND_DIR_DONE = §7Directory §e{0} §7created
COMMAND_CHANGE_TYPE_SELECT = §eSelect type
COMMAND_MOVE_RECURSIVE = §cThis only gives mistakes, trust me
COMMAND_MOVE_DONE = §7The schematic can now be found under §e{0}
COMMAND_RENAME_DONE = §7The schematic is now called §e{0}
COMMAND_ADD_TEAM_NOT_IN_TEAM = §cYou are not in any team
COMMAND_DEL_TEAM_NOT_IN_TEAM = §cYou are not in any team
COMMAND_DEL_TEAM_NONE = §7No player was removed
COMMAND_DEL_TEAM_DONE = §7The player §e{0} §7were removed from the Schematic
COMMAND_CLEAR_MEMBER_DONE = §7All players were removed from the Schematic
COMMAND_DEL_ALL_MEMBER = §e{0} §7has been removed from §e{1} §7Schematics
COMMAND_PUBLIC_ON = §aYou are now the public user
COMMAND_PUBLIC_OFF = §cYou are no longer the public user
COMMAND_DELETE_NOT_OWN = §cThe schematic is not yours
COMMAND_DELETE_MEMBER = §aYou have removed yourself from the Schematic
COMMAND_DELETE_DIR = §aThe folder §e{0}§a is deleted...
COMMAND_DELETE_DIR_FULL = §cThe folder must be empty to delete it
COMMAND_DELETE_SCHEM = §aThe Schematic §e{0}§a is deleted...
COMMAND_CHECK_SELECTION_INCOMPLETE = §cThe selection is incomplete
COMMAND_CHECK_CLIPBOARD_EMPTY = §cThe clipboard is empty
COMMAND_FIX_OK = §aThe schematic is already fixed
COMMAND_FIX_DONE = §aThe schematic has been fixed
COMMAND_FIX_COULD_NOT_FIX = §cCould not fix this in the schematic
COMMAND_FIX_MANUAL = manually fix
COMMAND_FIX_ERROR = §cError while fixing the schematic, please contact a developer
COMMAND_FIX_WRONG_VERSION = §cThis feature is only available for version 1.15 and greater
HELP_HEADER=§e§lSchematicSystem §8§lHelp
HELP_VIEW=Find & Load
HELP_VIEW_HOVER=Search or download schematics
HELP_VIEW_1=§8/§7schem §einfo §8[§7schematic§8] - §7Shows information about the schematic
HELP_VIEW_2=§8/§7schem §elist §8- §7Shows you your schematics
HELP_VIEW_3=§8/§7schem §elist public §8- §7Shows all public schematics
HELP_VIEW_4=§8/§7schem §esearch §8[§7keyword§8] - §7Searches for matching schematics
HELP_VIEW_5=§8/§7schem §eload §8[§7schematic§8] - §7Loads a schematic
HELP_VIEW_6=§8/§7schem §edownload §8[§7schematic§8] - §7Gives you a download link (valid for 1 min)
HELP_VIEW_7=§8/§7download §8- §7Gives you a download link for your current clipboard (valid for 1 min)
HELP_VIEW_8=§8/§7schem §echeck §8[§7schematic§8|§7selection§8|§7clipboard§8] [§7schematictype§8] - §7Checks the schematic for errors
HELP_EDIT=Save & Edit
HELP_EDIT_HOVER=Modification of schematics and folders
HELP_EDIT_1=§8/§7schem §esave §8[§7schematic§8] - §7Saves your clipboard as a schematic
HELP_EDIT_2=§8/§7schem §eordner §8[§7directory§8] - §7Create an empty folder
HELP_EDIT_3=§8/§7schem §emove §8[§7schematic§8] [§7new path§8] - §7Move a schematic
HELP_EDIT_4=§8/§7schem §erename §8[§7schematic§8] [§7new path§8] - §7Give the schematic a new name
HELP_EDIT_5=§8/§7schem §echangetype §8[§7schematic§8] - §7Changes the type of your schematic
HELP_EDIT_6=§8/§7schem §elockreplay §8[§7schematic§8] - §7Locks replays of the schematic
HELP_EDIT_7=§8/§7schem §ereplacecolor §8[§7schematic§8] - §7Changes color substitution in the arena
HELP_EDIT_8=§8/§7schem §edelete §8[§7schematic§8] - §7Deletes a schematic
HELP_EDIT_9=§8/§7schem §efix §8[§7schematictype§8] - §7Tries to fix the schematic in your clipboard
HELP_SHARE=Ownership
HELP_SHARE_HOVER=Share Schematics with others
HELP_SHARE_1=§8/§7schem §eaddmember §8[§7schematic§8] §8[§7Spieler§8] - §7Adds a player to a schematic
HELP_SHARE_2=§8/§7schem §edelmember §8[§7schematic§8] §8[§7Spieler§8] - §7Removes a player from a schematic
HELP_SHARE_3=§8/§7schem §eclearmember §8[§7schematic§8] - §7Removes all players from the schematic
HELP_SHARE_4=§8/§7schem §edelallmember §8[§7player§8] - §7Removes a player from all your schematics
HELP_SHARE_5=§8/§7schem §eaddteam §8[§7schematic§8] - §7Add everyone from your team to the schematic
HELP_SHARE_6=§8/§7schem §edelteam §8[§7schematic§8] - §7Remove everyone from your team from the Schematic
HELP_HEADER = §e§lSchematicSystem §8§lHelp
HELP_VIEW = Find & Load
HELP_VIEW_HOVER = Search or download schematics
HELP_VIEW_1 = §8/§7schem §einfo §8[§7schematic§8] - §7Shows information about the schematic
HELP_VIEW_2 = §8/§7schem §elist §8- §7Shows you your schematics
HELP_VIEW_3 = §8/§7schem §elist public §8- §7Shows all public schematics
HELP_VIEW_4 = §8/§7schem §esearch §8[§7keyword§8] - §7Searches for matching schematics
HELP_VIEW_5 = §8/§7schem §eload §8[§7schematic§8] - §7Loads a schematic
HELP_VIEW_6 = §8/§7schem §edownload §8[§7schematic§8] - §7Gives you a download link (valid for 1 min)
HELP_VIEW_7 = §8/§7download §8- §7Gives you a download link for your current clipboard (valid for 1 min)
HELP_VIEW_8 = §8/§7schem §echeck §8[§7schematic§8|§7selection§8|§7clipboard§8] [§7schematictype§8] - §7Checks the schematic for errors
HELP_EDIT = Save & Edit
HELP_EDIT_HOVER = Modification of schematics and folders
HELP_EDIT_1 = §8/§7schem §esave §8[§7schematic§8] - §7Saves your clipboard as a schematic
HELP_EDIT_2 = §8/§7schem §eordner §8[§7directory§8] - §7Create an empty folder
HELP_EDIT_3 = §8/§7schem §emove §8[§7schematic§8] [§7new path§8] - §7Move a schematic
HELP_EDIT_4 = §8/§7schem §erename §8[§7schematic§8] [§7new path§8] - §7Give the schematic a new name
HELP_EDIT_5 = §8/§7schem §echangetype §8[§7schematic§8] - §7Changes the type of your schematic
HELP_EDIT_6 = §8/§7schem §elockreplay §8[§7schematic§8] - §7Locks replays of the schematic
HELP_EDIT_7 = §8/§7schem §ereplacecolor §8[§7schematic§8] - §7Changes color substitution in the arena
HELP_EDIT_8 = §8/§7schem §edelete §8[§7schematic§8] - §7Deletes a schematic
HELP_EDIT_9 = §8/§7schem §efix §8[§7schematictype§8] - §7Tries to fix the schematic in your clipboard
HELP_SHARE = Ownership
HELP_SHARE_HOVER = Share Schematics with others
HELP_SHARE_1 = §8/§7schem §eaddmember §8[§7schematic§8] §8[§7Spieler§8] - §7Adds a player to a schematic
HELP_SHARE_2 = §8/§7schem §edelmember §8[§7schematic§8] §8[§7Spieler§8] - §7Removes a player from a schematic
HELP_SHARE_3 = §8/§7schem §eclearmember §8[§7schematic§8] - §7Removes all players from the schematic
HELP_SHARE_4 = §8/§7schem §edelallmember §8[§7player§8] - §7Removes a player from all your schematics
HELP_SHARE_5 = §8/§7schem §eaddteam §8[§7schematic§8] - §7Add everyone from your team to the schematic
HELP_SHARE_6 = §8/§7schem §edelteam §8[§7schematic§8] - §7Remove everyone from your team from the Schematic
GUI_TITLE=Schematics \{1\}
GUI_FOLDER_PROPERTIES=§7Directory properties
GUI_INFO_LOAD=§eLoading
GUI_INFO_BACK=§eBack
GUI_INFO_STATUS=§eState {0}
GUI_INFO_STATUS_LORE=§7{0}
GUI_INFO_MAT=§e{0}
GUI_INFO_TYPE=§e{0}
GUI_INFO_DOWNLOAD=§eDownload
GUI_INFO_COLOR=Color translation
GUI_INFO_REPLAY=Replay playback
GUI_INFO_REPLAY_OFF=§7§lTurn off
GUI_INFO_REPLAY_TITLE=Lock playback permanently
GUI_INFO_MEMBER=§eMembers
GUI_INFO_MOVE=§eMove
GUI_INFO_RENAME=§eRename
GUI_INFO_RENAME_TITLE={0} rename
GUI_INFO_DELETE=§cDelete
GUI_INFO_MEMBER_FROM=§7Owner §e{0}
GUI_INFO_MEMBER_REMOVE=§cRemove access
GUI_CHANGE_TYPE=Change type
GUI_CHANGE_TYPE_NOT_POSSIBLE=§cThe Schematic is too big
GUI_CHANGE_TYPE_NOT_POSSIBLE_COLOR=§7{0}
GUI_DELETE_OWN_DELETED=Schematic §e{0} §7deleted
GUI_DELETE_OWN_TITLE=Delete {0}
GUI_DELETE_MEMBER_TITLE=Remove {0}
GUI_DELETE_MEMBER_DONE=Access to Schematic §e{0} §7removed
GUI_DELETE_MEMBERS_TITLE=Remove members
GUI_CHANGE_ITEM=Change item
GUI_LOAD_LATEST=§eLeft §7Click → §eLoad latest
GUI_LOAD_REVISION=§eRight §7Click → §eList Revisions
GUI_LOAD_REVISION_TITLE=Select Revision
GUI_TITLE = Schematics \{1\}
GUI_FOLDER_PROPERTIES = §7Directory properties
GUI_INFO_LOAD = §eLoading
GUI_INFO_BACK = §eBack
GUI_INFO_STATUS = §eState {0}
GUI_INFO_STATUS_LORE = §7{0}
GUI_INFO_MAT = §e{0}
GUI_INFO_TYPE = §e{0}
GUI_INFO_DOWNLOAD = §eDownload
GUI_INFO_COLOR = Color translation
GUI_INFO_REPLAY = Replay playback
GUI_INFO_REPLAY_OFF = §7§lTurn off
GUI_INFO_REPLAY_TITLE = Lock playback permanently
GUI_INFO_MEMBER = §eMembers
GUI_INFO_MOVE = §eMove
GUI_INFO_RENAME = §eRename
GUI_INFO_RENAME_TITLE = {0} rename
GUI_INFO_DELETE = §cDelete
GUI_INFO_MEMBER_FROM = §7Owner §e{0}
GUI_INFO_MEMBER_REMOVE = §cRemove access
GUI_CHANGE_TYPE = Change type
GUI_CHANGE_TYPE_NOT_POSSIBLE = §cThe Schematic is too big
GUI_CHANGE_TYPE_NOT_POSSIBLE_COLOR = §7{0}
GUI_DELETE_OWN_DELETED = Schematic §e{0} §7deleted
GUI_DELETE_OWN_TITLE = Delete {0}
GUI_DELETE_MEMBER_TITLE = Remove {0}
GUI_DELETE_MEMBER_DONE = Access to Schematic §e{0} §7removed
GUI_DELETE_MEMBERS_TITLE = Remove members
GUI_CHANGE_ITEM = Change item
GUI_LOAD_LATEST = §eLeft §7Click → §eLoad latest
GUI_LOAD_REVISION = §eRight §7Click → §eList Revisions
GUI_LOAD_REVISION_TITLE = Select Revision
AUTO_CHECK_RESULT_NOT_LOAD=The schematic could not be loaded
AUTO_CHECK_RESULT_TOO_WIDE=The schematic is too wide ({0} > {1})
AUTO_CHECK_RESULT_TOO_LONG=The schematic is too long ({0} > {1})
AUTO_CHECK_RESULT_TOO_HIGH=The schematic is too high ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_BLOCK=The block {0} was used {1} times too often
AUTO_CHECK_RESULT_TOO_MANY_BLOCKS=The block combination {0} was used {1} times too often
AUTO_CHECK_RESULT_TOO_MANY_ALL_BLOCKS=Too many blocks ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_RECORDS=No records allowed ({0} found)
AUTO_CHECK_RESULT_FORBIDDEN_ITEM=In {0}s the forbidden item {1} {2} times was found
AUTO_CHECK_RESULT_FORBIDDEN_ITEM_NBT=In {0}s the forbidden item {1} {2} times was found with custom tag
AUTO_CHECK_RESULT_TOO_MANY_DISPENSER_ITEMS=One launcher contains more than {0} arrows and fireballs
AUTO_CHECK_RESULT_TOO_MANY_DISPENSERS_ITEMS={0} launchers contains more than {1} arrows and fireballs
AUTO_CHECK_RESULT_NBTS_WARNING={0} {1}s contain no or incorrect NBT data
AUTO_CHECK_RESULT_NBT_WARNING=One {0} contains no or incorrect NBT data.
AUTO_CHECK_RESULT_NOT_LOAD = The schematic could not be loaded
AUTO_CHECK_RESULT_TOO_WIDE = The schematic is too wide ({0} > {1})
AUTO_CHECK_RESULT_TOO_LONG = The schematic is too long ({0} > {1})
AUTO_CHECK_RESULT_TOO_HIGH = The schematic is too high ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_BLOCK = The block {0} was used {1} times too often
AUTO_CHECK_RESULT_TOO_MANY_BLOCKS = The block combination {0} was used {1} times too often
AUTO_CHECK_RESULT_TOO_MANY_ALL_BLOCKS = Too many blocks ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_RECORDS = No records allowed ({0} found)
AUTO_CHECK_RESULT_FORBIDDEN_ITEM = In {0}s the forbidden item {1} {2} times was found
AUTO_CHECK_RESULT_FORBIDDEN_ITEM_NBT = In {0}s the forbidden item {1} {2} times was found with custom tag
AUTO_CHECK_RESULT_TOO_MANY_DISPENSER_ITEMS = One launcher contains more than {0} arrows and fireballs
AUTO_CHECK_RESULT_TOO_MANY_DISPENSERS_ITEMS = {0} launchers contains more than {1} arrows and fireballs
AUTO_CHECK_RESULT_NBTS_WARNING = {0} {1}s contain no or incorrect NBT data
AUTO_CHECK_RESULT_NBT_WARNING = One {0} contains no or incorrect NBT data.
SAFE_NODE_NOT_A_DIR=§cThe selected Schematic is not a folder
SAFE_NODE_ALREADY_IN_DIRECTORY=§cThe schematic is already available in this folder
SAFE_NODE_INVALID_NAME=§cThis name is illegal
SAFE_NODE_NOT_OWNER=§cYou are not the owner of this schematic
SAFE_NODE_NOT_A_DIR = §cThe selected Schematic is not a folder
SAFE_NODE_ALREADY_IN_DIRECTORY = §cThe schematic is already available in this folder
SAFE_NODE_INVALID_NAME = §cThis name is illegal
SAFE_NODE_NOT_OWNER = §cYou are not the owner of this schematic
DOWNLOAD_ERROR=§cAn error occurred while uploading the schematic
DOWNLOAD_ERROR = §cAn error occurred while uploading the schematic
AUTO_CHECKER_RESULT_HEADER=§7---=== (§eAuto-Check: {0}§7) ===---
AUTO_CHECKER_RESULT_WIDTH =§7Width: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_LENGTH=§7Length: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_HEIGHT=§7Height: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_BLOCKS=§7Blocks: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_UNKNOWN_MATERIAL=§7Unknown block: §c{0}
AUTO_CHECKER_RESULT_TOO_MANY_BLOCK=§7{0}: §c{1}§7, Max: §e{2}
AUTO_CHECKER_RESULT_FORBIDDEN_BLOCK=§7Forbidden block: §c{0}
AUTO_CHECKER_RESULT_WIND_CHARGES=§7Windcharges: §c{0}§7, Max: §e2048
AUTO_CHECKER_RESULT_WIND_CHARGES_DISPENSER=§7Dispenser: §c[{0}, {1}, {2}]§7, Windcharges: §c{3}§7
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM=§7Forbidden Item: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_DEFUNCT_NBT=§7Defunct NBT: §7[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_DESIGN_BLOCK=§7{0} in Design: [{1}, {2}, {3}]
AUTO_CHECKER_RESULT_ENTITY=§7Entity: §7[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_RECORD=§7Record: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_TOO_MANY_DISPENSER_ITEMS=§7Dispenser: §c[{0}, {1}, {2}]§7, §c{3} §7items, Max: §e{4}
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM_NBT=§7Forbidden Item NBT: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_TELEPORT_HERE=§7Teleport to block
AUTO_CHECKER_RESULT_AFTER_DEADLINE=§cThe deadline has expired: {0}
AUTO_CHECKER_RESULT_HEADER = §7---=== (§eAuto-Check: {0}§7) ===---
AUTO_CHECKER_RESULT_WIDTH = §7Width: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_LENGTH = §7Length: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_HEIGHT = §7Height: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_BLOCKS = §7Blocks: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_UNKNOWN_MATERIAL = §7Unknown block: §c{0}
AUTO_CHECKER_RESULT_TOO_MANY_BLOCK = §7{0}: §c{1}§7, Max: §e{2}
AUTO_CHECKER_RESULT_FORBIDDEN_BLOCK = §7Forbidden block: §c{0}
AUTO_CHECKER_RESULT_WIND_CHARGES = §7Windcharges: §c{0}§7, Max: §e2048
AUTO_CHECKER_RESULT_WIND_CHARGES_DISPENSER = §7Dispenser: §c[{0}, {1}, {2}]§7, Windcharges: §c{3}§7
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM = §7Forbidden Item: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_DEFUNCT_NBT = §7Defunct NBT: §7[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_DESIGN_BLOCK = §7{0} in Design: [{1}, {2}, {3}]
AUTO_CHECKER_RESULT_ENTITY = §7Entity: §7[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_RECORD = §7Record: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_TOO_MANY_DISPENSER_ITEMS = §7Dispenser: §c[{0}, {1}, {2}]§7, §c{3} §7items, Max: §e{4}
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM_NBT = §7Forbidden Item NBT: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_TELEPORT_HERE = §7Teleport to block
AUTO_CHECKER_RESULT_AFTER_DEADLINE = §cThe deadline has expired: {0}
REVISIONS_TITLE=§7Revisions:
REVISIONS_REVISION_NUMBER=§7#{0}: §e{1}
REVISIONS_EMPTY=§cNo Revisions
REVISIONS_TITLE = §7Revisions:
REVISIONS_REVISION_NUMBER = §7#{0}: §e{1}
REVISIONS_EMPTY = §cNo Revisions
+229 -229
View File
@@ -17,241 +17,241 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
ON=§aAn
OFF=§cAus
CHANGE=§7Zum Ändern
CLICK=§7anklicken
CLICK_DRAG_ITEM=§7anklicken oder hier Item hineinlegen
CURRENT=§7Aktuell: {0}
CONFIRM=§aBestätigen
CANCEL=§cAbbrechen
ON = §aAn
OFF = §cAus
CHANGE = §7Zum Ändern
CLICK = §7anklicken
CLICK_DRAG_ITEM = §7anklicken oder hier Item hineinlegen
CURRENT = §7Aktuell: {0}
CONFIRM = §aBestätigen
CANCEL = §cAbbrechen
UTIL_NAME_REQUIRED=§cDeine Ordner brauchen schon einen Namen
UTIL_NAME_TOO_LONG=§cDer Name der Schematic ist zu lang
UTIL_NAME_INVALID_CHAR=§cDer angegebene Schematicname enthält verbotene Zeichen
UTIL_NAME_FORBIDDEN=§cDer Pfad darf nicht \"§l{0}§c\" enthalten
UTIL_LIST_PATH=§7Aktueller Pfad: §e{0}
UTIL_LIST_BACK_HOVER=§eZurück gehen {0}
UTIL_LIST_FROM=§8von §7{0}
UTIL_LIST_OPEN_DIR=§eOrdner anzeigen
UTIL_LIST_OPEN_SCHEM=§eSchematic verwalten
UTIL_LIST_REMOVE=[Entfernen]
UTIL_LIST_REMOVE_HOVER=§7Entferne dich von dem Ordner
UTIL_LIST_BACK_ARROW_HOVER=§eVorherige Seite
UTIL_LIST_NEXT=Seite ({0}/{1}) »»
UTIL_LIST_NEXT_HOVER=§eNächste Seite
UTIL_INFO_OWNER=§7Besitzer: §e{0}
UTIL_INFO_PARENT=§7Ordner: §e{0}
UTIL_INFO_UPDATED=§7Letzes Update: §e{0}
UTIL_INFO_TYPE=§7Typ: §e{0}
UTIL_INFO_RANK=§7Rang: §e{0}
UTIL_INFO_COLOR=§7Farbersetzung: {0}
UTIL_INFO_REPLAY=§7Replaywiedergabe: {0}
UTIL_INFO_STATUS=§cStatus: §c{0}: {1}
UTIL_INFO_MEMBER=§7Mitglieder: §e{0}
UTIL_INFO_MEMBER_STRING=Mitglieder:
UTIL_INFO_ACTION_LOAD=(Laden)
UTIL_INFO_ACTION_LOAD_HOVER=§eSchematic laden
UTIL_INFO_ACTION_DOWNLOAD_HOVER=§eSchematic downloaden
UTIL_INFO_ACTION_TYPE_HOVER=§eSchematic Typ ändern
UTIL_INFO_ACTION_ADD_HOVER=§eMember hinzufügen
UTIL_INFO_ACTION_REMOVE_HOVER=§e{0} entfernen
UTIL_INFO_ACTION_MOVE_HOVER=§eSchematic verschieben
UTIL_INFO_ACTION_RENAME_HOVER=§eSchematic umbenennen
UTIL_INFO_ACTION_DELETE=(Löschen)
UTIL_INFO_ACTION_DELETE_HOVER=§eSchematic löschen
UTIL_LOAD_NOT_HERE=§cDu kannst hier keine Schematics laden
UTIL_LOAD_NOT_HERE_ALL=§cAuf diesem Bau können keine Schematics geladen werden
UTIL_LOAD_DIR=§cDu kannst keine Ordner Laden
UTIL_LOAD_DONE=§7Schematic §e{0} geladen
UTIL_LOAD_NO_DATA=§cEs konnte keine Daten in der Schematic gefunden werden
UTIL_LOAD_ERROR=§cDie Schematic konnte nicht geladen werden
UTIL_DOWNLOAD_PUNISHED=§cDu darf keine Schematics Downloaden: §f§l{0}
UTIL_DOWNLOAD_NOT_OWN=§cDu darfst nur deine eigenen Schematics herunterladen
UTIL_DOWNLOAD_LINK=Dein Download Link:
UTIL_TYPE_PUNISHED=§cDu darfst bis zum §e{1} §7keine Schematics einsenden: §f§l{0}
UTIL_TYPE_PUNISHED_PERMA=§cDu darfst keine Schematics mehr einsenden: §f§l{0}
UTIL_TYPE_NOT_OWN=§cDu kannst nur deine eigenen Schematics einsenden
UTIL_TYPE_DIR=§cDu kannst keine Ordner einsenden
UTIL_TYPE_NOT_ASSIGNABLE=§cZu diesem Typen können keine Schematics geändert werden
UTIL_TYPE_ALREADY=§cDie Schematic hat schon diesen Typen
UTIL_TYPE_DONE=§aSchematictyp geändert
UTIL_TYPE_FIGHT_ALREADY=§cDu hast diese Schematic bereits eingesendet
UTIL_TYPE_AFTER_DEADLINE=§cVon diesem Typen können keine Schematics mehr eingesendet werden. Einsendeschluss war: {0}
UTIL_TYPE_TOO_MANY=§cDu hast zu viele Schematics eingesendet
UTIL_TYPE_ERROR=§cDie Schematic ist nicht regelkonform
UTIL_TYPE_EXTEND=§aDer Vorbereitungsserver wird gestartet
UTIL_SUBMIT_TITLE=Schematic ausfahren
UTIL_SUBMIT_REPLAY_ON=§aReplay erlaubt
UTIL_SUBMIT_REPLAY_OFF=§cReplay gesperrt
UTIL_SUBMIT_COLOR_ON=§aPink zu Teamfarbe ersetzen
UTIL_SUBMIT_COLOR_OFF=§cPink nicht ersetzen
UTIL_SUBMIT_DIRECT=§eDirekt einsenden
UTIL_SUBMIT_DIRECT_DONE=§aDie Schematic wird zeitnah überprüft
UTIL_SUBMIT_DIRECT_PLAYABLE=§aDu kannst die Schematic jetzt in der Arena verwenden! Viel Glück und viel Spaß.
UTIL_SUBMIT_EXTEND=§eSchematic ausfahren
UTIL_SUBMIT_EXTEND_DONE=§aDer Vorbereitungsserver wird gestartet
UTIL_INFO_ACTION_REVISIONS_HOVER=§eVersionen anzeigen
UTIL_LOAD_ILLEGAL_REVISION=§cDie schematic hat nicht {0} Versionen
UTIL_INFO_REVISIONS=§7Versionen: §e{0}
UTIL_NAME_REQUIRED = §cDeine Ordner brauchen schon einen Namen
UTIL_NAME_TOO_LONG = §cDer Name der Schematic ist zu lang
UTIL_NAME_INVALID_CHAR = §cDer angegebene Schematicname enthält verbotene Zeichen
UTIL_NAME_FORBIDDEN = §cDer Pfad darf nicht \"§l{0}§c\" enthalten
UTIL_LIST_PATH = §7Aktueller Pfad: §e{0}
UTIL_LIST_BACK_HOVER = §eZurück gehen {0}
UTIL_LIST_FROM = §8von §7{0}
UTIL_LIST_OPEN_DIR = §eOrdner anzeigen
UTIL_LIST_OPEN_SCHEM = §eSchematic verwalten
UTIL_LIST_REMOVE = [Entfernen]
UTIL_LIST_REMOVE_HOVER = §7Entferne dich von dem Ordner
UTIL_LIST_BACK_ARROW_HOVER = §eVorherige Seite
UTIL_LIST_NEXT = Seite ({0}/{1}) »»
UTIL_LIST_NEXT_HOVER = §eNächste Seite
UTIL_INFO_OWNER = §7Besitzer: §e{0}
UTIL_INFO_PARENT = §7Ordner: §e{0}
UTIL_INFO_UPDATED = §7Letzes Update: §e{0}
UTIL_INFO_TYPE = §7Typ: §e{0}
UTIL_INFO_RANK = §7Rang: §e{0}
UTIL_INFO_COLOR = §7Farbersetzung: {0}
UTIL_INFO_REPLAY = §7Replaywiedergabe: {0}
UTIL_INFO_STATUS = §cStatus: §c{0}: {1}
UTIL_INFO_MEMBER = §7Mitglieder: §e{0}
UTIL_INFO_MEMBER_STRING = Mitglieder:
UTIL_INFO_ACTION_LOAD = (Laden)
UTIL_INFO_ACTION_LOAD_HOVER = §eSchematic laden
UTIL_INFO_ACTION_DOWNLOAD_HOVER = §eSchematic downloaden
UTIL_INFO_ACTION_TYPE_HOVER = §eSchematic Typ ändern
UTIL_INFO_ACTION_ADD_HOVER = §eMember hinzufügen
UTIL_INFO_ACTION_REMOVE_HOVER = §e{0} entfernen
UTIL_INFO_ACTION_MOVE_HOVER = §eSchematic verschieben
UTIL_INFO_ACTION_RENAME_HOVER = §eSchematic umbenennen
UTIL_INFO_ACTION_DELETE = (Löschen)
UTIL_INFO_ACTION_DELETE_HOVER = §eSchematic löschen
UTIL_LOAD_NOT_HERE = §cDu kannst hier keine Schematics laden
UTIL_LOAD_NOT_HERE_ALL = §cAuf diesem Bau können keine Schematics geladen werden
UTIL_LOAD_DIR = §cDu kannst keine Ordner Laden
UTIL_LOAD_DONE = §7Schematic §e{0} geladen
UTIL_LOAD_NO_DATA = §cEs konnte keine Daten in der Schematic gefunden werden
UTIL_LOAD_ERROR = §cDie Schematic konnte nicht geladen werden
UTIL_DOWNLOAD_PUNISHED = §cDu darf keine Schematics Downloaden: §f§l{0}
UTIL_DOWNLOAD_NOT_OWN = §cDu darfst nur deine eigenen Schematics herunterladen
UTIL_DOWNLOAD_LINK = Dein Download Link:
UTIL_TYPE_PUNISHED = §cDu darfst bis zum §e{1} §7keine Schematics einsenden: §f§l{0}
UTIL_TYPE_PUNISHED_PERMA = §cDu darfst keine Schematics mehr einsenden: §f§l{0}
UTIL_TYPE_NOT_OWN = §cDu kannst nur deine eigenen Schematics einsenden
UTIL_TYPE_DIR = §cDu kannst keine Ordner einsenden
UTIL_TYPE_NOT_ASSIGNABLE = §cZu diesem Typen können keine Schematics geändert werden
UTIL_TYPE_ALREADY = §cDie Schematic hat schon diesen Typen
UTIL_TYPE_DONE = §aSchematictyp geändert
UTIL_TYPE_FIGHT_ALREADY = §cDu hast diese Schematic bereits eingesendet
UTIL_TYPE_AFTER_DEADLINE = §cVon diesem Typen können keine Schematics mehr eingesendet werden. Einsendeschluss war: {0}
UTIL_TYPE_TOO_MANY = §cDu hast zu viele Schematics eingesendet
UTIL_TYPE_ERROR = §cDie Schematic ist nicht regelkonform
UTIL_TYPE_EXTEND = §aDer Vorbereitungsserver wird gestartet
UTIL_SUBMIT_TITLE = Schematic ausfahren
UTIL_SUBMIT_REPLAY_ON = §aReplay erlaubt
UTIL_SUBMIT_REPLAY_OFF = §cReplay gesperrt
UTIL_SUBMIT_COLOR_ON = §aPink zu Teamfarbe ersetzen
UTIL_SUBMIT_COLOR_OFF = §cPink nicht ersetzen
UTIL_SUBMIT_DIRECT = §eDirekt einsenden
UTIL_SUBMIT_DIRECT_DONE = §aDie Schematic wird zeitnah überprüft
UTIL_SUBMIT_DIRECT_PLAYABLE = §aDu kannst die Schematic jetzt in der Arena verwenden! Viel Glück und viel Spaß.
UTIL_SUBMIT_EXTEND = §eSchematic ausfahren
UTIL_SUBMIT_EXTEND_DONE = §aDer Vorbereitungsserver wird gestartet
UTIL_INFO_ACTION_REVISIONS_HOVER = §eVersionen anzeigen
UTIL_LOAD_ILLEGAL_REVISION = §cDie schematic hat nicht {0} Versionen
UTIL_INFO_REVISIONS = §7Versionen: §e{0}
COMMAND_INVALID_NODE=§cDie Schematic konnte nicht gefunden werden
COMMAND_NOT_OWN=§cDas darfst du nur bei deinen eigenen Schematics machen
COMMAND_MUST_DIR=§cDu musst einen Ordner angeben
COMMAND_MUST_SCHEM=§cDu musst eine Schematic angeben
COMMAND_ENTER_NAME=Namen eingeben
COMMAND_PUNISHMENT_NO_SAVE_EXTERNAL=§cDu kannst nicht auf anderen Baus Schematics machen
COMMAND_PUNISHMENT_NO_SAVE=§cAuf diesem Bau können keine Schematics gemacht werden
COMMAND_SAVE_NO_NAME=§cDu must auch einen Namen für die Schematic nach dem Ordner angeben
COMMAND_SAVE_FOLDER=§cDie Schematic ist ein Ordner
COMMAND_SAVE_NO_OVERWRITE=§cDu darfst diese Schematic nicht überschreiben
COMMAND_SAVE_CLIPBOARD_EMPTY=§cDein Clipboard ist leer
COMMAND_SAVE_ERROR=§cFehler beim Speichern der Schematic
COMMAND_SAVE_DONE=Schematic §e{0} §7gespeichert
COMMAND_SAVE_OVERWRITE=Schematic §e{0} §7überschrieben
COMMAND_SAVE_OVERWRITE_CONFIRM=§cDie Schematic §e{0} §7existiert bereits. Möchtest du sie überschreiben? §e*klick*
COMMAND_SAVE_OVERWRITE_CONFIRM_HOVER=§eSchematic überschreiben
COMMAND_ADD_PUNISH=§cDu darfst niemanden auf deine Schematics hinzufügen: §f§l{0}
COMMAND_ADD_USER_PUNISHED=§c{0} darf nicht auf Schematics hinzugefügt werden
COMMAND_ADD_OWN=§cAlso bitte: Das ist deine eigene Schematic!
COMMAND_ADD_PUBLIC=§cFür Public-Anträge bitte bei der Moderation melden
COMMAND_ADD_ALREADY=§c{0} ist bereits auf diese Schematic geaddet
COMMAND_ADD_ADDED=Du hast nun Zugriff auf die Schematic §e{0} §7von §e{1}
COMMAND_ADD_NONE=§cEs wurde kein Spieler hinzugefügt
COMMAND_ADD_ONE=§7Der Spieler §e{0} wurde auf die Schematic hinzugefügt
COMMAND_ADD_MANY=§7Die Spieler §e{0} wurden auf die Schematic hinzugefügt
COMMAND_DELMEM_DONE=Der Spieler §e{0} §7hat nun keinen Zugriff mehr auf die Schematic §e{1}
COMMAND_DELMEM_DELETED=§cDu hast nun keinen Zugriff mehr auf die Schematic §e{0} §7von §e{1}
COMMAND_SEARCH_NOT_A_PLAYER=§cDer Spieler §e{0} §cexistiert nicht
COMMAND_LOCKREPLAY=Replays von Kämpfen mit {0} können ab sofort nicht mehr betrachtet werden
COMMAND_REPLACE_COLOR_OFF=In Kämpfen {0} werden pinke Blöcke nicht ersetzt
COMMAND_REPLACE_COLOR_ON=In Kämpfen {0} werden pinke Blöcke ersetzt
COMMAND_DIR_DONE=§7Ordner §e{0} §7erstellt
COMMAND_CHANGE_TYPE_SELECT=§eTyp auswählen
COMMAND_MOVE_RECURSIVE=§cDas gibt nur Fehler, vertrau mir
COMMAND_MOVE_DONE=§7Die Schematic ist nun unter §e{0} §7zu finden
COMMAND_RENAME_DONE=§7Die Schematic heißt nun §e{0}
COMMAND_ADD_TEAM_NOT_IN_TEAM=§cDu bist in keinem Team
COMMAND_DEL_TEAM_NOT_IN_TEAM=§cDu bist in keinem Team
COMMAND_DEL_TEAM_NONE=§7Es wurde kein Spieler entfernt
COMMAND_DEL_TEAM_DONE=§7Der Spieler §e{0} §7wurden von der Schematic entfernt
COMMAND_CLEAR_MEMBER_DONE=§7Alle Spieler wurden von der Schematic entfernt
COMMAND_DEL_ALL_MEMBER=§e{0} §7wurde von §e{1} §7Schematics entfernt
COMMAND_PUBLIC_ON=§aDu bist nun der Public User
COMMAND_PUBLIC_OFF=§cDu bist nun nicht mehr der Public User
COMMAND_DELETE_NOT_OWN=§cDie Schematic gehört dir nicht
COMMAND_DELETE_MEMBER=§aDu hast dich von der Schematic entfernt
COMMAND_DELETE_DIR=§aDer Ordner §e{0}§a wird gelöscht...
COMMAND_DELETE_DIR_FULL=§cDer Ordner muss leer sein, um ihn zu löschen
COMMAND_DELETE_SCHEM=§aDie Schematic §e{0}§a wird gelöscht...
COMMAND_CHECK_SELECTION_INCOMPLETE=§cDeine Auswahl ist unvollständig
COMMAND_CHECK_CLIPBOARD_EMPTY=§cDein Clipboard ist leer
COMMAND_FIX_OK=§aDie Schematic ist bereits gefixt
COMMAND_FIX_DONE=§aDie Schematic wurde repariert
COMMAND_FIX_COULD_NOT_FIX=§cKonnte diese nicht sachen in der Schematic reparieren
COMMAND_FIX_MANUAL=Manuel Fixen
COMMAND_FIX_ERROR=§cFehler beim Fixen der Schematic, bitte kontaktiere einen Developer
COMMAND_FIX_WRONG_VERSION=§cDiese Funktion ist nur für Version 1.15 und höher verfügbar
COMMAND_INVALID_NODE = §cDie Schematic konnte nicht gefunden werden
COMMAND_NOT_OWN = §cDas darfst du nur bei deinen eigenen Schematics machen
COMMAND_MUST_DIR = §cDu musst einen Ordner angeben
COMMAND_MUST_SCHEM = §cDu musst eine Schematic angeben
COMMAND_ENTER_NAME = Namen eingeben
COMMAND_PUNISHMENT_NO_SAVE_EXTERNAL = §cDu kannst nicht auf anderen Baus Schematics machen
COMMAND_PUNISHMENT_NO_SAVE = §cAuf diesem Bau können keine Schematics gemacht werden
COMMAND_SAVE_NO_NAME = §cDu must auch einen Namen für die Schematic nach dem Ordner angeben
COMMAND_SAVE_FOLDER = §cDie Schematic ist ein Ordner
COMMAND_SAVE_NO_OVERWRITE = §cDu darfst diese Schematic nicht überschreiben
COMMAND_SAVE_CLIPBOARD_EMPTY = §cDein Clipboard ist leer
COMMAND_SAVE_ERROR = §cFehler beim Speichern der Schematic
COMMAND_SAVE_DONE = Schematic §e{0} §7gespeichert
COMMAND_SAVE_OVERWRITE = Schematic §e{0} §7überschrieben
COMMAND_SAVE_OVERWRITE_CONFIRM = §cDie Schematic §e{0} §7existiert bereits. Möchtest du sie überschreiben? §e*klick*
COMMAND_SAVE_OVERWRITE_CONFIRM_HOVER = §eSchematic überschreiben
COMMAND_ADD_PUNISH = §cDu darfst niemanden auf deine Schematics hinzufügen: §f§l{0}
COMMAND_ADD_USER_PUNISHED = §c{0} darf nicht auf Schematics hinzugefügt werden
COMMAND_ADD_OWN = §cAlso bitte: Das ist deine eigene Schematic!
COMMAND_ADD_PUBLIC = §cFür Public-Anträge bitte bei der Moderation melden
COMMAND_ADD_ALREADY = §c{0} ist bereits auf diese Schematic geaddet
COMMAND_ADD_ADDED = Du hast nun Zugriff auf die Schematic §e{0} §7von §e{1}
COMMAND_ADD_NONE = §cEs wurde kein Spieler hinzugefügt
COMMAND_ADD_ONE = §7Der Spieler §e{0} wurde auf die Schematic hinzugefügt
COMMAND_ADD_MANY = §7Die Spieler §e{0} wurden auf die Schematic hinzugefügt
COMMAND_DELMEM_DONE = Der Spieler §e{0} §7hat nun keinen Zugriff mehr auf die Schematic §e{1}
COMMAND_DELMEM_DELETED = §cDu hast nun keinen Zugriff mehr auf die Schematic §e{0} §7von §e{1}
COMMAND_SEARCH_NOT_A_PLAYER = §cDer Spieler §e{0} §cexistiert nicht
COMMAND_LOCKREPLAY = Replays von Kämpfen mit {0} können ab sofort nicht mehr betrachtet werden
COMMAND_REPLACE_COLOR_OFF = In Kämpfen {0} werden pinke Blöcke nicht ersetzt
COMMAND_REPLACE_COLOR_ON = In Kämpfen {0} werden pinke Blöcke ersetzt
COMMAND_DIR_DONE = §7Ordner §e{0} §7erstellt
COMMAND_CHANGE_TYPE_SELECT = §eTyp auswählen
COMMAND_MOVE_RECURSIVE = §cDas gibt nur Fehler, vertrau mir
COMMAND_MOVE_DONE = §7Die Schematic ist nun unter §e{0} §7zu finden
COMMAND_RENAME_DONE = §7Die Schematic heißt nun §e{0}
COMMAND_ADD_TEAM_NOT_IN_TEAM = §cDu bist in keinem Team
COMMAND_DEL_TEAM_NOT_IN_TEAM = §cDu bist in keinem Team
COMMAND_DEL_TEAM_NONE = §7Es wurde kein Spieler entfernt
COMMAND_DEL_TEAM_DONE = §7Der Spieler §e{0} §7wurden von der Schematic entfernt
COMMAND_CLEAR_MEMBER_DONE = §7Alle Spieler wurden von der Schematic entfernt
COMMAND_DEL_ALL_MEMBER = §e{0} §7wurde von §e{1} §7Schematics entfernt
COMMAND_PUBLIC_ON = §aDu bist nun der Public User
COMMAND_PUBLIC_OFF = §cDu bist nun nicht mehr der Public User
COMMAND_DELETE_NOT_OWN = §cDie Schematic gehört dir nicht
COMMAND_DELETE_MEMBER = §aDu hast dich von der Schematic entfernt
COMMAND_DELETE_DIR = §aDer Ordner §e{0}§a wird gelöscht...
COMMAND_DELETE_DIR_FULL = §cDer Ordner muss leer sein, um ihn zu löschen
COMMAND_DELETE_SCHEM = §aDie Schematic §e{0}§a wird gelöscht...
COMMAND_CHECK_SELECTION_INCOMPLETE = §cDeine Auswahl ist unvollständig
COMMAND_CHECK_CLIPBOARD_EMPTY = §cDein Clipboard ist leer
COMMAND_FIX_OK = §aDie Schematic ist bereits gefixt
COMMAND_FIX_DONE = §aDie Schematic wurde repariert
COMMAND_FIX_COULD_NOT_FIX = §cKonnte diese nicht sachen in der Schematic reparieren
COMMAND_FIX_MANUAL = Manuel Fixen
COMMAND_FIX_ERROR = §cFehler beim Fixen der Schematic, bitte kontaktiere einen Developer
COMMAND_FIX_WRONG_VERSION = §cDiese Funktion ist nur für Version 1.15 und höher verfügbar
HELP_HEADER=§e§lSchematicSystem §8§lHilfe
HELP_VIEW=Finden & Laden
HELP_VIEW_HOVER=Suche oder lade Schematics
HELP_VIEW_1=§8/§7schem §einfo §8[§7Schematic§8] - §7Zeigt dir Informationen zur Schematic
HELP_VIEW_2=§8/§7schem §elist §8- §7Zeigt dir deine Schematics an
HELP_VIEW_3=§8/§7schem §elist public §8- §7Zeigt alle Public-Schematics
HELP_VIEW_4=§8/§7schem §esearch §8[§7Stichwort§8] - §7Sucht nach passenden Schematics
HELP_VIEW_5=§8/§7schem §eload §8[§7Schematic§8] - §7Lädt eine Schematic
HELP_VIEW_6=§8/§7schem §edownload §8[§7Schematic§8] - §7Gibt dir einen Downloadlink (1 min gültig)
HELP_VIEW_7=§8/§7download §8- §7Gibt dir einen Downloadlink von deinem Clipboard (1 min gültig)
HELP_VIEW_8=§8/§7schem §echeck §8[§7Schematic§8|§7selection§8|§7clipboard§8] [§7SchematicTyp§8] - §7Überprüft deine Schematic
HELP_EDIT=Speichern & Bearbeiten
HELP_EDIT_HOVER=Modifizierung von Schematics und Ordnern
HELP_EDIT_1=§8/§7schem §esave §8[§7Schematic§8] - §7Speichert dein Clipboard als Schematic
HELP_EDIT_2=§8/§7schem §eordner §8[§7Ordner§8] - §7Erstelle einen leeren Ordner
HELP_EDIT_3=§8/§7schem §emove §8[§7Schematic§8] [§7Neuer Pfad§8] - §7Verschiebe eine Schematic
HELP_EDIT_4=§8/§7schem §erename §8[§7Schematic§8] [§7Neuer Name§8] - §7Gib der Schematic einen neuen Namen
HELP_EDIT_5=§8/§7schem §echangetype §8[§7Schematic§8] - §7Ändert die Art deiner Schematic
HELP_EDIT_6=§8/§7schem §elockreplay §8[§7Schematic§8] - §7Sperrt Replays mit der Schematic
HELP_EDIT_7=§8/§7schem §ereplacecolor §8[§7Schematic§8] - §7Ändert Farbersetzung in der Arena
HELP_EDIT_8=§8/§7schem §edelete §8[§7Schematic§8] - §7Löscht eine Schematic
HELP_EDIT_9=§8/§7schem §efix §8[§7SchematicTyp§8] - §7Versucht die Schematic in deinem Clipboard konform zu machen
HELP_SHARE=Besitzrechte
HELP_SHARE_HOVER=Schematics mit anderen teilen
HELP_SHARE_1=§8/§7schem §eaddmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Fügt einen Spieler zu einer Schematic hinzu
HELP_SHARE_2=§8/§7schem §edelmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Entfernt einen Spieler von einer Schematic
HELP_SHARE_3=§8/§7schem §eclearmember §8[§7Schematic§8] - §7Entfernt alle Spieler von der Schematic
HELP_SHARE_4=§8/§7schem §edelallmember §8[§7Spieler§8] - §7Entfernt einen Spieler von allen deinen Schematics
HELP_SHARE_5=§8/§7schem §eaddteam §8[§7Schematic§8] - §7Füge jeden aus deinem Team auf die Schematic hinzu
HELP_SHARE_6=§8/§7schem §edelteam §8[§7Schematic§8] - §7Entferne jeden aus deinem Team von der Schematic
HELP_HEADER = §e§lSchematicSystem §8§lHilfe
HELP_VIEW = Finden & Laden
HELP_VIEW_HOVER = Suche oder lade Schematics
HELP_VIEW_1 = §8/§7schem §einfo §8[§7Schematic§8] - §7Zeigt dir Informationen zur Schematic
HELP_VIEW_2 = §8/§7schem §elist §8- §7Zeigt dir deine Schematics an
HELP_VIEW_3 = §8/§7schem §elist public §8- §7Zeigt alle Public-Schematics
HELP_VIEW_4 = §8/§7schem §esearch §8[§7Stichwort§8] - §7Sucht nach passenden Schematics
HELP_VIEW_5 = §8/§7schem §eload §8[§7Schematic§8] - §7Lädt eine Schematic
HELP_VIEW_6 = §8/§7schem §edownload §8[§7Schematic§8] - §7Gibt dir einen Downloadlink (1 min gültig)
HELP_VIEW_7 = §8/§7download §8- §7Gibt dir einen Downloadlink von deinem Clipboard (1 min gültig)
HELP_VIEW_8 = §8/§7schem §echeck §8[§7Schematic§8|§7selection§8|§7clipboard§8] [§7SchematicTyp§8] - §7Überprüft deine Schematic
HELP_EDIT = Speichern & Bearbeiten
HELP_EDIT_HOVER = Modifizierung von Schematics und Ordnern
HELP_EDIT_1 = §8/§7schem §esave §8[§7Schematic§8] - §7Speichert dein Clipboard als Schematic
HELP_EDIT_2 = §8/§7schem §eordner §8[§7Ordner§8] - §7Erstelle einen leeren Ordner
HELP_EDIT_3 = §8/§7schem §emove §8[§7Schematic§8] [§7Neuer Pfad§8] - §7Verschiebe eine Schematic
HELP_EDIT_4 = §8/§7schem §erename §8[§7Schematic§8] [§7Neuer Name§8] - §7Gib der Schematic einen neuen Namen
HELP_EDIT_5 = §8/§7schem §echangetype §8[§7Schematic§8] - §7Ändert die Art deiner Schematic
HELP_EDIT_6 = §8/§7schem §elockreplay §8[§7Schematic§8] - §7Sperrt Replays mit der Schematic
HELP_EDIT_7 = §8/§7schem §ereplacecolor §8[§7Schematic§8] - §7Ändert Farbersetzung in der Arena
HELP_EDIT_8 = §8/§7schem §edelete §8[§7Schematic§8] - §7Löscht eine Schematic
HELP_EDIT_9 = §8/§7schem §efix §8[§7SchematicTyp§8] - §7Versucht die Schematic in deinem Clipboard konform zu machen
HELP_SHARE = Besitzrechte
HELP_SHARE_HOVER = Schematics mit anderen teilen
HELP_SHARE_1 = §8/§7schem §eaddmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Fügt einen Spieler zu einer Schematic hinzu
HELP_SHARE_2 = §8/§7schem §edelmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Entfernt einen Spieler von einer Schematic
HELP_SHARE_3 = §8/§7schem §eclearmember §8[§7Schematic§8] - §7Entfernt alle Spieler von der Schematic
HELP_SHARE_4 = §8/§7schem §edelallmember §8[§7Spieler§8] - §7Entfernt einen Spieler von allen deinen Schematics
HELP_SHARE_5 = §8/§7schem §eaddteam §8[§7Schematic§8] - §7Füge jeden aus deinem Team auf die Schematic hinzu
HELP_SHARE_6 = §8/§7schem §edelteam §8[§7Schematic§8] - §7Entferne jeden aus deinem Team von der Schematic
GUI_TITLE=Schematics \{1\}
GUI_FOLDER_PROPERTIES=§7Ordnereigenschaften
GUI_INFO_LOAD=§eLaden
GUI_INFO_BACK=§eZurück
GUI_INFO_STATUS=§eStatus {0}
GUI_INFO_COLOR=Farbersetzung
GUI_INFO_REPLAY=Replay Wiedergabe
GUI_INFO_REPLAY_OFF=§7Zum §lAusschalten
GUI_INFO_REPLAY_TITLE=Wiedergabe dauerhaft sperren
GUI_INFO_MEMBER=§eMitglieder
GUI_INFO_MOVE=§eVerschieben
GUI_INFO_RENAME=§eUmbenennen
GUI_INFO_RENAME_TITLE={0} umbenennen
GUI_INFO_DELETE=§cLöschen
GUI_INFO_MEMBER_FROM=§7von §e{0}
GUI_INFO_MEMBER_REMOVE=§cZugriff entfernen
GUI_CHANGE_TYPE=Typ ändern
GUI_CHANGE_TYPE_NOT_POSSIBLE=§cDie Schematic ist zu groß
GUI_DELETE_OWN_DELETED=Schematic §e{0} §7gelöscht
GUI_DELETE_OWN_TITLE={0} löschen
GUI_DELETE_MEMBER_TITLE={0} entfernen
GUI_DELETE_MEMBER_DONE=Zugriff zu Schematic §e{0} §7entfernt
GUI_DELETE_MEMBERS_TITLE=Mitglieder entfernen
GUI_CHANGE_ITEM=Item ändern
GUI_LOAD_LATEST=§eLinks §7Klick → §eLetzte Laden
GUI_LOAD_REVISION=§eRechts §7Klick → §eVersionen anzeigen
GUI_LOAD_REVISION_TITLE=Version Laden
GUI_TITLE = Schematics \{1\}
GUI_FOLDER_PROPERTIES = §7Ordnereigenschaften
GUI_INFO_LOAD = §eLaden
GUI_INFO_BACK = §eZurück
GUI_INFO_STATUS = §eStatus {0}
GUI_INFO_COLOR = Farbersetzung
GUI_INFO_REPLAY = Replay Wiedergabe
GUI_INFO_REPLAY_OFF = §7Zum §lAusschalten
GUI_INFO_REPLAY_TITLE = Wiedergabe dauerhaft sperren
GUI_INFO_MEMBER = §eMitglieder
GUI_INFO_MOVE = §eVerschieben
GUI_INFO_RENAME = §eUmbenennen
GUI_INFO_RENAME_TITLE = {0} umbenennen
GUI_INFO_DELETE = §cLöschen
GUI_INFO_MEMBER_FROM = §7von §e{0}
GUI_INFO_MEMBER_REMOVE = §cZugriff entfernen
GUI_CHANGE_TYPE = Typ ändern
GUI_CHANGE_TYPE_NOT_POSSIBLE = §cDie Schematic ist zu groß
GUI_DELETE_OWN_DELETED = Schematic §e{0} §7gelöscht
GUI_DELETE_OWN_TITLE = {0} löschen
GUI_DELETE_MEMBER_TITLE = {0} entfernen
GUI_DELETE_MEMBER_DONE = Zugriff zu Schematic §e{0} §7entfernt
GUI_DELETE_MEMBERS_TITLE = Mitglieder entfernen
GUI_CHANGE_ITEM = Item ändern
GUI_LOAD_LATEST = §eLinks §7Klick → §eLetzte Laden
GUI_LOAD_REVISION = §eRechts §7Klick → §eVersionen anzeigen
GUI_LOAD_REVISION_TITLE = Version Laden
AUTO_CHECK_RESULT_NOT_LOAD=Die Schematic konnte nicht geladen werden
AUTO_CHECK_RESULT_TOO_WIDE=Die Schematic ist zu breit ({0} > {1})
AUTO_CHECK_RESULT_TOO_LONG=Die Schematic ist zu lang ({0} > {1})
AUTO_CHECK_RESULT_TOO_HIGH=Die Schematic ist zu hoch ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_BLOCK=Der Block {0} wurde {1} mal zu häufig verbaut
AUTO_CHECK_RESULT_TOO_MANY_BLOCKS=Die Blockkombination {0} wurde {1} mal zu häufig verbaut
AUTO_CHECK_RESULT_TOO_MANY_ALL_BLOCKS=Zu viele Blöcke ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_RECORDS=Keine Schallplatten erlaubt ({0} gefunden)
AUTO_CHECK_RESULT_FORBIDDEN_ITEM=In {0}s wurde das verbotene Item {1} {2} mal gefunden
AUTO_CHECK_RESULT_FORBIDDEN_ITEM_NBT=In {0}s wurde das verbotene Item {1} {2} mal mit Custom-Tag gefunden
AUTO_CHECK_RESULT_TOO_MANY_DISPENSER_ITEMS=Ein Werfer enthält mehr als {0} Pfeile und Feuerbälle
AUTO_CHECK_RESULT_TOO_MANY_DISPENSERS_ITEMS={0} Werfer enthält mehr als {1} Pfeile und Feuerbälle
AUTO_CHECK_RESULT_NBTS_WARNING={0} {1}s enthalten keine oder inkorrekte NBT-Daten
AUTO_CHECK_RESULT_NBT_WARNING=Ein(e) {0} enthält keine oder inkorrekte NBT-Daten
AUTO_CHECK_RESULT_NOT_LOAD = Die Schematic konnte nicht geladen werden
AUTO_CHECK_RESULT_TOO_WIDE = Die Schematic ist zu breit ({0} > {1})
AUTO_CHECK_RESULT_TOO_LONG = Die Schematic ist zu lang ({0} > {1})
AUTO_CHECK_RESULT_TOO_HIGH = Die Schematic ist zu hoch ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_BLOCK = Der Block {0} wurde {1} mal zu häufig verbaut
AUTO_CHECK_RESULT_TOO_MANY_BLOCKS = Die Blockkombination {0} wurde {1} mal zu häufig verbaut
AUTO_CHECK_RESULT_TOO_MANY_ALL_BLOCKS = Zu viele Blöcke ({0} > {1})
AUTO_CHECK_RESULT_TOO_MANY_RECORDS = Keine Schallplatten erlaubt ({0} gefunden)
AUTO_CHECK_RESULT_FORBIDDEN_ITEM = In {0}s wurde das verbotene Item {1} {2} mal gefunden
AUTO_CHECK_RESULT_FORBIDDEN_ITEM_NBT = In {0}s wurde das verbotene Item {1} {2} mal mit Custom-Tag gefunden
AUTO_CHECK_RESULT_TOO_MANY_DISPENSER_ITEMS = Ein Werfer enthält mehr als {0} Pfeile und Feuerbälle
AUTO_CHECK_RESULT_TOO_MANY_DISPENSERS_ITEMS = {0} Werfer enthält mehr als {1} Pfeile und Feuerbälle
AUTO_CHECK_RESULT_NBTS_WARNING = {0} {1}s enthalten keine oder inkorrekte NBT-Daten
AUTO_CHECK_RESULT_NBT_WARNING = Ein(e) {0} enthält keine oder inkorrekte NBT-Daten
SAFE_NODE_NOT_A_DIR=§cDie ausgewählte Schematic ist kein Ordner
SAFE_NODE_ALREADY_IN_DIRECTORY=§cDie Schematic gibt es bereits in diesem Ordner
SAFE_NODE_INVALID_NAME=§cDieser Name ist unzulässig
SAFE_NODE_NOT_OWNER=§cDu bist nicht der Besitzer dieser Schematic
SAFE_NODE_NOT_A_DIR = §cDie ausgewählte Schematic ist kein Ordner
SAFE_NODE_ALREADY_IN_DIRECTORY = §cDie Schematic gibt es bereits in diesem Ordner
SAFE_NODE_INVALID_NAME = §cDieser Name ist unzulässig
SAFE_NODE_NOT_OWNER = §cDu bist nicht der Besitzer dieser Schematic
DOWNLOAD_ERROR=§cFehler beim Hochladen deines Clipboards
DOWNLOAD_ERROR = §cFehler beim Hochladen deines Clipboards
AUTO_CHECKER_RESULT_HEADER=§7---=== (§eAutoPrüfer: {0}§7) ===---
AUTO_CHECKER_RESULT_WIDTH=§7Breite: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_LENGTH=§7Länge: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_HEIGHT=§7Höhe: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_BLOCKS=§7Blöcke: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_UNKNOWN_MATERIAL=§7Unbekannter Block: §c{0}
AUTO_CHECKER_RESULT_TOO_MANY_BLOCK=§7{0}: §c{1}§7, Max: §e{2}
AUTO_CHECKER_RESULT_FORBIDDEN_BLOCK=§7Verbotener Block: §c{0}
AUTO_CHECKER_RESULT_WIND_CHARGES=§7Windcharges: §c{0}§7, Max: §e2048
AUTO_CHECKER_RESULT_WIND_CHARGES_DISPENSER=§7Werfer: §c[{0}, {1}, {2}]§7, Windcharges: §c{3}§7
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM=§7Verbotener gegenstand: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_DEFUNCT_NBT=§7Keine NBT-Daten: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_DESIGN_BLOCK=§7{0} im Design: [{1}, {2}, {3}]
AUTO_CHECKER_RESULT_RECORD=§7Schallplatte: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_TOO_MANY_DISPENSER_ITEMS=§7Dispenser: §c[{0}, {1}, {2}]§7, §c{3} §7gegenstände, Max: §e{4}
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM_NBT=§7Verbotene NBT-Daten: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_TELEPORT_HERE=§7Zum block teleportieren
AUTO_CHECKER_RESULT_AFTER_DEADLINE=§cDer einsendeschluss ist bereits vorbei: {0}
AUTO_CHECKER_RESULT_HEADER = §7---=== (§eAutoPrüfer: {0}§7) ===---
AUTO_CHECKER_RESULT_WIDTH = §7Breite: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_LENGTH = §7Länge: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_HEIGHT = §7Höhe: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_BLOCKS = §7Blöcke: §c{0}§7, Max: §e{1}
AUTO_CHECKER_RESULT_UNKNOWN_MATERIAL = §7Unbekannter Block: §c{0}
AUTO_CHECKER_RESULT_TOO_MANY_BLOCK = §7{0}: §c{1}§7, Max: §e{2}
AUTO_CHECKER_RESULT_FORBIDDEN_BLOCK = §7Verbotener Block: §c{0}
AUTO_CHECKER_RESULT_WIND_CHARGES = §7Windcharges: §c{0}§7, Max: §e2048
AUTO_CHECKER_RESULT_WIND_CHARGES_DISPENSER = §7Werfer: §c[{0}, {1}, {2}]§7, Windcharges: §c{3}§7
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM = §7Verbotener gegenstand: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_DEFUNCT_NBT = §7Keine NBT-Daten: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_DESIGN_BLOCK = §7{0} im Design: [{1}, {2}, {3}]
AUTO_CHECKER_RESULT_RECORD = §7Schallplatte: §c[{0}, {1}, {2}]
AUTO_CHECKER_RESULT_TOO_MANY_DISPENSER_ITEMS = §7Dispenser: §c[{0}, {1}, {2}]§7, §c{3} §7gegenstände, Max: §e{4}
AUTO_CHECKER_RESULT_FORBIDDEN_ITEM_NBT = §7Verbotene NBT-Daten: [{0}, {1}, {2}] -> §c{3}
AUTO_CHECKER_RESULT_TELEPORT_HERE = §7Zum block teleportieren
AUTO_CHECKER_RESULT_AFTER_DEADLINE = §cDer einsendeschluss ist bereits vorbei: {0}
REVISIONS_TITLE=§7Versionen:
REVISIONS_EMPTY=§cKeine Versionen
REVISIONS_TITLE = §7Versionen:
REVISIONS_EMPTY = §cKeine Versionen
@@ -28,22 +28,22 @@ import org.bukkit.entity.Player;
public class SafeSchematicNode {
public static Result setParent(@NonNull SteamwarUser user, @NonNull SchematicNode node, SchematicNode newParent) {
if(user.getId() != node.getOwner()) {
if (user.getId() != node.getOwner()) {
return Result.NOT_OWNER;
}
if(newParent == null) {
if(SchematicNode.list(user, null)
if (newParent == null) {
if (SchematicNode.list(user, null)
.stream().map(SchematicNode::getName).anyMatch(s -> s.equalsIgnoreCase(node.getName()))) {
return Result.ALREADY_IN_DIRECTORY;
}
node.setParent(null);
} else {
if(!newParent.isDir()) {
if (!newParent.isDir()) {
return Result.NOT_A_DIR;
}
if(SchematicNode.list(user, newParent.getId())
if (SchematicNode.list(user, newParent.getId())
.stream().map(SchematicNode::getName).anyMatch(s -> s.equalsIgnoreCase(node.getName()))) {
return Result.ALREADY_IN_DIRECTORY;
}
@@ -54,15 +54,15 @@ public class SafeSchematicNode {
}
public static Result setName(@NonNull SteamwarUser user, @NonNull SchematicNode node, @NonNull String name) {
if(user.getId() != node.getOwner()) {
if (user.getId() != node.getOwner()) {
return Result.NOT_OWNER;
}
if(SchematicNode.invalidSchemName(new String[]{name})) {
if (SchematicNode.invalidSchemName(new String[]{name})) {
return Result.INVALID_NAME;
}
if(SchematicNode.list(user, node.getParent()).stream().map(SchematicNode::getName).anyMatch(s -> s.equalsIgnoreCase(name))) {
if (SchematicNode.list(user, node.getParent()).stream().map(SchematicNode::getName).anyMatch(s -> s.equalsIgnoreCase(name))) {
return Result.ALREADY_IN_DIRECTORY;
}
@@ -33,7 +33,7 @@ public class SchematicSystem extends JavaPlugin {
private static SchematicSystem instance;
public static GameModeConfig<Material, String> getGameModeConfig(SchematicType type){
public static GameModeConfig<Material, String> getGameModeConfig(SchematicType type) {
GameModeConfig<Material, String> gameModeConfig = GameModeConfig.getBySchematicType(type);
if (gameModeConfig == null) return null;
if (gameModeConfig.CheckQuestions.isEmpty() && gameModeConfig.Schematic.ManualCheck) return null;
@@ -120,10 +120,9 @@ public class AutoChecker {
if (itemType == null) // Leere Slots
continue;
if(type.Schematic.Type.getName().equals("wargearseason26") && material == Material.DISPENSER && itemType == Material.WIND_CHARGE) {
if (type.Schematic.Type.getName().equals("wargearseason26") && material == Material.DISPENSER && itemType == Material.WIND_CHARGE) {
windChargeCount += item.getInt("count");
}
else if (!itemsInInv.getOrDefault(itemType, EnumSet.noneOf(Material.class)).contains(material)) {
} else if (!itemsInInv.getOrDefault(itemType, EnumSet.noneOf(Material.class)).contains(material)) {
result.getForbiddenItems().computeIfAbsent(pos, blockVector3 -> new HashSet<>()).add(itemType);
} else if (material == Material.DISPENSER && (itemType == Material.ARROW || itemType == Material.FIRE_CHARGE)) {
counter += item.getInt("count");
@@ -63,17 +63,16 @@ public class AutoCheckerResult {
}
public boolean isWindchargeCountOK() {
if( type.Schematic.Type.getName().equals("wargearseason26")) {
if (type.Schematic.Type.getName().equals("wargearseason26")) {
int windChargesCount = blockScanResult.getWindChargeCount().values().stream().reduce(Integer::sum).orElse(0);
return windChargesCount <= 2048;
}
else {
return windChargesCount <= 2048;
} else {
return true;
}
}
public boolean isDispenserItemsOK() {
return blockScanResult.getDispenserItems().values().stream().allMatch(i -> i <= type.Schematic.MaxDispenserItems);
return blockScanResult.getDispenserItems().values().stream().allMatch(i -> i <= type.Schematic.MaxDispenserItems);
}
public boolean hasWarnings() {
@@ -118,17 +117,20 @@ public class AutoCheckerResult {
public void sendErrorMessage(Player p, String schemName) {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_HEADER", p, schemName);
if(isTooWide()) SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_WIDTH", p, width, type.Schematic.Size.x);
if(isTooHigh()) SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_HEIGHT", p, height, type.Schematic.Size.y);
if(isTooDeep()) SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_LENGTH", p, depth, type.Schematic.Size.z);
if(type.Schematic.MaxBlocks != 0 && !isBlockCountOk()) {
if (isTooWide())
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_WIDTH", p, width, type.Schematic.Size.x);
if (isTooHigh())
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_HEIGHT", p, height, type.Schematic.Size.y);
if (isTooDeep())
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_LENGTH", p, depth, type.Schematic.Size.z);
if (type.Schematic.MaxBlocks != 0 && !isBlockCountOk()) {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_BLOCKS", p, blockScanResult.getBlockCounts().values().stream().reduce(Integer::sum).orElse(0), type.Schematic.MaxBlocks);
}
if(!isLimitedBlocksOK()) {
if (!isLimitedBlocksOK()) {
type.Schematic.Limited.forEach((materials, integer) -> {
for (Material mat : materials) {
if(mat != null && blockScanResult.getBlockCounts().getOrDefault(mat, 0) > integer) {
if(integer == 0) {
if (mat != null && blockScanResult.getBlockCounts().getOrDefault(mat, 0) > integer) {
if (integer == 0) {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_FORBIDDEN_BLOCK", p, mat.name());
} else {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_TOO_MANY_BLOCK", p, mat.name(), blockScanResult.getBlockCounts().getOrDefault(mat, 0), integer);
@@ -138,7 +140,7 @@ public class AutoCheckerResult {
});
}
if(!isWindchargeCountOK()) {
if (!isWindchargeCountOK()) {
int windChargesCount = blockScanResult.getWindChargeCount().values().stream().reduce(Integer::sum).orElse(0);
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_WIND_CHARGES", p, windChargesCount, 2048);
blockScanResult.getWindChargeCount().entrySet().stream().filter(blockVector3IntegerEntry -> blockVector3IntegerEntry.getValue() > 0).forEach(blockVector3IntegerEntry -> {
@@ -173,7 +175,7 @@ public class AutoCheckerResult {
});
blockScanResult.getDesignBlocks().forEach((material, poss) -> {
if (material == Material.WATER || material == Material.LAVA) return;
if(material.getBlastResistance() > type.Schematic.MaxDesignBlastResistance) {
if (material.getBlastResistance() > type.Schematic.MaxDesignBlastResistance) {
poss.forEach(pos -> {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_DESIGN_BLOCK", p, SchematicSystem.MESSAGE.parse("AUTO_CHECKER_RESULT_TELEPORT_HERE", p), tpCommandTo(pos), material.name(), pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
});
@@ -182,7 +184,7 @@ public class AutoCheckerResult {
entities.forEach(blockPos -> {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_ENTITY", p, SchematicSystem.MESSAGE.parse("AUTO_CHECKER_RESULT_TELEPORT_HERE", p), tpCommandTo(blockPos), blockPos.getX(), blockPos.getY(), blockPos.getZ());
});
if(type.isAfterDeadline()) {
if (type.isAfterDeadline()) {
SchematicSystem.MESSAGE.sendPrefixless("AUTO_CHECKER_RESULT_AFTER_DEADLINE", p, type.Deadline);
}
}
@@ -40,7 +40,8 @@ import java.util.stream.Collectors;
import static de.steamwar.schematicsystem.commands.schematiccommand.SchematicCommandUtils.getUser;
public class GUI {
private GUI() {}
private GUI() {
}
public static void list(Player player) {
SchematicSelector selector = new SchematicSelector(player, SchematicSelector.selectSchematic(), new SchematicSelectorInjectable() {
@@ -52,14 +53,15 @@ public class GUI {
@Override
public void onListRender(SchematicSelector selector, SWListInv<SchematicNode> inv, SchematicNode parent) {
inv.setCallback(-999, (ClickType click) -> {
if(parent == null) {
if (parent == null) {
player.closeInventory();
} else {
selector.reOpenDirUp();
}
});
if(parent == null) {
inv.setItem(49, Material.AIR, "", clickType -> {});
if (parent == null) {
inv.setItem(49, Material.AIR, "", clickType -> {
});
} else {
inv.setItem(49, Material.ANVIL, SchematicSystem.MESSAGE.parse("GUI_FOLDER_PROPERTIES", player), clickType -> {
info(selector.getPlayer(), parent, selector);
@@ -71,7 +73,8 @@ public class GUI {
public AnvilInvCloseAction onAnvilInvCloseAction(SchematicSelector selector) {
return AnvilInvCloseAction.REOPEN;
}
}, node -> {});
}, node -> {
});
selector.setCallback(node -> info(player, node, selector));
selector.setSingleDirOpen(false);
selector.open();
@@ -80,7 +83,7 @@ public class GUI {
private static void setCloseLeftCallback(SWAnvilInv inv, Runnable action) {
AtomicBoolean left = new AtomicBoolean(false);
inv.addCloseCallback(() -> {
if(!left.get()) {
if (!left.get()) {
Bukkit.getScheduler().runTaskLater(SchematicSystem.getInstance(), action, 1);
}
});
@@ -93,7 +96,7 @@ public class GUI {
private static void info(Player player, SchematicNode node, SchematicSelector back) {
SteamwarUser user = getUser(player);
SWInventory inv = new SWInventory(player, 9 * 2, node.generateBreadcrumbs(user));
if(!node.isDir()) {
if (!node.isDir()) {
inv.setItem(0, Material.WOODEN_AXE, SchematicSystem.MESSAGE.parse("GUI_INFO_LOAD", player), Arrays.asList(
SchematicSystem.MESSAGE.parse("GUI_LOAD_LATEST", player),
SchematicSystem.MESSAGE.parse("GUI_LOAD_REVISION", player)
@@ -109,7 +112,7 @@ public class GUI {
}
SWListInv<Integer> listInv = new SWListInv<>(player, SchematicSystem.MESSAGE.parse("GUI_LOAD_REVISION_TITLE", player, node.generateBreadcrumbs(user)), entries, (clickType, revision) -> {
if(revision == null) return;
if (revision == null) return;
player.closeInventory();
SchematicCommandUtils.loadSchem(player, node, revision);
});
@@ -123,22 +126,23 @@ public class GUI {
back.reOpen();
}).setCustomModelData(CMDs.Schematic.BACK));
if(node.getOwner() == user.getId()){
if(!node.isDir() && node.getSchemtype().writeable()){
if (node.getOwner() == user.getId()) {
if (!node.isDir() && node.getSchemtype().writeable()) {
CheckedSchematic.getLastDeclinedOfNode(node.getId()).stream().findFirst().ifPresent(checkedSchematic ->
inv.setItem(1, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS", player, node.getSchemtype().name()), Collections.singletonList(SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS_LORE", player, checkedSchematic.getDeclineReason().replaceAll("&", "§"))), false, click -> {}));
inv.setItem(1, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS", player, node.getSchemtype().name()), Collections.singletonList(SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS_LORE", player, checkedSchematic.getDeclineReason().replaceAll("&", "§"))), false, click -> {
}));
}
Material mat = SWItem.getMaterial(node.getItem());
inv.setItemEvent(node.isDir()?7:5, mat, SchematicSystem.MESSAGE.parse("GUI_INFO_MAT", player, mat.name()), Arrays.asList(SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK_DRAG_ITEM", player)), false, event -> {
if(event.getCursor() != null && event.getCursor().getType() != Material.AIR) {
inv.setItemEvent(node.isDir() ? 7 : 5, mat, SchematicSystem.MESSAGE.parse("GUI_INFO_MAT", player, mat.name()), Arrays.asList(SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK_DRAG_ITEM", player)), false, event -> {
if (event.getCursor() != null && event.getCursor().getType() != Material.AIR) {
node.setItem(event.getCursor().getType().name());
info(player, node, back);
} else {
changeItem(player, node, back);
}
});
if(!node.isDir()) {
if (!node.isDir()) {
inv.setItem(6, SWItem.getMaterial(node.getSchemtype().getMaterial()), SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Arrays.asList(SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), node.getSchemtype().fightType(), click -> {
changeType(player, node);
});
@@ -146,13 +150,13 @@ public class GUI {
player.closeInventory();
SchematicCommandUtils.download(player, node);
});
if(node.getSchemtype().fightType()) {
inv.setItem(14, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse("GUI_INFO_COLOR", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.replaceColor()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
if (node.getSchemtype().fightType()) {
inv.setItem(14, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse("GUI_INFO_COLOR", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.replaceColor() ? "ON" : "OFF", player)), SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
node.setReplaceColor(!node.replaceColor());
info(player, node, back);
});
inv.setItem(13, node.allowReplay() ? Material.ENDER_EYE : Material.ENDER_PEARL, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.allowReplay()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_OFF", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
if(node.allowReplay()) {
inv.setItem(13, node.allowReplay() ? Material.ENDER_EYE : Material.ENDER_PEARL, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.allowReplay() ? "ON" : "OFF", player)), SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_OFF", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
if (node.allowReplay()) {
SWInventory confInv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_TITLE", player));
confInv.setItem(0, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("CONFIRM", player), type -> {
node.setAllowReplay(false);
@@ -178,7 +182,7 @@ public class GUI {
anvilInv.setItem(mat, Collections.singletonList(Core.MESSAGE.parse("SCHEM_SELECTOR_CLICK_BACK", player)), false);
anvilInv.setCallback(s -> {
SafeSchematicNode.Result result = SafeSchematicNode.setName(user, node, s);
if(result.isSuccessful()) {
if (result.isSuccessful()) {
info(player, SchematicNode.byIdAndUser(user, node.getId()), back);
} else {
result.sendError(player);
@@ -187,38 +191,40 @@ public class GUI {
setCloseLeftCallback(anvilInv, () -> info(player, node, back));
anvilInv.open();
});
if(node.getOwner() != 0) {
if (node.getOwner() != 0) {
inv.setItem(17, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_DELETE", player), click -> {
delete(player, node, back);
});
}
}else{
if(!node.isDir()) {
inv.setItem(4, Material.CAULDRON, SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Collections.emptyList(), node.getSchemtype().fightType(), click -> {});
} else {
if (!node.isDir()) {
inv.setItem(4, Material.CAULDRON, SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Collections.emptyList(), node.getSchemtype().fightType(), click -> {
});
}
SteamwarUser owneruser = SteamwarUser.byId(node.getOwner());
SWItem skull = SWItem.getPlayerSkull(owneruser.getUserName());
skull.setName(SchematicSystem.MESSAGE.parse("GUI_INFO_MEMBER_FROM", player, owneruser.getUserName()));
inv.setItem(8, skull.getItemStack(), clickType -> {});
inv.setItem(8, skull.getItemStack(), clickType -> {
});
if(NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
if (NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
inv.setItem(17, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_MEMBER_REMOVE", player), click -> {
delete(player, node, back);
});
}
}
if(node.getOwner() == user.getId() || NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
if (node.getOwner() == user.getId() || NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
inv.setItem(15, Material.ARROW, SchematicSystem.MESSAGE.parse("GUI_INFO_MOVE", player), clickType -> {
SchematicSelector selector = new SchematicSelector(player, SchematicSelector.selectDirectory(), npar -> {
if(npar != null && SchematicNode.parentsOfNode(user, npar.getId()).stream().anyMatch(n -> n.getId() == node.getId())) {
if (npar != null && SchematicNode.parentsOfNode(user, npar.getId()).stream().anyMatch(n -> n.getId() == node.getId())) {
SchematicSystem.MESSAGE.send("COMMAND_MOVE_RECURSIVE", player);
return;
}
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
SafeSchematicNode.Result result = SafeSchematicNode.setParent(user, node, npar);
if(result.isSuccessful()) {
if (result.isSuccessful()) {
info(player, SchematicNode.getSchematicNode(node.getId()), back);
} else {
result.sendError(player);
@@ -235,11 +241,12 @@ public class GUI {
inv.open();
}
static void changeType(Player p, SchematicNode schem){
static void changeType(Player p, SchematicNode schem) {
Clipboard clipboard = null;
try {
clipboard = new SchematicData(schem).load();
} catch (IOException ignored) { }
} catch (IOException ignored) {
}
Clipboard finalClipboard = clipboard;
List<SchematicType> types = SchematicType.values().parallelStream()
@@ -258,7 +265,7 @@ public class GUI {
.collect(Collectors.toList()));
SWListInv<SchematicType> inv = new SWListInv<>(p, SchematicSystem.MESSAGE.parse("GUI_CHANGE_TYPE", p), items, (clickType, schematicType) -> {
if(schematicType == null) return;
if (schematicType == null) return;
p.closeInventory();
SchematicCommandUtils.changeType(p, schem, schematicType, null);
});
@@ -266,14 +273,14 @@ public class GUI {
inv.open();
}
private static void deleteOwn(Player p, SchematicNode schem, SchematicSelector back){
private static void deleteOwn(Player p, SchematicNode schem, SchematicSelector back) {
SteamwarUser user = getUser(p);
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_OWN_TITLE", p, schem.generateBreadcrumbs(user)));
inv.setItem(0, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
p.performCommand("schematic delete " + schem.generateBreadcrumbs(user));
if(back != null) {
if(schem.isDir()) {
if (back != null) {
if (schem.isDir()) {
back.reOpenDirUp();
} else {
back.reOpen();
@@ -285,16 +292,16 @@ public class GUI {
inv.open();
}
private static void deleteMembership(Player p, SchematicNode schem, SchematicSelector back){
private static void deleteMembership(Player p, SchematicNode schem, SchematicSelector back) {
SteamwarUser user = getUser(p);
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_MEMBER_TITLE", p, schem.generateBreadcrumbs(user)));
inv.setItem(0, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
NodeMember member = NodeMember.getNodeMember(schem.getId(), user.getId());
if(member != null)
if (member != null)
member.delete();
SchematicSystem.MESSAGE.send("GUI_DELETE_MEMBER_DONE", p, schem.generateBreadcrumbs(user));
if(back != null) {
if(schem.isDir()) {
if (back != null) {
if (schem.isDir()) {
back.reOpenDirUp();
} else {
back.reOpen();
@@ -306,16 +313,16 @@ public class GUI {
inv.open();
}
static void delete(Player p, SchematicNode schem, SchematicSelector back){
if(SteamwarUser.get(p.getUniqueId()).getId() == schem.getOwner())
static void delete(Player p, SchematicNode schem, SchematicSelector back) {
if (SteamwarUser.get(p.getUniqueId()).getId() == schem.getOwner())
deleteOwn(p, schem, back);
else
deleteMembership(p, schem, back);
}
static void delmembers(Player p, SchematicNode schem){
static void delmembers(Player p, SchematicNode schem) {
List<SWListInv.SWListEntry<NodeMember>> members = new LinkedList<>();
for(NodeMember member : schem.getMembers()){
for (NodeMember member : schem.getMembers()) {
SteamwarUser user = SteamwarUser.byId(member.getMember());
members.add(new SWListInv.SWListEntry<>(SWItem.getPlayerSkull(user.getUserName()), member));
}
@@ -329,7 +336,7 @@ public class GUI {
inv.open();
}
private static void changeItem(Player p, SchematicNode schem, SchematicSelector back){
private static void changeItem(Player p, SchematicNode schem, SchematicSelector back) {
UtilGui.openMaterialSelector(p, SchematicSystem.MESSAGE.parse("GUI_CHANGE_ITEM", p), material -> {
schem.setItem(material.name());
p.closeInventory();
@@ -57,7 +57,7 @@ import static de.steamwar.schematicsystem.commands.schematiccommand.SchematicCom
public class SchematicCommand extends SWCommand {
public SchematicCommand() {
super("schematic", new String[] {"schem", "/schem", "/schematic"});
super("schematic", new String[]{"schem", "/schem", "/schematic"});
}
@Register("help")
@@ -174,7 +174,7 @@ public class SchematicCommand extends SWCommand {
toBeCheckedInvs.putAll(result.getBlockScanResult().getForbiddenItems());
toBeCheckedInvs.putAll(result.getBlockScanResult().getForbiddenNbt());
for (Map.Entry<BlockPos, Set<Material>> entry: toBeCheckedInvs.entrySet()) {
for (Map.Entry<BlockPos, Set<Material>> entry : toBeCheckedInvs.entrySet()) {
BlockPos pos = entry.getKey();
Set<Material> materials = entry.getValue();
BlockVector3 vector = BlockVector3.at(pos.getX(), pos.getY(), pos.getZ());
@@ -183,11 +183,11 @@ public class SchematicCommand extends SWCommand {
CompoundTagBuilder builder = CompoundTagBuilder.create();
List<CompoundTag> list = new ArrayList<>();
for (CompoundTag items : tag.getList("Items", CompoundTag.class)) {
if(materials.contains(Material.matchMaterial(items.getString("id")))) {
if (materials.contains(Material.matchMaterial(items.getString("id")))) {
continue;
}
if(items.containsKey("tag")) {
if (items.containsKey("tag")) {
continue;
}
@@ -197,9 +197,9 @@ public class SchematicCommand extends SWCommand {
clipboard.setBlock(vector, block.toBaseBlock(builder.build()));
}
if(type.Schematic.MaxDispenserItems > 0 ) {
if (type.Schematic.MaxDispenserItems > 0) {
for (Map.Entry<BlockPos, Integer> entry : result.getBlockScanResult().getDispenserItems().entrySet()) {
if(entry.getValue() <= type.Schematic.MaxDispenserItems) {
if (entry.getValue() <= type.Schematic.MaxDispenserItems) {
continue;
}
@@ -213,16 +213,16 @@ public class SchematicCommand extends SWCommand {
List<CompoundTag> list = new ArrayList<>();
int diff = entry.getValue() - type.Schematic.MaxDispenserItems;
for (CompoundTag item : items) {
if(item == null) {
if (item == null) {
continue;
}
if(diff == 0) {
if (diff == 0) {
list.add(item);
continue;
}
if(diff > getCount.apply(item)) {
if (diff > getCount.apply(item)) {
diff -= getCount.apply(item);
continue;
}
@@ -237,7 +237,7 @@ public class SchematicCommand extends SWCommand {
}
}
if(!result.isLimitedBlocksOK()) {
if (!result.isLimitedBlocksOK()) {
Set<Material> toReplace = type.Schematic.Limited.entrySet().stream()
.filter(setIntegerEntry -> setIntegerEntry.getValue() == 0)
.flatMap(setIntegerEntry -> setIntegerEntry.getKey().stream())
@@ -250,7 +250,7 @@ public class SchematicCommand extends SWCommand {
for (int k = min.getBlockZ(); k <= max.getBlockZ(); k++) {
BlockVector3 vector = BlockVector3.at(i, j, k);
BaseBlock block = clipboard.getFullBlock(vector);
if(toReplace.contains(Material.matchMaterial(block.getBlockType().getId()))) {
if (toReplace.contains(Material.matchMaterial(block.getBlockType().getId()))) {
clipboard.setBlock(vector, replaceType.toBaseBlock());
}
}
@@ -65,7 +65,7 @@ public class SchematicCommandUtils {
SchematicSystem.MESSAGE.send("UTIL_NAME_REQUIRED", player);
return true;
}
if(layer.length() > 64) {
if (layer.length() > 64) {
SchematicSystem.MESSAGE.send("UTIL_NAME_TOO_LONG", player);
return true;
}
@@ -157,7 +157,7 @@ public class SchematicCommandUtils {
if (parent != null && parent.getOwner() != user.getId() && NodeMember.getNodeMember(parent.getId(), user.getId()) != null) {
TextComponent deadd = SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_REMOVE", false, player);
deadd.setColor(ChatColor.RED);
deadd.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_REMOVE_HOVER", false, player)}));
deadd.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_REMOVE_HOVER", false, player)}));
deadd.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem delete " + parent.generateBreadcrumbs(user)));
player.spigot().sendMessage(deadd);
}
@@ -166,7 +166,7 @@ public class SchematicCommandUtils {
beforePage.addExtra(" ");
if (chunk > 0) {
beforePage.setColor(ChatColor.YELLOW);
beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_BACK_ARROW_HOVER", false, player)}));
beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_BACK_ARROW_HOVER", false, player)}));
beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, behavior.getPageCommandGen().apply(chunk)));
} else {
beforePage.setColor(ChatColor.RED);
@@ -175,7 +175,7 @@ public class SchematicCommandUtils {
TextComponent nextPage = SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_NEXT", false, player, chunk + 1, Math.max(pageCount, 1));
if (chunk < pageCount - 1) {
nextPage.setColor(ChatColor.YELLOW);
nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_NEXT_HOVER", false, player)}));
nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_LIST_NEXT_HOVER", false, player)}));
nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, behavior.getPageCommandGen().apply(chunk + 2)));
} else {
nextPage.setColor(ChatColor.RED);
@@ -191,20 +191,25 @@ public class SchematicCommandUtils {
public static class SchematicListBehavior {
public static final SchematicListBehavior DEFAULT = SchematicListBehavior.builder().build();
@Builder.Default private boolean showPath = true;
@Builder.Default private boolean publics = false;
@Builder.Default private boolean nonCachedBreadcrumbs = false;
@Builder.Default private UnaryOperator<String> renderHook = s -> s;
@Builder.Default private IntFunction<String> pageCommandGen = value -> "/schem list " + value;
@Builder.Default
private boolean showPath = true;
@Builder.Default
private boolean publics = false;
@Builder.Default
private boolean nonCachedBreadcrumbs = false;
@Builder.Default
private UnaryOperator<String> renderHook = s -> s;
@Builder.Default
private IntFunction<String> pageCommandGen = value -> "/schem list " + value;
}
public static void printSchemInfo(Player player, SchematicNode node) {
SteamwarUser user = getUser(player);
SchematicSystem.MESSAGE.sendPrefixless("UTIL_INFO_SCHEM", player, node.generateBreadcrumbs(user));
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
player.spigot().sendMessage(
new ComponentBuilder(SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_NAME", false, player, node.getName()))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_RENAME_HOVER", false, player)}))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_RENAME_HOVER", false, player)}))
.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/schem rename " + node.generateBreadcrumbs(user) + " "))
.create()
);
@@ -212,10 +217,10 @@ public class SchematicCommandUtils {
SchematicSystem.MESSAGE.sendPrefixless("UTIL_INFO_NAME", player, node.getName());
}
SchematicSystem.MESSAGE.sendPrefixless("UTIL_INFO_OWNER", player, node.getOwner() == user.getId() ? user.getUserName() : SteamwarUser.byId(node.getOwner()).getUserName());
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
player.spigot().sendMessage(
new ComponentBuilder(SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_PARENT", false, player, node.getParent() == null ? "/" : node.getParentNode().generateBreadcrumbs(user)))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_MOVE_HOVER", false, player)}))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_MOVE_HOVER", false, player)}))
.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/schem move " + node.generateBreadcrumbs(user) + " " + node.generateBreadcrumbs(user).replace("/" + node.getName(), "")))
.create()
);
@@ -224,15 +229,15 @@ public class SchematicCommandUtils {
}
player.spigot().sendMessage(
new ComponentBuilder(SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_REVISIONS", false, player, NodeData.getRevisions(node)))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_REVISIONS_HOVER", false, player)}))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_REVISIONS_HOVER", false, player)}))
.event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem revisions " + node.generateBreadcrumbs(user)))
.create());
SchematicSystem.MESSAGE.sendPrefixless("UTIL_INFO_UPDATED", player, node.getLastUpdate());
if (!node.isDir()) {
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
player.spigot().sendMessage(
new ComponentBuilder(SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_TYPE", false, player, node.getSchemtype().name()))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[] {SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_TYPE_HOVER", false, player)}))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{SchematicSystem.MESSAGE.parseToComponent("UTIL_INFO_ACTION_TYPE_HOVER", false, player)}))
.event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem changetype " + node.generateBreadcrumbs(user)))
.create()
);
@@ -255,7 +260,7 @@ public class SchematicCommandUtils {
}
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
ComponentBuilder memberBuilder = new ComponentBuilder(SchematicSystem.MESSAGE.parse("UTIL_INFO_MEMBER_STRING", player) + " ").color(ChatColor.GRAY);
NodeMember.getNodeMembers(node.getId()).forEach(nodeMember -> {
SteamwarUser member = SteamwarUser.byId(nodeMember.getMember());
@@ -273,7 +278,7 @@ public class SchematicCommandUtils {
} else {
List<String> schematicMembers = new ArrayList<>();
NodeMember.getNodeMembers(node.getId()).forEach(nodeMember -> schematicMembers.add(SteamwarUser.byId(nodeMember.getMember()).getUserName()));
if(!schematicMembers.isEmpty()) {
if (!schematicMembers.isEmpty()) {
SchematicSystem.MESSAGE.sendPrefixless("UTIL_INFO_MEMBER", player, schematicMembers.stream().reduce((s, s2) -> s + ", " + s2).orElse(""));
}
}
@@ -311,7 +316,7 @@ public class SchematicCommandUtils {
public static void check(Player player, Clipboard clipboard, GameModeConfig<Material, String> type, String schemName, boolean gui) {
AutoCheckerResult result = AutoChecker.impl.check(clipboard, type);
if(!result.isOk()) {
if (!result.isOk()) {
result.sendErrorMessage(player, schemName);
} else {
SchematicSystem.MESSAGE.send("UTIL_CHECK_SUCCESS", player, schemName);
@@ -328,7 +333,7 @@ public class SchematicCommandUtils {
if (nodes.isEmpty()) {
currentNode = Optional.ofNullable(SchematicNode.byIdAndUser(user, SchematicNode.createSchematicDirectory(user.getId(), layers[i], currentNode.map(SchematicNode::getId).orElse(null)).getId()));
} else {
if(nodes.stream().anyMatch(SchematicNode::isDir)) {
if (nodes.stream().anyMatch(SchematicNode::isDir)) {
currentNode = nodes.stream().filter(SchematicNode::isDir).findFirst();
} else {
currentNode = Optional.ofNullable(SchematicNode.byIdAndUser(user, SchematicNode.createSchematicDirectory(user.getId(), layers[i] + "-dir-" + System.currentTimeMillis() % 100, currentNode.map(SchematicNode::getId).orElse(null)).getId()));
@@ -362,11 +367,11 @@ public class SchematicCommandUtils {
public static void loadSchem(Player player, SchematicNode node, int revision) {
SteamwarUser user = getUser(player);
if(BauServerInfo.isBauServer() && BauServerInfo.getOwnerId() != user.getId() &&
if (BauServerInfo.isBauServer() && BauServerInfo.getOwnerId() != user.getId() &&
(Punishment.isPunished(user, Punishment.PunishmentType.NoSchemSharing, punishment ->
SchematicSystem.MESSAGE.send("UTIL_LOAD_NOT_HERE", player)) ||
Punishment.isPunished(SteamwarUser.byId(BauServerInfo.getOwnerId()), Punishment.PunishmentType.NoSchemReceiving, punishment ->
SchematicSystem.MESSAGE.send("UTIL_LOAD_NOT_HERE_ALL", player)))) {
Punishment.isPunished(SteamwarUser.byId(BauServerInfo.getOwnerId()), Punishment.PunishmentType.NoSchemReceiving, punishment ->
SchematicSystem.MESSAGE.send("UTIL_LOAD_NOT_HERE_ALL", player)))) {
return;
}
if (node.isDir()) {
@@ -486,11 +491,11 @@ public class SchematicCommandUtils {
private static void submitSchemGUI(Player player, SchematicNode node, SchematicType type) {
SWInventory inv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_TITLE", player));
inv.setItem(0, Material.OAK_SIGN, SchematicSystem.MESSAGE.parse(node.allowReplay()?"UTIL_SUBMIT_REPLAY_ON":"UTIL_SUBMIT_REPLAY_OFF", player), click -> {
inv.setItem(0, Material.OAK_SIGN, SchematicSystem.MESSAGE.parse(node.allowReplay() ? "UTIL_SUBMIT_REPLAY_ON" : "UTIL_SUBMIT_REPLAY_OFF", player), click -> {
node.setAllowReplay(!node.allowReplay());
submitSchemGUI(player, node, type);
});
inv.setItem(1, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse(node.replaceColor()?"UTIL_SUBMIT_COLOR_ON":"UTIL_SUBMIT_COLOR_OFF", player), click -> {
inv.setItem(1, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse(node.replaceColor() ? "UTIL_SUBMIT_COLOR_ON" : "UTIL_SUBMIT_COLOR_OFF", player), click -> {
node.setReplaceColor(!node.replaceColor());
submitSchemGUI(player, node, type);
});
@@ -83,7 +83,7 @@ public class SchematicMapper {
@Override
public SchematicNode map(CommandSender commandSender, String[] previousArguments, String s) {
SchematicNode node = SchematicNode.getNodeFromPath(getUser((Player) commandSender), s);
if(node.isDir()) {
if (node.isDir()) {
return node;
} else {
return null;
@@ -104,7 +104,7 @@ public class SchematicMapper {
@Override
public SchematicNode map(CommandSender commandSender, String[] previousArguments, String s) {
SchematicNode node = publicCommandTypeMapper.map(commandSender, previousArguments, s);
if(node.isDir()) {
if (node.isDir()) {
return node;
} else {
return null;
@@ -39,10 +39,10 @@ public class SchematicValidator {
public static TypeValidator<SchematicNode> isSchemValidator() {
return (commandSender, schematicNode, messageSender) -> {
if(!nodeNullCheck(messageSender, schematicNode)) {
if (!nodeNullCheck(messageSender, schematicNode)) {
return false;
}
if(schematicNode.isDir()) {
if (schematicNode.isDir()) {
messageSender.send("COMMAND_MUST_SCHEM");
return false;
}
@@ -52,10 +52,10 @@ public class SchematicValidator {
public static TypeValidator<SchematicNode> isDirValidator() {
return (commandSender, schematicNode, messageSender) -> {
if(!nodeNullCheck(messageSender, schematicNode)) {
if (!nodeNullCheck(messageSender, schematicNode)) {
return false;
}
if(!schematicNode.isDir()) {
if (!schematicNode.isDir()) {
messageSender.send("COMMAND_MUST_DIR");
return false;
}
@@ -65,10 +65,10 @@ public class SchematicValidator {
public static TypeValidator<SchematicNode> isOwnerValidator() {
return (commandSender, schematicNode, messageSender) -> {
if(!nodeNullCheck(messageSender, schematicNode)) {
if (!nodeNullCheck(messageSender, schematicNode)) {
return false;
}
if(schematicNode.getOwner() != SteamwarUser.get(((Player) commandSender).getUniqueId()).getId()) {
if (schematicNode.getOwner() != SteamwarUser.get(((Player) commandSender).getUniqueId()).getId()) {
messageSender.send("COMMAND_NOT_OWN");
return false;
}
@@ -78,14 +78,14 @@ public class SchematicValidator {
public static TypeValidator<SchematicNode> isOwnerSchematicValidator() {
return (commandSender, schematicNode, messageSender) -> {
if(!nodeNullCheck(messageSender, schematicNode)) {
if (!nodeNullCheck(messageSender, schematicNode)) {
return false;
}
if(schematicNode.getOwner() != SchematicCommandUtils.getUser((Player) commandSender).getId()) {
if (schematicNode.getOwner() != SchematicCommandUtils.getUser((Player) commandSender).getId()) {
messageSender.send("COMMAND_NOT_OWN");
return false;
}
if(schematicNode.isDir()) {
if (schematicNode.isDir()) {
messageSender.send("COMMAND_MUST_SCHEM");
return false;
}
@@ -94,7 +94,7 @@ public class CheckPart extends SWCommand {
return;
}
AutoCheckerResult result = AutoChecker.impl.check(clipboard, type);
if(result.isOk()) {
if (result.isOk()) {
SchematicSystem.MESSAGE.send("COMMAND_FIX_OK", player);
return;
}
@@ -102,7 +102,7 @@ public class CheckPart extends SWCommand {
clipboard = SchematicCommand.fixClipboard(clipboard, result, type);
WorldEdit.getInstance().getSessionManager().get(new BukkitPlayer(player)).setClipboard(new ClipboardHolder(clipboard));
AutoCheckerResult after = AutoChecker.impl.check(clipboard, type);
if(after.isOk()) {
if (after.isOk()) {
SchematicSystem.MESSAGE.send("COMMAND_FIX_DONE", player);
} else {
after.sendErrorMessage(player, SchematicSystem.MESSAGE.parse("COMMAND_FIX_MANUAL", player));
@@ -46,12 +46,12 @@ public class MemberPart extends SWCommand {
@Register("addmember")
public void addMember(Player player, @Validator("isOwnerValidator") SchematicNode node, SteamwarUser... targets) {
SteamwarUser user = getUser(player);
if(Punishment.isPunished(user, Punishment.PunishmentType.NoSchemSharing, punishment -> SchematicSystem.MESSAGE.send("COMMAND_ADD_PUNISH", player, punishment.getReason()))) {
if (Punishment.isPunished(user, Punishment.PunishmentType.NoSchemSharing, punishment -> SchematicSystem.MESSAGE.send("COMMAND_ADD_PUNISH", player, punishment.getReason()))) {
return;
}
List<SteamwarUser> added = new ArrayList<>();
for (SteamwarUser target: targets) {
if(Punishment.isPunished(target,
for (SteamwarUser target : targets) {
if (Punishment.isPunished(target,
Punishment.PunishmentType.NoSchemReceiving,
punishment -> SchematicSystem.MESSAGE.send("COMMAND_ADD_USER_PUNISHED", player, target.getUserName()))) {
continue;
@@ -83,7 +83,7 @@ public class MemberPart extends SWCommand {
Optional<String> reduced = added.stream().map(SteamwarUser::getUserName).reduce((s, s2) -> s + ", " + s2);
if (reduced.isPresent()) {
SchematicSystem.MESSAGE.send(added.size()>1?"COMMAND_ADD_MANY":"COMMAND_ADD_ONE", player, reduced.get());
SchematicSystem.MESSAGE.send(added.size() > 1 ? "COMMAND_ADD_MANY" : "COMMAND_ADD_ONE", player, reduced.get());
} else {
SchematicSystem.MESSAGE.send("COMMAND_ADD_NONE", player);
}
@@ -98,7 +98,7 @@ public class MemberPart extends SWCommand {
if (!nodes.isEmpty()) {
for (SchematicNode schematicNode : nodes) {
SchematicNode newNode = mkdirs(schematicNode.generateBreadcrumbs(user).split("/"), target, 1);
if(SchematicNode.getSchematicNode(schematicNode.getName(), newNode == null ? 0 : newNode.getId()) != null) {
if (SchematicNode.getSchematicNode(schematicNode.getName(), newNode == null ? 0 : newNode.getId()) != null) {
schematicNode.setName(schematicNode.getName() + "-" + Instant.now().getEpochSecond() % 1000);
}
schematicNode.setParent(newNode == null ? null : newNode.getId());
@@ -98,9 +98,9 @@ public class ModifyPart extends SWCommand {
SteamwarUser user = getUser(player);
if (name.equals("/")) {
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
node.setParent(null);
} else if(NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
} else if (NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
NodeMember member = NodeMember.getNodeMember(node.getId(), user.getId());
member.setParentId(null);
} else {
@@ -113,18 +113,18 @@ public class ModifyPart extends SWCommand {
String[] layers = name.split("/");
if (invalidSchemName(player, layers)) return;
SchematicNode newNode = mkdirs(layers, user, 0);
if(SchematicNode.parentsOfNode(user, newNode.getId()).stream().anyMatch(n -> n.getId() == node.getId())) {
if (SchematicNode.parentsOfNode(user, newNode.getId()).stream().anyMatch(n -> n.getId() == node.getId())) {
SchematicSystem.MESSAGE.send("COMMAND_MOVE_RECURSIVE", player);
return;
}
if(node.getOwner() == user.getId()) {
if (node.getOwner() == user.getId()) {
SafeSchematicNode.Result result = SafeSchematicNode.setParent(user, node, newNode);
if(!result.isSuccessful()) {
if (!result.isSuccessful()) {
result.sendError(player);
return;
}
} else if(NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
} else if (NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
NodeMember member = NodeMember.getNodeMember(node.getId(), user.getId());
member.setParentId(newNode.getId());
} else {
@@ -180,6 +180,6 @@ public class ModifyPart extends SWCommand {
public void replacecolor(Player player, @Validator("isOwnerSchematicValidator") SchematicNode node) {
boolean state = !node.replaceColor();
node.setReplaceColor(state);
SchematicSystem.MESSAGE.send(state?"COMMAND_REPLACE_COLOR_ON":"COMMAND_REPLACE_COLOR_OFF", player, node.getName());
SchematicSystem.MESSAGE.send(state ? "COMMAND_REPLACE_COLOR_ON" : "COMMAND_REPLACE_COLOR_OFF", player, node.getName());
}
}
@@ -47,9 +47,9 @@ public class SavePart extends SWCommand {
@Register("save")
public void saveSchem(Player player) {
SchematicSelector selector = new SchematicSelector(player, SchematicSelector.selectSchematicNode(), schematicNode -> {
if(schematicNode == null || schematicNode.isDir()) {
if (schematicNode == null || schematicNode.isDir()) {
SWAnvilInv anvilInv = new SWAnvilInv(player, SchematicSystem.MESSAGE.parse("COMMAND_ENTER_NAME", player));
anvilInv.setCallback(s -> saveSchem(player, schematicNode==null?s:(schematicNode.generateBreadcrumbs(getUser(player)) + s)));
anvilInv.setCallback(s -> saveSchem(player, schematicNode == null ? s : (schematicNode.generateBreadcrumbs(getUser(player)) + s)));
anvilInv.setItem(Material.CAULDRON);
anvilInv.open();
} else {
@@ -63,7 +63,7 @@ public class SavePart extends SWCommand {
@Register("save")
public void saveSchem(Player player, @AbstractSWCommand.Mapper("stringMapper") String name) {
SteamwarUser user = getUser(player);
if(BauServerInfo.isBauServer() && BauServerInfo.getOwnerId() != user.getId() &&
if (BauServerInfo.isBauServer() && BauServerInfo.getOwnerId() != user.getId() &&
(Punishment.isPunished(user, Punishment.PunishmentType.NoSchemReceiving, punishment ->
SchematicSystem.MESSAGE.send("COMMAND_PUNISHMENT_NO_SAVE_EXTERNAL", player)) ||
Punishment.isPunished(SteamwarUser.byId(BauServerInfo.getOwnerId()), Punishment.PunishmentType.NoSchemSharing, punishment ->
@@ -81,7 +81,7 @@ public class SavePart extends SWCommand {
SchematicNode node = SchematicNode.getNodeFromPath(user, String.join("/", layers));
if (node != null) {
if(node.isDir()) {
if (node.isDir()) {
SchematicSystem.MESSAGE.send("COMMAND_SAVE_FOLDER", player);
return;
} else if (!node.getSchemtype().writeable() || node.getOwner() != user.getId()) {
@@ -111,7 +111,7 @@ public class SavePart extends SWCommand {
return;
}
SchematicSystem.MESSAGE.send(newSchem?"COMMAND_SAVE_DONE":"COMMAND_SAVE_OVERWRITE", player, node.generateBreadcrumbs(user));
SchematicSystem.MESSAGE.send(newSchem ? "COMMAND_SAVE_DONE" : "COMMAND_SAVE_OVERWRITE", player, node.generateBreadcrumbs(user));
}
@Register("dir")
@@ -66,7 +66,7 @@ public class ViewPart extends SWCommand {
@Register("list")
public void schemList(Player player, @Validator("isDirValidator") @Mapper("dirMapper") SchematicNode node, @OptionalValue("1") int page) {
SteamwarUser user = getUser(player);
createCachedSchemList(player, SchematicNode.list(user, node.getId()), Math.max(page - 1, 0), node, SchematicCommandUtils.SchematicListBehavior.builder().setPublics(node.getOwner() == 0).setPageCommandGen(value -> "/schem list " + (node.getOwner()==0?"public ":"") + node.generateBreadcrumbs(user) + " " + value).build());
createCachedSchemList(player, SchematicNode.list(user, node.getId()), Math.max(page - 1, 0), node, SchematicCommandUtils.SchematicListBehavior.builder().setPublics(node.getOwner() == 0).setPageCommandGen(value -> "/schem list " + (node.getOwner() == 0 ? "public " : "") + node.generateBreadcrumbs(user) + " " + value).build());
}
@Register({"info", "public"})
@@ -82,7 +82,7 @@ public class ViewPart extends SWCommand {
@Register("revisions")
public void revisions(Player player, @Validator("isSchemValidator") SchematicNode node) {
List<NodeData> revisions = NodeData.get(node);
if(revisions.isEmpty()) {
if (revisions.isEmpty()) {
SchematicSystem.MESSAGE.send("REVISIONS_EMPTY", player);
return;
}
@@ -105,7 +105,7 @@ public class ViewPart extends SWCommand {
@Register({"l", "public"})
@Register({"load", "public"})
public void loadSchemPublic(Player player, @Validator("isSchemValidator") @Mapper("publicMapper") SchematicNode node, @OptionalValue("-1") int revision) {
public void loadSchemPublic(Player player, @Validator("isSchemValidator") @Mapper("publicMapper") SchematicNode node, @OptionalValue("-1") int revision) {
loadSchem(player, node, revision);
}
+2 -2
View File
@@ -1,7 +1,7 @@
name: SchematicSystem
version: "2.1.0"
authors: [Yaruma3341, Lixfel, Chaoscaot]
depend: [SpigotCore, WorldEdit]
authors: [ Yaruma3341, Lixfel, Chaoscaot ]
depend: [ SpigotCore, WorldEdit ]
main: de.steamwar.schematicsystem.SchematicSystem
website: steamwar.de
api-version: "1.13"