Compare commits

..

7 commits
vc ... master

5 changed files with 182 additions and 265 deletions

View file

@ -1,202 +1,202 @@
# CoreProtect Language File (ru) # CoreProtect Language File (ru)
ACTION_NOT_SUPPORTED: "<red>Данное действие не поддерживается этой командой" ACTION_NOT_SUPPORTED: "Данное действие не поддерживается этой командой."
AMOUNT_BLOCK: "{0} {блок|блоков}" AMOUNT_BLOCK: "{0} {блок|блоков}"
AMOUNT_CHUNK: "{0} {чанк|чанков}" AMOUNT_CHUNK: "{0} {чанк|чанков}"
AMOUNT_ENTITY: "{0} {существо|существ}" AMOUNT_ENTITY: "{0} {существо|существ}"
AMOUNT_ITEM: "{0} {предмет|предметов}" AMOUNT_ITEM: "{0} {предмет|предметов}"
API_TEST: "<green>Тест API прошёл успешно!" API_TEST: "Тест API прошёл успешно!"
CACHE_ERROR: "<red>ВНИМАНИЕ: Ошибка при проверке кеша {0}" CACHE_ERROR: "ВНИМАНИЕ: Ошибка при проверке кеша {0}."
CACHE_RELOAD: "Принудительная перезагрузка кеша {отображения|мира} из базы данных" CACHE_RELOAD: "Принудительная перезагрузка кеша {отображения|мира} из базы данных."
CHECK_CONFIG: "<red>Пожалуйста, проверьте config.yml" CHECK_CONFIG: "Пожалуйста, проверьте config.yml"
COMMAND_CONSOLE: "<red>Пожалуйста, запустите команду из консоли" COMMAND_CONSOLE: "Пожалуйста, запустите команду из консоли."
COMMAND_NOT_FOUND: "<red>Команда «{0}» не найдена" COMMAND_NOT_FOUND: "Команда «{0}» не найдена."
COMMAND_THROTTLED: "<red>Подождите немного и попробуйте еще раз" COMMAND_THROTTLED: "Подождите немного и попробуйте еще раз."
CONSUMER_ERROR: "<red>Обработка потребительской очереди уже {приостановлено|возобновлено}" CONSUMER_ERROR: "Обработка потребительской очереди уже {приостановлено|возобновлено}."
CONSUMER_TOGGLED: "Обработка очереди потребителей {<gray>приостановлена</gray>|<green>возобновлена</green>}" CONSUMER_TOGGLED: "Обработка очереди потребителей была {приостановлено|возобновлено}."
CONTAINER_HEADER: "Контейнерные транзакции" CONTAINER_HEADER: "Контейнерные транзакции"
DATABASE_BUSY: "<red>База данных занята, повторите попытку позже" DATABASE_BUSY: "База данных занята. Пожалуйста, повторите попытку позже."
DATABASE_INDEX_ERROR: "<red>Невозможно проверить индексы базы данных" DATABASE_INDEX_ERROR: "Невозможно проверить индексы базы данных."
DATABASE_LOCKED_1: "<red>База данных заблокирована, подождите около 15 секунд..." DATABASE_LOCKED_1: "База данных заблокирована. Подождите около 15 секунд..."
DATABASE_LOCKED_2: "<red>База данных уже используется, попробуйте еще раз" DATABASE_LOCKED_2: "База данных уже используется. Пожалуйста, попробуйте еще раз."
DATABASE_LOCKED_3: "Чтобы отключить блокировку базы данных, установите «database-lock: false»" DATABASE_LOCKED_3: "Чтобы отключить блокировку базы данных, установите «database-lock: false»."
DATABASE_LOCKED_4: "Отключение блокировки базы данных может привести к повреждению данных" DATABASE_LOCKED_4: "Отключение блокировки базы данных может привести к повреждению данных."
DATABASE_UNREACHABLE: "<red>База данных недоступна. Удаление данных и завершение работы" DATABASE_UNREACHABLE: "База данных недоступна. Удаление данных и завершение работы."
DEVELOPMENT_BRANCH: "Обнаружена ветвь разработки, скрипты исправлений пропущены" DEVELOPMENT_BRANCH: "Обнаружена ветвь разработки, скрипты исправлений пропущены."
DIRT_BLOCK: "<gold>Под вами установлен блок грязи" DIRT_BLOCK: "Под вами установлен блок грязи."
DISABLE_SUCCESS: "{0} был успешно отключён!" DISABLE_SUCCESS: "{0} был успешно отключён!"
ENABLE_FAILED: "<red>{0} не удалось запустить" ENABLE_FAILED: "{0} не удалось запустить."
ENABLE_SUCCESS: "{0} был успешно запущен!" ENABLE_SUCCESS: "{0} был успешно запущен!"
ENJOY_COREPROTECT: "Нравится {0}? Присоединяйтесь к нашему Discord!" ENJOY_COREPROTECT: "Нравится {0}? Присоединяйтесь к нашему Discord!"
FINISHING_CONVERSION: "<gray><italic>Завершение преобразования данных. Пожалуйста, подождите..." FINISHING_CONVERSION: "Завершение преобразования данных. Пожалуйста, подождите..."
FINISHING_LOGGING: "<gray><italic>Завершение регистрации данных. Пожалуйста, подождите..." FINISHING_LOGGING: "Завершение регистрации данных. Пожалуйста, подождите..."
FIRST_VERSION: "Исходная БД: {0}" FIRST_VERSION: "Исходная БД: {0}"
GLOBAL_LOOKUP: "<red>Радиус для глобального поиска не требуется" GLOBAL_LOOKUP: "Не указывайте радиус для глобального поиска."
GLOBAL_ROLLBACK: "<yellow>Используйте «{0}», чтобы сделать {откат|восстановление} глобально" GLOBAL_ROLLBACK: "Используйте «{0}», чтобы сделать {откат|восстановление} глобально"
HELP_ACTION_1: "Ограничьте поиск определенным действием" HELP_ACTION_1: "Ограничьте поиск определенным действием."
HELP_ACTION_2: "Например: [a:block], [a:+block], [a:-block] [a:click], [a:container], [a:inventory], [a:item], [a:kill], [a:chat], [a:command], [a:sign], [a:session], [a:username]" HELP_ACTION_2: "Например: [a:block], [a:+block], [a:-block] [a:click], [a:container], [a:inventory], [a:item], [a:kill], [a:chat], [a:command], [a:sign], [a:session], [a:username]"
HELP_COMMAND: "Показать дополнительную информацию" HELP_COMMAND: "Показать дополнительную информацию."
HELP_EXCLUDE_1: "Исключите блоки/пользователей" HELP_EXCLUDE_1: "Исключите блоки/пользователей."
HELP_EXCLUDE_2: "Например: [e:stone], [e:Notch], [e:stone,Notch]" HELP_EXCLUDE_2: "Например: [e:stone], [e:Notch], [e:stone,Notch]"
HELP_HEADER: "<yellow>Помощь по командам (<gray>отслеживание действий<yellow>)" HELP_HEADER: "{0} Помощь"
HELP_INCLUDE_1: "Включите определенные блоки/сущности" HELP_INCLUDE_1: "Включите определенные блоки/сущности."
HELP_INCLUDE_2: "Например: [i:stone], [i:zombie], [i:stone,wood,bedrock]" HELP_INCLUDE_2: "Например: [i:stone], [i:zombie], [i:stone,wood,bedrock]"
HELP_INSPECT_1: "С включенным режимом CHECKER вы можете сделать следующее:" HELP_INSPECT_1: "С включенным режимом инспектора вы можете сделать следующее:"
HELP_INSPECT_2: "Щелкните левой кнопкой мыши по блоку, чтобы увидеть, кто разместил этот блок" HELP_INSPECT_2: "Щелкните левой кнопкой мыши по блоку, чтобы увидеть, кто разместил этот блок.."
HELP_INSPECT_3: "Щелкните блок правой кнопкой мыши, чтобы увидеть, какой соседний блок был сломан" HELP_INSPECT_3: "Щелкните блок правой кнопкой мыши, чтобы увидеть, какой соседний блок был сломан.."
HELP_INSPECT_4: "Поместите блок, чтобы увидеть, какой блок был сломан в этом месте" HELP_INSPECT_4: "Поместите блок, чтобы увидеть, какой блок был сломан в этом месте."
HELP_INSPECT_5: "Поместите блок в жидкость (и т.п.), чтобы увидеть, кто его поместил" HELP_INSPECT_5: "Поместите блок в жидкость (и т.п.), чтобы увидеть, кто его поместил."
HELP_INSPECT_6: "Щелкните правой кнопкой мыши дверь, сундук и т.д., чтобы узнать, кто последний использовал их" HELP_INSPECT_6: "Щелкните правой кнопкой мыши дверь, сундук и т.д., чтобы узнать, кто последний использовал их."
HELP_INSPECT_7: "Подсказка: Вы можете использовать «/co i» для быстрого переключения режима CHECKER" HELP_INSPECT_7: "Подсказка: Вы можете использовать «/co i» для быстрого переключения режима инспектора."
HELP_INSPECT_COMMAND: "Включает или выключает режим проверки логов (CHECKER)" HELP_INSPECT_COMMAND: "Включает или выключает режим инспектора блоков."
HELP_LIST: "Отображает список всех команд" HELP_LIST: "Отображает список всех команд."
HELP_LOOKUP_1: "Команда быстрого доступа" HELP_LOOKUP_1: "Команда быстрого доступа."
HELP_LOOKUP_2: "Используйте после проверки блока для просмотра журналов" HELP_LOOKUP_2: "Используйте после проверки блока для просмотра журналов."
HELP_LOOKUP_COMMAND: "Глобальный поиск данных блоков" HELP_LOOKUP_COMMAND: "Глобальный поиск данных блоков."
HELP_NO_INFO: "<red>Информация о команде «{0}» не найдена" HELP_NO_INFO: "Информация о команде «{0}» не найдена."
HELP_PARAMETER: "Пожалуйста, просмотрите «{0}» для получения подробной информации о параметрах" HELP_PARAMETER: "Пожалуйста, просмотрите «{0}» для получения подробной информации о параметрах."
HELP_PARAMS_1: "Выполните {поиск|откат|восстановление}" HELP_PARAMS_1: "Выполните {поиск|откат|восстановление}."
HELP_PARAMS_2: "Укажите пользователей для {поиска|отката|восстановления}" HELP_PARAMS_2: "Укажите пользователей для {поиска|отката|восстановления}."
HELP_PARAMS_3: "Укажите время для {поиска|отката|восстановления}" HELP_PARAMS_3: "Укажите время для {поиска|отката|восстановления}."
HELP_PARAMS_4: "Укажите область радиуса, чтобы ограничить {поиск|откат|восстановление}" HELP_PARAMS_4: "Укажите область радиуса, чтобы ограничить {поиск|откат|восстановление}."
HELP_PARAMS_5: "Ограничьте {поиск|откат|восстановление} определенным действием" HELP_PARAMS_5: "Ограничьте {поиск|откат|восстановление} определенным действием."
HELP_PARAMS_6: "Включите определенные блоки/объекты в {поиск|откат|восстановление}" HELP_PARAMS_6: "Включите определенные блоки/объекты в {поиск|откат|восстановление}."
HELP_PARAMS_7: "Исключите блоки/пользователей из {поиска|отката|восстановления}" HELP_PARAMS_7: "Исключите блоки/пользователей из {поиска|отката|восстановления}."
HELP_PURGE_1: "Удалить данные старше указанного времени" HELP_PURGE_1: "Удалить данные старше указанного времени."
HELP_PURGE_2: "Например, «{0}» удалит все данные старше одного месяца и сохранит данные только за последние 30 дней" HELP_PURGE_2: "Например, «{0}» удалит все данные старше одного месяца и сохранит данные только за последние 30 дней."
HELP_PURGE_COMMAND: "Удалит старые данные блока" HELP_PURGE_COMMAND: "Удалит старые данные блока."
HELP_RADIUS_1: "Укажите радиус области" HELP_RADIUS_1: "Укажите радиус области."
HELP_RADIUS_2: "Например: [r:10] (Внесёт изменения только в пределах 10 блоков от вас)" HELP_RADIUS_2: "Например: [r:10] (Внесёт изменения только в пределах 10 блоков от вас)"
HELP_RELOAD_COMMAND: "Перезагружает файл конфигурации" HELP_RELOAD_COMMAND: "Перезагружает файл конфигурации."
HELP_RESTORE_COMMAND: "Отмена отката действий" HELP_RESTORE_COMMAND: "Восстановит данные блока."
HELP_ROLLBACK_COMMAND: "Откат действий" HELP_ROLLBACK_COMMAND: "Откатит данные блока."
HELP_STATUS: "Просмотр статуса плагина и информации о версии" HELP_STATUS: "Просмотр статуса плагина и информации о версии."
HELP_STATUS_COMMAND: "Отображает статус плагина" HELP_STATUS_COMMAND: "Отображает статус плагина."
HELP_TELEPORT: "Телепорт в локацию" HELP_TELEPORT: "Телепорт в локацию."
HELP_TIME_1: "Укажите время поиска" HELP_TIME_1: "Укажите время поиска."
HELP_TIME_2: "Например: [t:2w,5d,7h,2m,10s], [t:5d2h], [t:2.50h]" HELP_TIME_2: "Например: [t:2w,5d,7h,2m,10s], [t:5d2h], [t:2.50h]"
HELP_USER_1: "Укажите пользовател(я/ей) для поиска" HELP_USER_1: "Укажите пользовател(я/ей) для поиска."
HELP_USER_2: "Например: [u:Notch], [u:Notch,#enderman]" HELP_USER_2: "Например: [u:Notch], [u:Notch,#enderman]"
INCOMPATIBLE_ACTION: "<red>«{0}» нельзя использовать с этим действием" INCOMPATIBLE_ACTION: "«{0}» нельзя использовать с этим действием."
INSPECTOR_ERROR: "<red>Режим CHECKER уже {включён|выключен}" INSPECTOR_ERROR: "Режим инспектора уже {включён|выключен}."
INSPECTOR_TOGGLED: "Режим <gray>CHECKER {<green>включён|<red>выключен}" INSPECTOR_TOGGLED: "Режим инспектора теперь {включён|выключен}."
INTEGRATION_ERROR: "<red>Невозможно {инициализировать|отключить} регистрацию {0}" INTEGRATION_ERROR: "Невозможно {инициализировать|отключить} регистрацию {0}."
INTEGRATION_SUCCESS: "{0} регистрация успешно {<green>инициализирована|<red>отключена}" INTEGRATION_SUCCESS: "{0} регистрация успешно {инициализирована|отключена}."
INTEGRATION_VERSION: "<red>Обнаружена недопустимая версия {0}" INTEGRATION_VERSION: "Обнаружена недопустимая версия {0}."
INTERACTIONS_HEADER: "Взаимодействие с игроками" INTERACTIONS_HEADER: "Взаимодействие с игроками"
INVALID_ACTION: "<red>Это недопустимое действие" INVALID_ACTION: "Это недопустимое действие."
INVALID_BRANCH_1: "<red>Неверная версия плагина (ветка не задана)" INVALID_BRANCH_1: "Неверная версия плагина (ветка не задана)."
INVALID_BRANCH_2: "<yellow>Чтобы продолжить, установите ветку проекта на «development»" INVALID_BRANCH_2: "Чтобы продолжить, установите ветку проекта на «development»."
INVALID_BRANCH_3: "<gold>Запуск кода который находится в разработке может привести к повреждению данных" INVALID_BRANCH_3: "Запуск кода который находится в разработке может привести к повреждению данных."
INVALID_CONTAINER: "<red>Пожалуйста, сначала проверьте действующий контейнер" INVALID_CONTAINER: "Пожалуйста, сначала проверьте действующий контейнер."
INVALID_DONATION_KEY: "<red>Недействительный ключ пожертвования" INVALID_DONATION_KEY: "Недействительный ключ пожертвования."
INVALID_INCLUDE: "<red>«{0}» неверное имя блока/сущности" INVALID_INCLUDE: "«{0}» неверное имя блока/сущности."
INVALID_INCLUDE_COMBO: "<red>Недопустимая комбинация блока/сущности" INVALID_INCLUDE_COMBO: "Это недопустимая комбинация блока/сущности."
INVALID_RADIUS: "<red>Пожалуйста, введите допустимый радиус." INVALID_RADIUS: "Пожалуйста, введите допустимый радиус."
INVALID_SELECTION: "<red>Выбор {0} не найден" INVALID_SELECTION: "Выбор {0} не найден."
INVALID_USERNAME: "<red>«{0}» неверное имя пользователя." INVALID_USERNAME: "«{0}» неверное имя пользователя."
INVALID_WORLD: "<red>Укажите действительный мир" INVALID_WORLD: "Укажите действительный мир."
LATEST_VERSION: "Последняя версия: {0}" LATEST_VERSION: "Последняя версия: {0}"
LINK_DISCORD: "Discord: {0}" LINK_DISCORD: "Discord: {0}"
LINK_DOWNLOAD: "Загрузить: {0}" LINK_DOWNLOAD: "Загрузить: {0}"
LINK_PATREON: "Patreon: {0}" LINK_PATREON: "Patreon: {0}"
LINK_WIKI_BLOCK: "Названия блоков: {0}" LINK_WIKI_BLOCK: "Названия блоков: {0}"
LINK_WIKI_ENTITY: "Названия сущностей: {0}" LINK_WIKI_ENTITY: "Названия сущностей: {0}"
LOGGING_ITEMS: "<gray><italic>{0} предметы регистрируются. Пожалуйста, подождите..." LOGGING_ITEMS: "{0} предметы регистрируются. Пожалуйста, подождите..."
LOGGING_TIME_LIMIT: "<red>Достигнуто ограничение по времени регистрации. Удаление данных и завершение работы" LOGGING_TIME_LIMIT: "Достигнуто ограничение по времени регистрации. Удаление данных и завершение работы."
LOOKUP_BLOCK: "{0} {<green>поставил|<red>сломал} {1}" LOOKUP_BLOCK: "{0} {поставил|сломал} {1}."
LOOKUP_CONTAINER: "{0} {<green>положил|<red>забрал} {1} {2}" LOOKUP_CONTAINER: "{0} {добавил|забрал} {1} {2}."
LOOKUP_HEADER: "{0} Результаты поиска" LOOKUP_HEADER: "{0} Результаты поиска"
LOOKUP_INTERACTION: "{0} {<green>нажал|<red>убил} {1}" LOOKUP_INTERACTION: "{0} {нажал|убил} {1}."
LOOKUP_ITEM: "{0} {<green>подобрал|<red>выкинул} {1} {2}" LOOKUP_ITEM: "{0} {подобрал|выкинул} {1} {2}."
LOOKUP_LOGIN: "{0} {<green>вошёл|<red>вышел}" LOOKUP_LOGIN: "{0} {вошёл|вышел}."
LOOKUP_PAGE: "Страница {0}" LOOKUP_PAGE: "Страница {0}"
LOOKUP_PROJECTILE: "{0} {<red>бросил|<red>выстрелил} {1} {2}" LOOKUP_PROJECTILE: "{0} {бросил|выстрелил} {1} {2}."
LOOKUP_ROWS_FOUND: "{0} {строка|строк} найдено" LOOKUP_ROWS_FOUND: "{0} {строка|строк} найдено."
LOOKUP_SEARCHING: "<gray><italic>Поиск данных, подождите..." LOOKUP_SEARCHING: "Ведётся поиск. Пожалуйста подождите..."
LOOKUP_STORAGE: "{0} {<green>положил|<red>забрал} {1} {2}" LOOKUP_STORAGE: "{0} {положил|забрал} {1} {2}."
LOOKUP_TIME: "<yellow>{0} назад" LOOKUP_TIME: "{0} назад"
LOOKUP_USERNAME: "{0} зарегистрирован как {1}" LOOKUP_USERNAME: "{0} зарегистрирован как {1}."
MAXIMUM_RADIUS: "<red>Максимальный радиус для {поиска|отката|восстановления} - {0}" MAXIMUM_RADIUS: "Максимальный радиус для {поиска|отката|восстановления} - {0}."
MISSING_ACTION_USER: "<red>Чтобы использовать это действие, укажите пользователя" MISSING_ACTION_USER: "Чтобы использовать это действие, укажите пользователя."
MISSING_LOOKUP_TIME: "<red>Пожалуйста, укажите количество времени, чтобы использовать {поиск|откат|восстановление}" MISSING_LOOKUP_TIME: "Пожалуйста, укажите количество времени, чтобы использовать {поиск|откат|восстановление}."
MISSING_LOOKUP_USER: "<red>Укажите пользователя или {блок|радиус} для поиска" MISSING_LOOKUP_USER: "Укажите пользователя или {блок|радиус} для поиска."
MISSING_PARAMETERS: "<red>Пожалуйста используйте «{0}»" MISSING_PARAMETERS: "Пожалуйста используйте «{0}»."
MISSING_ROLLBACK_RADIUS: "<red>Вы не указали радиус {отката|восстановления}" MISSING_ROLLBACK_RADIUS: "Вы не указали радиус {отката|восстановления}."
MISSING_ROLLBACK_USER: "<red>Вы не указали пользователя для {отката|восстановления}" MISSING_ROLLBACK_USER: "Вы не указали пользователя для {отката|восстановления}."
MYSQL_UNAVAILABLE: "<red>Невозможно подключиться к серверу MySQL" MYSQL_UNAVAILABLE: "Невозможно подключиться к серверу MySQL."
NO_DATA: "<red>Данные не найдены в {0}" NO_DATA: "Данные не найдены в {0}."
NO_DATA_LOCATION: "<red>В этом месте {данные|транзакции|взаимодействия|сообщения} не обнаружены" NO_DATA_LOCATION: "В этом месте {данные|транзакции|взаимодействия|сообщения} не обнаружены.."
NO_PERMISSION: "<red>Нет доступа!" NO_PERMISSION: "У вас нет прав чтобы сделать это."
NO_RESULTS: "<red>Результаты не найдены" NO_RESULTS: "Результаты не найдены."
NO_RESULTS_PAGE: "<red>Для этой страницы {результатов|данных} не найдено" NO_RESULTS_PAGE: "Для этой страницы {результатов|данных} не найдено."
NO_ROLLBACK: "<red>{Ожидаемый|Предыдущий} откат/восстановление не найдены" NO_ROLLBACK: "{Ожидаемый|Предыдущий} откат/восстановление не найдены."
PATCH_INTERRUPTED: "Обновление прервано. Попробую снова при перезапуске..." PATCH_INTERRUPTED: "Обновление прервано. Попробую снова при перезапуске."
PATCH_OUTDATED_1: "<red>Невозможно обновить базы данных старше {0}" PATCH_OUTDATED_1: "Невозможно обновить базы данных старше {0}."
PATCH_OUTDATED_2: "Пожалуйста, обновите поддерживаемую версию Griefus" PATCH_OUTDATED_2: "Пожалуйста, обновите поддерживаемую версию CoreProtect."
PATCH_PROCESSING: "<gray><italic>Обработка новых данных. Пожалуйста, подождите..." PATCH_PROCESSING: "Обработка новых данных. Пожалуйста, подождите..."
PATCH_SKIP_UPDATE: "{Пропущена таблица|Пропущен индекс} {обновление|создание|удаление} в {0}" PATCH_SKIP_UPDATE: "{Пропущена таблица|Пропущен индекс} {обновление|создание|удаление} в {0}."
PATCH_STARTED: "<gray><italic>Выполняется обновление {0}. Пожалуйста, подождите..." PATCH_STARTED: "Выполняется обновление {0}. Пожалуйста, подождите..."
PATCH_SUCCESS: "<green>Успешно обновлен до {0}" PATCH_SUCCESS: "Успешно обновлен до {0}."
PATCH_UPGRADING: "<gray><italic>Выполняется обновление базы данных. Пожалуйста, подождите..." PATCH_UPGRADING: "Выполняется обновление базы данных. Пожалуйста, подождите..."
PLEASE_SELECT: "<red>Пожалуйста выберите: «{0}» или «{1}»" PLEASE_SELECT: "Пожалуйста выберите: «{0}» или «{1}»."
PREVIEW_CANCELLED: "<gray>Предварительный просмотр отменен" PREVIEW_CANCELLED: "Предварительный просмотр отменен."
PREVIEW_CANCELLING: "<gray><italic>Отмена предварительного просмотра..." PREVIEW_CANCELLING: "Отмена предварительного просмотра..."
PREVIEW_IN_GAME: "<red>Предварительный просмотр откатов доступен только в игре" PREVIEW_IN_GAME: "Предварительный просмотр откатов доступен только в игре."
PREVIEW_TRANSACTION: "<red>Вы не можете просмотреть {контейнер|инвентарь} транзакции" PREVIEW_TRANSACTION: "Вы не можете просмотреть {контейнер|инвентарь} транзакции."
PURGE_ABORTED: "<red>Очистка не удалась. База данных может быть повреждена" PURGE_ABORTED: "Очистка не удалась. База данных может быть повреждена."
PURGE_ERROR: "<red>Невозможно обработать данные {0}!" PURGE_ERROR: "Невозможно обработать данные {0}!"
PURGE_FAILED: "<red>Очистка не удалась. Пожалуйста, повторите попытку позже" PURGE_FAILED: "Очистка не удалась. Пожалуйста, повторите попытку позже."
PURGE_IN_PROGRESS: "<red>Выполняется чистка. Пожалуйста, повторите попытку позже" PURGE_IN_PROGRESS: "Выполняется чистка. Пожалуйста, повторите попытку позже."
PURGE_MINIMUM_TIME: "<red>Удалить можно только данные старше {0} {дней|часов}" PURGE_MINIMUM_TIME: "Удалить можно только данные старше {0} {дней|часов}."
PURGE_NOTICE_1: "<yellow>Учтите, что это может занять некоторое время" PURGE_NOTICE_1: "Учтите, что это может занять некоторое время."
PURGE_NOTICE_2: "<gold>Не перезагружайте сервер до завершения" PURGE_NOTICE_2: "Не перезагружайте сервер до завершения."
PURGE_OPTIMIZING: "<gray><italic>Оптимизация базы данных. Пожалуйста, подождите..." PURGE_OPTIMIZING: "Оптимизация базы данных. Пожалуйста, подождите..."
PURGE_PROCESSING: "<gray><italic>Обработка данных {0}..." PURGE_PROCESSING: "Обработка данных {0}..."
PURGE_REPAIRING: "<gray><italic>Попытка исправления. Это может занять некоторое время..." PURGE_REPAIRING: "Попытка исправления. Это может занять некоторое время..."
PURGE_ROWS: "<green>{0} {строка|строки} данных очищены" PURGE_ROWS: "{0} {строка|строки} данных очищены."
PURGE_STARTED: "<gray>Очистка данных началась «{0}»" PURGE_STARTED: "Очистка данных началась «{0}»."
PURGE_SUCCESS: "<green>Очистка данных прошла успешно" PURGE_SUCCESS: "Очистка данных прошла успешно."
RELOAD_STARTED: "<gray><italic>Перезагрузка конфигурации, подождите..." RELOAD_STARTED: "Перезагрузка конфигурации - подождите."
RELOAD_SUCCESS: "<green>Конфигурация успешно перезагружена" RELOAD_SUCCESS: "Конфигурация успешно перезагружена."
ROLLBACK_ABORTED: "<red>Откат или восстановление прерваны" ROLLBACK_ABORTED: "Откат или восстановление прерваны."
ROLLBACK_CHUNKS_FOUND: "<gray>Найдено {0} {чанк|чанков} для изменения" ROLLBACK_CHUNKS_FOUND: "Найдено {0} {чанк|чанков} для изменения."
ROLLBACK_CHUNKS_MODIFIED: "<gray>Изменено {0}/{1} {чанк|чанков}" ROLLBACK_CHUNKS_MODIFIED: "Изменено {0}/{1} {чанк|чанков}."
ROLLBACK_COMPLETED: "<gray>{Откат|Восстановление|Предварительный просмотр} завершен для «{0}»" ROLLBACK_COMPLETED: "{Откат|Восстановление|Предварительный просмотр} завершен для «{0}»."
ROLLBACK_EXCLUDED_USERS: "<gray>{Исключен пользователь|Исключены пользователи}: «{0}»" ROLLBACK_EXCLUDED_USERS: "{Исключен пользователь|Исключены пользователи}: «{0}»."
ROLLBACK_INCLUDE: "<gray>{Включён|Исключён} {блок|сущность|цель} {типа|типов}: «{0}»" ROLLBACK_INCLUDE: "{Включён|Исключён} {блок|сущность|цель} {типа|типов}: «{0}»."
ROLLBACK_IN_PROGRESS: "<red>Откат/восстановление уже выполняется" ROLLBACK_IN_PROGRESS: "Откат/восстановление уже выполняется."
ROLLBACK_LENGTH: "<gray>Заняло времени: {0} {секунду|секунд}" ROLLBACK_LENGTH: "Заняло времени: {0} {секунду|секунд}."
ROLLBACK_MODIFIED: "<gray>{Изменено|Изменены} {0}" ROLLBACK_MODIFIED: "{Изменено|Изменены} {0}."
ROLLBACK_RADIUS: "<gray>Радиус: {0} {блок|блоков}" ROLLBACK_RADIUS: "Радиус: {0} {блок|блоков}."
ROLLBACK_SELECTION: "<gray>Радиус установлен «{0}»" ROLLBACK_SELECTION: "Радиус установлен «{0}»."
ROLLBACK_STARTED: "<gray>{Откат|Восстановление|Предварительный просмотр} начат «{0}»" ROLLBACK_STARTED: "{Откат|Восстановление|Предварительный просмотр} начат «{0}»."
ROLLBACK_TIME: "<gray>Временной интервал: {0}" ROLLBACK_TIME: "Временной интервал: {0}."
ROLLBACK_WORLD_ACTION: "<gray>Только {мир|действие} «{0}»" ROLLBACK_WORLD_ACTION: "Только {мир|действие} «{0}»."
SIGN_HEADER: "Сообщения на табличке" SIGN_HEADER: "Сообщения на табличке"
STATUS_CONSUMER: "Потребитель: {0} {предмет|предметы} в очереди" STATUS_CONSUMER: "Потребитель: {0} {предмет|предметы} в очереди."
STATUS_DATABASE: "База данных: Использует {0}." STATUS_DATABASE: "База данных: Использует {0}."
STATUS_INTEGRATION: "{0}: Интеграция {включена|отключена}" STATUS_INTEGRATION: "{0}: Интеграция {включена|отключена}."
STATUS_LICENSE: "Лицензия: {0}" STATUS_LICENSE: "Лицензия: {0}"
STATUS_VERSION: "Версия: {0}" STATUS_VERSION: "Версия: {0}"
TELEPORTED: "<gray><italic>Телепортирование в {0}..." TELEPORTED: "Телепортирование в {0}."
TELEPORTED_SAFETY: "<yellow>Телепортируем вас в безопасное место" TELEPORTED_SAFETY: "Телепортируем вас в безопасное место."
TELEPORT_PLAYERS: "<red>Команду телепортации могут использовать только игроки" TELEPORT_PLAYERS: "Команду телепортации могут использовать только игроки."
TIME_DAYS: "{0} {дня|дней}" TIME_DAYS: "{0} {дня|дней}"
TIME_HOURS: "{0} {час|часов}" TIME_HOURS: "{0} {час|часов}"
TIME_MINUTES: "{0} {минута|минут}" TIME_MINUTES: "{0} {минута|минут}"
TIME_SECONDS: "{0} {секунда|секунд}" TIME_SECONDS: "{0} {секунда|секунд}"
TIME_UNITS: "{ мин.| ч.| д.}" TIME_UNITS: "{/m|/h|/d}"
TIME_WEEKS: "{0} {неделя|недель}" TIME_WEEKS: "{0} {неделя|недель}"
UPDATE_ERROR: "<red>Произошла ошибка при проверке обновлений" UPDATE_ERROR: "Произошла ошибка при проверке обновлений."
UPDATE_HEADER: "{0} Обновление" UPDATE_HEADER: "{0} Обновление"
UPDATE_NOTICE: "Примечание: теперь доступен {0}" UPDATE_NOTICE: "Примечание: теперь доступен {0}."
UPGRADE_IN_PROGRESS: "<red>Выполняется обновление. Пожалуйста, повторите попытку позже" UPGRADE_IN_PROGRESS: "Выполняется обновление. Пожалуйста, повторите попытку позже."
USER_NOT_FOUND: "<red>Пользователь «{0}» не найден" USER_NOT_FOUND: "Пользователь «{0}» не найден."
USER_OFFLINE: "<red>Пользователь \"{0}\" не в сети" USER_OFFLINE: "Пользователь \"{0}\" не в сети."
USING_MYSQL: "Для хранения данных используется MySQL" USING_MYSQL: "Для хранения данных используется MySQL."
USING_SQLITE: "Для хранения данных используется SQLite" USING_SQLITE: "Для хранения данных используется SQLite."
VALID_DONATION_KEY: "Действующий ключ пожертвования" VALID_DONATION_KEY: "Действующий ключ пожертвования."
VERSION_NOTICE: "Версия {0} уже доступна!" VERSION_NOTICE: "Версия {0} уже доступна!"
VERSION_REQUIRED: "<red>{0} {1} или выше требуется" VERSION_REQUIRED: "{0} {1} или выше требуется."
WORLD_NOT_FOUND: "<red>Мир «{0}» не найден" WORLD_NOT_FOUND: "Мир «{0}» не найден."

View file

@ -109,8 +109,6 @@ public class StandardLookupThread implements Runnable {
ConfigHandler.lookupAlist.put(player.getName(), actions); ConfigHandler.lookupAlist.put(player.getName(), actions);
ConfigHandler.lookupRadius.put(player.getName(), radius); ConfigHandler.lookupRadius.put(player.getName(), radius);
String separator = Color.DARK_GREY + '-';
if (connection != null) { if (connection != null) {
Statement statement = connection.createStatement(); Statement statement = connection.createStatement();
String baduser = ""; String baduser = "";
@ -197,15 +195,14 @@ public class StandardLookupThread implements Runnable {
else if (pageStart < rows) { else if (pageStart < rows) {
List<String[]> lookupList = Lookup.performPartialLookup(statement, player, uuidList, userList, blockList, excludedBlocks, excludedUsers, actions, finalLocation, radius, rowData, timeStart, timeEnd, (int) pageStart, displayResults, restrict_world, true); List<String[]> lookupList = Lookup.performPartialLookup(statement, player, uuidList, userList, blockList, excludedBlocks, excludedUsers, actions, finalLocation, radius, rowData, timeStart, timeEnd, (int) pageStart, displayResults, restrict_world, true);
// Chat.sendMessage(player, Color.WHITE + "----- " + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_HEADER, "Griefus" + Color.WHITE + " | " + Color.DARK_AQUA) + Color.WHITE + " -----"); Chat.sendMessage(player, Color.WHITE + "----- " + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_HEADER, "Griefus" + Color.WHITE + " | " + Color.DARK_AQUA) + Color.WHITE + " -----");
Chat.sendComponent(player, StringUtils.makeHeader("LOGS"));
if (actions.contains(6) || actions.contains(7)) { // Chat/command if (actions.contains(6) || actions.contains(7)) { // Chat/command
for (String[] data : lookupList) { for (String[] data : lookupList) {
String time = data[0]; String time = data[0];
String dplayer = data[1]; String dplayer = data[1];
String message = data[2]; String message = data[2];
String timeago = ChatUtils.getTimeSince(Integer.parseInt(time), unixtimestamp, true); String timeago = ChatUtils.getTimeSince(Integer.parseInt(time), unixtimestamp, true);
Chat.sendComponent(player, "<dark_gray><bold>|<reset> " + timeago + " " + Color.WHITE + "- " + message); Chat.sendComponent(player, timeago + " " + Color.WHITE + "- " + Color.DARK_AQUA + dplayer + ": " + Color.WHITE, message);
if (PluginChannelHandshakeListener.getInstance().isPluginChannelPlayer(player)) { if (PluginChannelHandshakeListener.getInstance().isPluginChannelPlayer(player)) {
int wid = Integer.parseInt(data[3]); int wid = Integer.parseInt(data[3]);
int dataX = Integer.parseInt(data[4]); int dataX = Integer.parseInt(data[4]);
@ -235,7 +232,7 @@ public class StandardLookupThread implements Runnable {
} }
String tag = (action != 0 ? Color.GREEN + "+" : Color.RED + "-"); String tag = (action != 0 ? Color.GREEN + "+" : Color.RED + "-");
Chat.sendComponent(player, "<dark_gray><bold>|<reset> " + timeago + " " + tag + " " + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_LOGIN, Color.DARK_AQUA + dplayer + Color.WHITE, (action != 0 ? Selector.FIRST : Selector.SECOND))); Chat.sendComponent(player, timeago + " " + tag + " " + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_LOGIN, Color.DARK_AQUA + dplayer + Color.WHITE, (action != 0 ? Selector.FIRST : Selector.SECOND)));
Chat.sendComponent(player, Color.WHITE + leftPadding + Color.GREY + "^ " + ChatUtils.getCoordinates(command.getName(), wid, dataX, dataY, dataZ, true, true) + ""); Chat.sendComponent(player, Color.WHITE + leftPadding + Color.GREY + "^ " + ChatUtils.getCoordinates(command.getName(), wid, dataX, dataY, dataZ, true, true) + "");
PluginChannelListener.getInstance().sendInfoData(player, Integer.parseInt(time), Phrase.LOOKUP_LOGIN, (action != 0 ? Selector.FIRST : Selector.SECOND), dplayer, -1, dataX, dataY, dataZ, wid); PluginChannelListener.getInstance().sendInfoData(player, Integer.parseInt(time), Phrase.LOOKUP_LOGIN, (action != 0 ? Selector.FIRST : Selector.SECOND), dplayer, -1, dataX, dataY, dataZ, wid);
} }
@ -269,8 +266,8 @@ public class StandardLookupThread implements Runnable {
leftPadding = leftPadding + Color.WHITE + Strings.padStart("", (timeLength - 50) / 4, ' '); leftPadding = leftPadding + Color.WHITE + Strings.padStart("", (timeLength - 50) / 4, ' ');
} }
Chat.sendComponent(player,"<dark_gray><bold>|<reset> " + timeago + " " + Color.WHITE + "- " + Color.DARK_AQUA + dplayer + ": " + Color.WHITE, message); Chat.sendComponent(player, timeago + " " + Color.WHITE + "- " + Color.DARK_AQUA + dplayer + ": " + Color.WHITE, message);
Chat.sendComponent(player, Color.RESET + leftPadding + ChatUtils.getShowCoordinatesButton(dataX, dataY, dataZ) + " " + ChatUtils.getTeleportButton(wid, dataX, dataY, dataZ)); Chat.sendComponent(player, Color.WHITE + leftPadding + Color.GREY + "^ " + ChatUtils.getCoordinates(command.getName(), wid, dataX, dataY, dataZ, true, true) + "");
PluginChannelListener.getInstance().sendMessageData(player, Integer.parseInt(time), dplayer, message, true, dataX, dataY, dataZ, wid); PluginChannelListener.getInstance().sendMessageData(player, Integer.parseInt(time), dplayer, message, true, dataX, dataY, dataZ, wid);
} }
} }
@ -324,7 +321,7 @@ public class StandardLookupThread implements Runnable {
tag = (daction == 0 ? Color.GREEN + "+" : Color.RED + "-"); tag = (daction == 0 ? Color.GREEN + "+" : Color.RED + "-");
} }
Chat.sendComponent(player, "<dark_gray><bold>|<reset> " + timeago + " " + separator + " " + Phrase.build(Phrase.LOOKUP_CONTAINER, Color.WHITE + Color.BOLD + rbd + dplayer + Color.RESET + rbd, "x" + amount, ChatUtils.createTooltip(Color.GOLD + rbd + dname, tooltip) + Color.WHITE, selector)); Chat.sendComponent(player, timeago + " " + tag + " " + Phrase.build(Phrase.LOOKUP_CONTAINER, Color.DARK_AQUA + rbd + dplayer + Color.WHITE + rbd, "x" + amount, ChatUtils.createTooltip(Color.DARK_AQUA + rbd + dname, tooltip) + Color.WHITE, selector));
PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), Phrase.LOOKUP_CONTAINER, selector, dplayer, dname, amount, dataX, dataY, dataZ, wid, rbd, true, tag.contains("+")); PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), Phrase.LOOKUP_CONTAINER, selector, dplayer, dname, amount, dataX, dataY, dataZ, wid, rbd, true, tag.contains("+"));
} }
} }
@ -428,7 +425,7 @@ public class StandardLookupThread implements Runnable {
action = "a:container"; action = "a:container";
} }
Chat.sendComponent(player, "<dark_gray><bold>|<reset>" + timeago + " " + separator + " " + Phrase.build(phrase, Color.WHITE + Color.BOLD + rbd + dplayer + Color.RESET + rbd, "x" + amount, ChatUtils.createTooltip(Color.GOLD + rbd + dname, tooltip) + Color.WHITE, selector)); Chat.sendComponent(player, timeago + " " + tag + " " + Phrase.build(phrase, Color.DARK_AQUA + rbd + dplayer + Color.WHITE + rbd, "x" + amount, ChatUtils.createTooltip(Color.DARK_AQUA + rbd + dname, tooltip) + Color.WHITE, selector));
PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), phrase, selector, dplayer, dname, (tag.contains("+") ? 1 : -1), dataX, dataY, dataZ, wid, rbd, action.contains("container"), tag.contains("+")); PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), phrase, selector, dplayer, dname, (tag.contains("+") ? 1 : -1), dataX, dataY, dataZ, wid, rbd, action.contains("container"), tag.contains("+"));
} }
else { else {
@ -444,20 +441,20 @@ public class StandardLookupThread implements Runnable {
tag = (daction != 0 ? Color.GREEN + "+" : Color.RED + "-"); tag = (daction != 0 ? Color.GREEN + "+" : Color.RED + "-");
} }
Chat.sendComponent(player, timeago + " " + separator + " " + Phrase.build(phrase, Color.WHITE + Color.BOLD + rbd + dplayer + Color.RESET + rbd, Color.GOLD + rbd + dname + Color.WHITE, selector)); Chat.sendComponent(player, timeago + " " + tag + " " + Phrase.build(phrase, Color.DARK_AQUA + rbd + dplayer + Color.WHITE + rbd, Color.DARK_AQUA + rbd + dname + Color.WHITE, selector));
PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), phrase, selector, dplayer, dname, (tag.contains("+") ? 1 : -1), dataX, dataY, dataZ, wid, rbd, false, tag.contains("+")); PluginChannelListener.getInstance().sendData(player, Integer.parseInt(time), phrase, selector, dplayer, dname, (tag.contains("+") ? 1 : -1), dataX, dataY, dataZ, wid, rbd, false, tag.contains("+"));
} }
action = (actions.size() == 0 ? " (" + action + ")" : ""); action = (actions.size() == 0 ? " (" + action + ")" : "");
Chat.sendComponent(player, Color.RESET + leftPadding + ChatUtils.getShowCoordinatesButton(dataX, dataY, dataZ) + " " + ChatUtils.getTeleportButton(wid, dataX, dataY, dataZ)); Chat.sendComponent(player, Color.WHITE + leftPadding + Color.GREY + "^ " + ChatUtils.getCoordinates(command.getName(), wid, dataX, dataY, dataZ, true, true) + Color.GREY + Color.ITALIC + action);
} }
} }
if (rows > displayResults) { if (rows > displayResults) {
int total_pages = (int) Math.ceil(rows / (displayResults + 0.0)); int total_pages = (int) Math.ceil(rows / (displayResults + 0.0));
/* if (actions.contains(6) || actions.contains(7) || actions.contains(9) || (actions.contains(4) && actions.contains(11))) { if (actions.contains(6) || actions.contains(7) || actions.contains(9) || (actions.contains(4) && actions.contains(11))) {
Chat.sendMessage(player, "-----"); Chat.sendMessage(player, "-----");
} */ }
Chat.sendComponent(player, ChatUtils.getPageNavigationVC(command.getName(), page, total_pages)); Chat.sendComponent(player, ChatUtils.getPageNavigation(command.getName(), page, total_pages));
} }
} }
else if (rows > 0) { else if (rows > 0) {

View file

@ -84,19 +84,13 @@ public class BlockLookup {
String timeAgo = ChatUtils.getTimeSince(resultTime, time, true); String timeAgo = ChatUtils.getTimeSince(resultTime, time, true);
if (!found) { if (!found) {
// resultTextBuilder = new StringBuilder(Color.WHITE + "----- " + Color.DARK_AQUA + "Griefus " + Color.WHITE + "----- " + ChatUtils.getCoordinates(command, worldId, x, y, z, false, false) + "\n"); resultTextBuilder = new StringBuilder(Color.WHITE + "----- " + Color.DARK_AQUA + "Griefus " + Color.WHITE + "----- " + ChatUtils.getCoordinates(command, worldId, x, y, z, false, false) + "\n");
// Lookup/Checker header
resultTextBuilder = new StringBuilder(StringUtils.makeHeader("CHECKER") +
" " + ChatUtils.getShowCoordinatesButton(x, y, z) +
(commandSender.hasPermission("coreprotect.teleport") ? " " + // TODO: change teleport permission key
ChatUtils.getTeleportButton(worldId, x, y, z) : "") + "\n");
} }
found = true; found = true;
Phrase phrase = Phrase.LOOKUP_BLOCK; Phrase phrase = Phrase.LOOKUP_BLOCK;
String selector = Selector.FIRST; String selector = Selector.FIRST;
String tag = Color.WHITE + "-"; String tag = Color.WHITE + "-";
String separator = Color.DARK_GREY + "-";
if (resultAction == 2 || resultAction == 3) { if (resultAction == 2 || resultAction == 3) {
phrase = Phrase.LOOKUP_INTERACTION; // {clicked|killed} phrase = Phrase.LOOKUP_INTERACTION; // {clicked|killed}
selector = (resultAction != 3 ? Selector.FIRST : Selector.SECOND); selector = (resultAction != 3 ? Selector.FIRST : Selector.SECOND);
@ -140,7 +134,7 @@ public class BlockLookup {
} */ } */
// Griefus end // Griefus end
resultTextBuilder.append(timeAgo + " " + separator + " ").append(Phrase.build(phrase, Color.WHITE + Color.BOLD + rbFormat + resultUser + Color.RESET + rbFormat, Color.GOLD + rbFormat + target + Color.WHITE, selector)).append("\n"); resultTextBuilder.append(timeAgo + " " + tag + " ").append(Phrase.build(phrase, Color.DARK_AQUA + rbFormat + resultUser + Color.WHITE + rbFormat, Color.DARK_AQUA + rbFormat + target + Color.WHITE, selector)).append("\n");
PluginChannelListener.getInstance().sendData(commandSender, resultTime, phrase, selector, resultUser, target, -1, x, y, z, worldId, rbFormat, false, tag.contains("+")); PluginChannelListener.getInstance().sendData(commandSender, resultTime, phrase, selector, resultUser, target, -1, x, y, z, worldId, rbFormat, false, tag.contains("+"));
} }
@ -149,8 +143,9 @@ public class BlockLookup {
if (found) { if (found) {
if (count > limit) { if (count > limit) {
// String pageInfo = Color.WHITE + "-----\n"; String pageInfo = Color.WHITE + "-----\n";
resultText = resultText + ChatUtils.getPageNavigationVC(command, page, totalPages) + "\n"; pageInfo = pageInfo + ChatUtils.getPageNavigation(command, page, totalPages) + "\n";
resultText = resultText + pageInfo;
} }
} }
else { else {

View file

@ -2,13 +2,7 @@ package net.coreprotect.utility;
import net.coreprotect.language.Phrase; import net.coreprotect.language.Phrase;
import net.coreprotect.language.Selector; import net.coreprotect.language.Selector;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@ -48,19 +42,6 @@ public class ChatUtils {
return message.append("</hover></click>").toString(); // griefus return message.append("</hover></click>").toString(); // griefus
} }
public static String getShowCoordinatesButton(int x, int y, int z) {
return "<dark_gray><hover:show_text:\"" +
"X: <yellow>" + x + "</yellow> " +
"Y: <yellow>" + y + "</yellow> " +
"Z: <yellow>" + z + "</yellow> " +
"\">[координаты]</hover></dark_gray>";
}
public static String getTeleportButton(int worldId, int x, int y, int z) {
// May break if worldId index is outdated
return "<dark_gray><click:run_command:/tppos " + x + " " + y + " " + z + " " + Bukkit.getWorlds().get(worldId).getName() +
">[телепортироваться]</click></dark_gray>";
}
public static String getPageNavigation(String command, int page, int totalPages) { public static String getPageNavigation(String command, int page, int totalPages) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
@ -162,57 +143,6 @@ public class ChatUtils {
return message.append(Color.WHITE + backArrow + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_PAGE, Color.WHITE + page + "/" + totalPages) + nextArrow + pagination).toString(); return message.append(Color.WHITE + backArrow + Color.DARK_AQUA + Phrase.build(Phrase.LOOKUP_PAGE, Color.WHITE + page + "/" + totalPages) + nextArrow + pagination).toString();
} }
public static String getPageNavigationVC(String command, int page, int totalPages) {
if (totalPages < 1)
return "";
Component separator = Component.text(" | ", NamedTextColor.DARK_GRAY, TextDecoration.BOLD);
String backButtonText = "[назад]";
String nextButtonText = "[далее]";
HoverEvent<Component> backButtonHover = HoverEvent
.showText(Component.text("Нажмите, чтобы перейти на предыдущую страницу", NamedTextColor.RED));
HoverEvent<Component> nextButtonHover = HoverEvent
.showText(Component.text("Нажмите, чтобы перейти на следующую страницу", NamedTextColor.GREEN));
ClickEvent backButtonClick = ClickEvent.runCommand("/" + command + " l " + (page - 1));
ClickEvent nextButtonClick = ClickEvent.runCommand("/" + command + " l " + (page + 1));
Component backButton;
if (page > 1) {
backButton = Component.text(backButtonText)
.color(NamedTextColor.RED)
.hoverEvent(backButtonHover)
.clickEvent(backButtonClick);
} else {
backButton = Component.text(backButtonText)
.color(NamedTextColor.GRAY)
.decorate(TextDecoration.ITALIC);
}
Component nextButton;
if (page < totalPages) {
nextButton = Component.text(nextButtonText)
.color(NamedTextColor.GREEN)
.hoverEvent(nextButtonHover)
.clickEvent(nextButtonClick);
} else {
nextButton = Component.text(nextButtonText)
.color(NamedTextColor.GRAY)
.decorate(TextDecoration.ITALIC);
}
Component pageCounter = Component.text(page + "/" + totalPages, NamedTextColor.GRAY);
Component navigation = Component.empty()
.append(backButton)
.append(separator)
.append(pageCounter)
.append(separator)
.append(nextButton);
return MiniMessage.miniMessage().serialize(navigation);
}
public static String getTimeSince(long resultTime, long currentTime, boolean component) { public static String getTimeSince(long resultTime, long currentTime, boolean component) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
double timeSince = currentTime - (resultTime + 0.00); double timeSince = currentTime - (resultTime + 0.00);

View file

@ -135,9 +135,4 @@ public class StringUtils {
} }
return list.toArray(new Integer[list.size()]); return list.toArray(new Integer[list.size()]);
} }
// VanillaCrafts
public static String makeHeader(String header) {
return "<gray>=============== </gray><red><bold>" + header + "</bold></red><gray> ===============</gray>";
}
} }