From 29bd2e1319266a85cbabc92d20dff8c18e23655a Mon Sep 17 00:00:00 2001 From: William Date: Tue, 26 Dec 2023 14:28:41 +0000 Subject: [PATCH] feat: Add `/husksync status` report menu --- .../resources/commodore/husksync.commodore | 1 + .../husksync/command/HuskSyncCommand.java | 67 +++++++++++++++++++ common/src/main/resources/locales/bg-bg.yml | 1 + common/src/main/resources/locales/de-de.yml | 1 + common/src/main/resources/locales/en-gb.yml | 1 + common/src/main/resources/locales/es-es.yml | 1 + common/src/main/resources/locales/it-it.yml | 1 + common/src/main/resources/locales/ja-jp.yml | 1 + common/src/main/resources/locales/ko-kr.yml | 1 + common/src/main/resources/locales/nl-nl.yml | 1 + common/src/main/resources/locales/pt-br.yml | 1 + common/src/main/resources/locales/ru-ru.yml | 1 + common/src/main/resources/locales/tr-tr.yml | 1 + common/src/main/resources/locales/uk-ua.yml | 1 + common/src/main/resources/locales/zh-cn.yml | 1 + common/src/main/resources/locales/zh-tw.yml | 1 + 16 files changed, 82 insertions(+) diff --git a/bukkit/src/main/resources/commodore/husksync.commodore b/bukkit/src/main/resources/commodore/husksync.commodore index ce2ab50a..9acdaaa3 100644 --- a/bukkit/src/main/resources/commodore/husksync.commodore +++ b/bukkit/src/main/resources/commodore/husksync.commodore @@ -1,5 +1,6 @@ husksync { update; about; + status; reload; } \ No newline at end of file diff --git a/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java b/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java index 4303ad2e..2b084a8a 100644 --- a/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java +++ b/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java @@ -21,6 +21,8 @@ package net.william278.husksync.command; import de.themoep.minedown.adventure.MineDown; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.JoinConfiguration; +import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.TextColor; import net.william278.desertwell.about.AboutMenu; import net.william278.desertwell.util.UpdateChecker; @@ -28,10 +30,12 @@ import net.william278.husksync.HuskSync; import net.william278.husksync.migrator.Migrator; import net.william278.husksync.user.CommandUser; import net.william278.husksync.user.OnlineUser; +import org.apache.commons.text.WordUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.function.Function; import java.util.logging.Level; import java.util.stream.Collectors; @@ -39,6 +43,7 @@ public class HuskSyncCommand extends Command implements TabProvider { private static final Map SUB_COMMANDS = Map.of( "about", false, + "status", true, "reload", true, "migrate", true, "update", true @@ -92,6 +97,13 @@ public class HuskSyncCommand extends Command implements TabProvider { switch (subCommand) { case "about" -> executor.sendMessage(aboutMenu.toComponent()); + case "status" -> { + getPlugin().getLocales().getLocale("system_status_header").ifPresent(executor::sendMessage); + executor.sendMessage(Component.join( + JoinConfiguration.newlines(), + Arrays.stream(StatusLine.values()).map(s -> s.get(plugin)).toList() + )); + } case "reload" -> { try { plugin.loadConfigs(); @@ -182,4 +194,59 @@ public class HuskSyncCommand extends Command implements TabProvider { }; } + private enum StatusLine { + PLUGIN_VERSION(plugin -> Component.text("v" + plugin.getPluginVersion().toStringWithoutMetadata()) + .append(plugin.getPluginVersion().getMetadata().isBlank() ? Component.empty() + : Component.text("(build " + plugin.getPluginVersion().getMetadata() + ")"))), + PLATFORM_TYPE(plugin -> Component.text(WordUtils.capitalizeFully(plugin.getPlatformType()))), + LANGUAGE(plugin -> Component.text(plugin.getSettings().getLanguage())), + MINECRAFT_VERSION(plugin -> Component.text(plugin.getMinecraftVersion().toString())), + JAVA_VERSION(plugin -> Component.text(System.getProperty("java.version"))), + JAVA_VENDOR(plugin -> Component.text(System.getProperty("java.vendor"))), + SYNC_MODE(plugin -> Component.text(WordUtils.capitalizeFully(plugin.getSettings().getSyncMode().toString()))), + DELAY_LATENCY(plugin -> Component.text(plugin.getSettings().getNetworkLatencyMilliseconds() + "ms")), + SERVER_NAME(plugin -> Component.text(plugin.getServerName())), + DATABASE_TYPE(plugin -> Component.text(plugin.getSettings().getDatabaseType().getDisplayName())), + IS_DATABASE_LOCAL(plugin -> getLocalhostBoolean(plugin.getSettings().getMySqlHost())), + IS_REDIS_SENTINEL(plugin -> getBoolean(!plugin.getSettings().getRedisSentinelMaster().isBlank())), + IS_REDIS_PASSWORD(plugin -> getBoolean(!plugin.getSettings().getRedisPassword().isBlank())), + IS_REDIS_SSL(plugin -> getBoolean(plugin.getSettings().redisUseSsl())), + IS_REDIS_LOCAL(plugin -> getLocalhostBoolean(plugin.getSettings().getRedisHost())), + DATA_TYPES(plugin -> Component.join( + JoinConfiguration.commas(true), + plugin.getRegisteredDataTypes().stream().map(i -> { + boolean enabled = plugin.getSettings().isSyncFeatureEnabled(i); + return Component.text(i.toString(), TextColor.color(enabled ? 0x00ff00 : 0xff0000)) + .hoverEvent(HoverEvent.showText(Component.text(enabled ? "Enabled" : "Disabled"))); + }).toList() + )); + + private final Function supplier; + + StatusLine(@NotNull Function supplier) { + this.supplier = supplier; + } + + @NotNull + private Component get(@NotNull HuskSync plugin) { + return Component.text( + WordUtils.capitalizeFully(name().replaceAll("_", " ")), + TextColor.color(0x848484) + ) + .append(Component.text(':')).append(Component.space()) + .append(supplier.apply(plugin)); + } + + @NotNull + private static Component getBoolean(boolean value) { + return Component.text(value ? "Yes" : "No", TextColor.color(value ? 0x00ff00 : 0xff0000)); + } + + @NotNull + private static Component getLocalhostBoolean(@NotNull String value) { + return getBoolean(value.equals("127.0.0.1") || value.equals("0.0.0.0") + || value.equals("localhost") || value.equals("::1")); + } + } + } diff --git a/common/src/main/resources/locales/bg-bg.yml b/common/src/main/resources/locales/bg-bg.yml index 0171cd20..b3954bcf 100644 --- a/common/src/main/resources/locales/bg-bg.yml +++ b/common/src/main/resources/locales/bg-bg.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| You are running the latest version of HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| A new version of HuskSync is available: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Презаредихме конфигурацията и файловете със съобщения.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Грешка:](#ff3300) [Неправилен синтаксис. Използвайте:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Грешка:](#ff3300) [Не можахме да открием играч с това име.](#ff7e5e)' error_no_permission: '[Грешка:](#ff3300) [Нямате право да използвате тази команда](#ff7e5e)' diff --git a/common/src/main/resources/locales/de-de.yml b/common/src/main/resources/locales/de-de.yml index b4220fad..f386f064 100644 --- a/common/src/main/resources/locales/de-de.yml +++ b/common/src/main/resources/locales/de-de.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'Import von v2' reload_complete: '[HuskSync](#00fb9a bold) [| Die Konfigurations- und Sprachdateien wurden neu geladen.](#00fb9a)\n[⚠ Stelle sicher, dass die Konfigurationsdateien auf allen Servern aktuell sind!](#00fb9a)\n[Ein Neustart wird benötigt, damit Konfigurations-Änderungen wirkbar werden.](#00fb9a italic)' up_to_date: '[HuskSync](#00fb9a bold) [| Du verwendest die neuste Version von HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| Eine neue Version von HuskSync ist verfügbar: v%1% (Aktuelle Version: v%2%).](#ff7e5e)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Fehler:](#ff3300) [Falsche Syntax. Nutze:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Fehler:](#ff3300) [Es konnte kein Spieler mit diesem Namen gefunden werden.](#ff7e5e)' error_no_permission: '[Fehler:](#ff3300) [Du hast nicht die benötigten Berechtigungen um diesen Befehl auszuführen](#ff7e5e)' diff --git a/common/src/main/resources/locales/en-gb.yml b/common/src/main/resources/locales/en-gb.yml index 5455fe74..6ef9b54f 100644 --- a/common/src/main/resources/locales/en-gb.yml +++ b/common/src/main/resources/locales/en-gb.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| You are running the latest version of HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| A new version of HuskSync is available: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Reloaded config and message files.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Error:](#ff3300) [Incorrect syntax. Usage:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Error:](#ff3300) [Could not find a player by that name.](#ff7e5e)' error_no_permission: '[Error:](#ff3300) [You do not have permission to execute this command](#ff7e5e)' diff --git a/common/src/main/resources/locales/es-es.yml b/common/src/main/resources/locales/es-es.yml index e5d097c2..ed75091a 100644 --- a/common/src/main/resources/locales/es-es.yml +++ b/common/src/main/resources/locales/es-es.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| You are running the latest version of HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| A new version of HuskSync is available: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Recargada la configuración y los archivos de lenguaje.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Error:](#ff3300) [Sintanxis incorrecta. Usa:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Error:](#ff3300) [No se ha podido encontrar un jugador con ese nombre.](#ff7e5e)' error_no_permission: '[Error:](#ff3300) [No tienes permisos para ejecutar este comando.](#ff7e5e)' diff --git a/common/src/main/resources/locales/it-it.yml b/common/src/main/resources/locales/it-it.yml index d4e6b427..bf07d31b 100644 --- a/common/src/main/resources/locales/it-it.yml +++ b/common/src/main/resources/locales/it-it.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| Il plugin è all''ultima versione disponibile (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| Disponibile una nuova versione: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Configurazione e messaggi ricaricati.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Errore:](#ff3300) [Sintassi errata. Usa:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Errore:](#ff3300) [Impossibile trovare un giocatore con questo nome.](#ff7e5e)' error_no_permission: '[Errore:](#ff3300) [Non hai il permesso di usare questo comando](#ff7e5e)' diff --git a/common/src/main/resources/locales/ja-jp.yml b/common/src/main/resources/locales/ja-jp.yml index 1656e06b..65ce07c4 100644 --- a/common/src/main/resources/locales/ja-jp.yml +++ b/common/src/main/resources/locales/ja-jp.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| HuskSyncの最新バージョンを実行しています(v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| HuskSyncの最新バージョンが更新されています: v%1% (実行中: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| 設定ファイルとメッセージファイルを再読み込みしました。](#00fb9a)\n[⚠ すべてのサーバーで設定ファイルが最新であることを確認してください!](#00fb9a)\n[設定の変更を有効にするには再起動が必要です。](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Error:](#ff3300) [構文が正しくありません。使用法:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&クリックでサジェスト suggest_command=%1%)' error_invalid_player: '[Error:](#ff3300) [そのプレイヤーは見つかりませんでした](#ff7e5e)' error_no_permission: '[Error:](#ff3300) [このコマンドを実行する権限がありません](#ff7e5e)' diff --git a/common/src/main/resources/locales/ko-kr.yml b/common/src/main/resources/locales/ko-kr.yml index 6b310be7..bdb21f05 100644 --- a/common/src/main/resources/locales/ko-kr.yml +++ b/common/src/main/resources/locales/ko-kr.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| 가장 최신 버전의 HuskSync를 실행 중입니다 (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| 새로운 버전의 HuskSync가 존재합니다: v%1% (현재 버전: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| 콘피그와 메시지 파일을 다시 불러왔습니다.](#00fb9a)\n[⚠ 모든 서버의 컨피그 파일을 변경하였는지 확인하세요!](#00fb9a)\n[몇몇 설정은 재시작 후에 적용됩니다.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[오류:](#ff3300) [잘못된 사용법. 사용법:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&클릭하여 입력할 수 있습니다. suggest_command=%1%)' error_invalid_player: '[오류:](#ff3300) [해당 이름의 사용자를 찾을 수 없습니다.](#ff7e5e)' error_no_permission: '[오류:](#ff3300) [해당 명령어를 사용할 권한이 없습니다.](#ff7e5e)' diff --git a/common/src/main/resources/locales/nl-nl.yml b/common/src/main/resources/locales/nl-nl.yml index 947e2393..d459e5ce 100644 --- a/common/src/main/resources/locales/nl-nl.yml +++ b/common/src/main/resources/locales/nl-nl.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| Je gebruikt de nieuwste versie van HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| Er is een nieuwe versie van HuskSync beschikbaar: v%1% (huidige versie: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Configuratie- en berichtbestanden opnieuw geladen.](#00fb9a)\n[⚠ Controleer of de configuratiebestanden up-to-date zijn op alle servers!](#00fb9a)\n[Een herstart is nodig voor de configuratiewijzigingen van kracht te laten worden.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Error:](#ff3300) [Onjuiste syntaxis. Gebruik:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Error:](#ff3300) [Kan geen speler met die naam vinden.](#ff7e5e)' error_no_permission: '[Error:](#ff3300) [Je hebt geen toestemming om deze opdracht uit te voeren](#ff7e5e)' diff --git a/common/src/main/resources/locales/pt-br.yml b/common/src/main/resources/locales/pt-br.yml index b274e22b..4e08aaca 100644 --- a/common/src/main/resources/locales/pt-br.yml +++ b/common/src/main/resources/locales/pt-br.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| You are running the latest version of HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| A new version of HuskSync is available: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Arquivos de configuração e mensagens recarregados.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Error:](#ff3300) [Sintaxe incorreta. Utilize:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Error:](#ff3300) [Não foi possível encontrar um jogador com esse nome.](#ff7e5e)' error_no_permission: '[Error:](#ff3300) [Você não tem permissão para executar este comando](#ff7e5e)' diff --git a/common/src/main/resources/locales/ru-ru.yml b/common/src/main/resources/locales/ru-ru.yml index be15ae39..5e5cf01e 100644 --- a/common/src/main/resources/locales/ru-ru.yml +++ b/common/src/main/resources/locales/ru-ru.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'конвертация с v2' up_to_date: '[HuskSync](#00fb9a bold) [| Вы используете последнюю версию HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| Доступна новая версия HuskSync: v%1% (текущая: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Конфигурация и файлы локализации перезагружены.](#00fb9a)\n[⚠ Убедитесь, что файлы конфигурации обновлены на всех серверах!](#00fb9a)\n[Необходима перезагрузка для вступления изменений конфигурации в силу.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Ошибка:](#ff3300) [Неправильный синтаксис. Используйте:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Ошибка:](#ff3300) [Не удалось найти игрока с данным именем.](#ff7e5e)' error_no_permission: '[Ошибка:](#ff3300) [У вас недостаточно прав для выполнения данной команды.](#ff7e5e)' diff --git a/common/src/main/resources/locales/tr-tr.yml b/common/src/main/resources/locales/tr-tr.yml index 818e757c..25fabef8 100644 --- a/common/src/main/resources/locales/tr-tr.yml +++ b/common/src/main/resources/locales/tr-tr.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| HuskSync\''in en son sürümünü kullanıyorsunuz (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| HuskSync\''in yeni bir sürümü mevcut: v%1% (kullanılan sürüm: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Yapılandırma ve mesaj dosyaları yeniden yüklendi.](#00fb9a)\n[⚠ Lütfen yapılandırma dosyalarının tüm sunucularda güncel olduğundan emin olun!](#00fb9a)\n[Yapılandırma değişikliklerinin etkili olabilmesi için bir yeniden başlatma gereklidir.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Hata:](#ff3300) [Yanlış sözdizimi. Kullanım:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Öneri için tıklayın Suggest_command=%1%)' error_invalid_player: '[Hata:](#ff3300) [Bu isimde bir oyuncu bulunamadı.](#ff7e5e)' error_no_permission: '[Hata:](#ff3300) [Bu komutu gerçekleştirmek için izniniz yok](#ff7e5e)' diff --git a/common/src/main/resources/locales/uk-ua.yml b/common/src/main/resources/locales/uk-ua.yml index 7f2704c2..00eeb76b 100644 --- a/common/src/main/resources/locales/uk-ua.yml +++ b/common/src/main/resources/locales/uk-ua.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| You are running the latest version of HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| A new version of HuskSync is available: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| Перезавантажено конфіґ та файли повідомлень.](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[Помилка:](#ff3300) [Неправильний синтакс. Використання:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[Помилка:](#ff3300) [Гравця не знайдено](#ff7e5e)' error_no_permission: '[Помилка:](#ff3300) [Ввас немає дозволу на використання цієї команди](#ff7e5e)' diff --git a/common/src/main/resources/locales/zh-cn.yml b/common/src/main/resources/locales/zh-cn.yml index f2ce0240..2fba34bb 100644 --- a/common/src/main/resources/locales/zh-cn.yml +++ b/common/src/main/resources/locales/zh-cn.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: '从v2转换' up_to_date: '[HuskSync](#00fb9a bold) [| 你正在使用最新版本的HuskSync (v%1%)](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| 一个新版本的HuskSync已经可以更新: v%1% (当前: v%2%)](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| 插件配置和语言文件已重载.](#00fb9a)\n[⚠ 确保所有服务器上的配置文件都是最新的!](#00fb9a)\n[需要重新启动配置更改才能生效.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: ':](#ff3300) [格式错误, 使用方法:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&点击建议 suggest_command=%1%)' error_invalid_player: '[错误:](#ff3300) [无法找到目标玩家.](#ff7e5e)' error_no_permission: '[错误:](#ff3300) [你没有执行此指令的权限](#ff7e5e)' diff --git a/common/src/main/resources/locales/zh-tw.yml b/common/src/main/resources/locales/zh-tw.yml index 00329099..54f0956f 100644 --- a/common/src/main/resources/locales/zh-tw.yml +++ b/common/src/main/resources/locales/zh-tw.yml @@ -48,6 +48,7 @@ save_cause_converted_from_v2: 'converted from v2' up_to_date: '[HuskSync](#00fb9a bold) [| 您運行的是最新版本的 HuskSync (v%1%).](#00fb9a)' update_available: '[HuskSync](#ff7e5e bold) [| 發現可用的新版本: v%1% (running: v%2%).](#ff7e5e)' reload_complete: '[HuskSync](#00fb9a bold) [| 已重新載入配置和訊息文件](#00fb9a)\n[⚠ Ensure config files are up-to-date on all servers!](#00fb9a)\n[A restart is needed for config changes to take effect.](#00fb9a italic)' +system_status_header: '[HuskSync](#00fb9a bold) [| System status report:](#00fb9a)' error_invalid_syntax: '[錯誤:](#ff3300) [語法不正確,用法:](#ff7e5e) [%1%](#ff7e5e italic show_text=&#ff7e5e&Click to suggest suggest_command=%1%)' error_invalid_player: '[錯誤:](#ff3300) [找不到這位玩家](#ff7e5e)' error_no_permission: '[錯誤:](#ff3300) [您沒有權限執行這個指令](#ff7e5e)'