diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandDebug.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandDebug.java new file mode 100644 index 000000000..662c4ef3c --- /dev/null +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandDebug.java @@ -0,0 +1,39 @@ +package art.arcane.iris.command; + +import art.arcane.iris.Iris; +import art.arcane.iris.configuration.IrisSettings; +import art.arcane.iris.localization.BukkitCommandMessagesExtended; +import art.arcane.iris.localization.IrisLanguage; +import art.arcane.iris.command.DirectorExecutor; +import art.arcane.volmlib.util.director.annotations.Director; +import art.arcane.volmlib.util.director.annotations.Param; +import art.arcane.volmlib.util.director.help.DirectorMiniMenu; +import art.arcane.volmlib.util.localization.MessageArgument; +import art.arcane.volmlib.util.plugin.ComponentMessenger; +import org.bukkit.command.CommandSender; + +@Director(name = "debug", description = "Iris diagnostic tools", descriptionKey = "iris.director.commanddebug.description") +public final class CommandDebug implements DirectorExecutor { + @Director(name = "dump", sync = true, description = "Create and optionally upload a diagnostic report", descriptionKey = "iris.director.commandiris.director.debugdump") + public void dump( + @Param(name = "upload", defaultValue = "true", description = "Upload the report to mclo.gs", descriptionKey = "iris.director.commandiris.param.debugdump_upload") boolean upload, + @Param(name = "sender", contextual = true) CommandSender sender + ) { + Iris.instance.debugDump().request(sender, upload); + } + + @Director(sync = true, description = "Print version information", descriptionKey = "iris.director.commandiris.director.print_version_information") + public void version(@Param(name = "sender", contextual = true) CommandSender sender) { + ComponentMessenger.sendMarkup(sender, DirectorMiniMenu.version( + "Iris", Iris.instance.getDescription().getVersion(), DirectorMiniMenu.Theme.irisGreen())); + } + + @Director(description = "Toggle debug", descriptionKey = "iris.director.commandiris.director.toggle_debug") + public void toggle() { + boolean enabled = !IrisSettings.get().getGeneral().isDebug(); + IrisSettings.get().getGeneral().setDebug(enabled); + IrisSettings.get().forceSave(); + sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_SET_DEBUG, + MessageArgument.untrusted("to", enabled))); + } +} diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandIris.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandIris.java index 5bff5869c..271ab1c91 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandIris.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandIris.java @@ -93,16 +93,9 @@ public class CommandIris implements DirectorExecutor { private CommandPack pack; private CommandFind find; private CommandDatapack datapack; + private CommandDebug debug; VolmitSender sender = Iris.getSender(); - @Director(name = "debugdump", sync = true, description = "Create and optionally upload a diagnostic report", descriptionKey = "iris.director.commandiris.director.debugdump") - public void debugdump( - @Param(name = "upload", defaultValue = "true", description = "Upload the report to mclo.gs", descriptionKey = "iris.director.commandiris.param.debugdump_upload") boolean upload, - @Param(name = "sender", contextual = true) CommandSender sender - ) { - Iris.instance.debugDump().request(sender, upload); - } - @Director(description = "Choose your language or the server default") public void language() { Iris.instance.selectLanguage(sender().getS(), new String[0]); @@ -313,9 +306,9 @@ public class CommandIris implements DirectorExecutor { } } - @Director(description = "Print version information", descriptionKey = "iris.director.commandiris.director.print_version_information") - public void version() { - sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_IRIS_V_BY_VOLMIT_SOFTWARE, MessageArgument.untrusted("value", Iris.instance.getDescription().getVersion()))); + @Director(hidden = true, sync = true, description = "Print version information", descriptionKey = "iris.director.commandiris.director.print_version_information") + public void version(@Param(name = "sender", contextual = true) CommandSender sender) { + debug.version(sender); } @Director(description = "Print world height information", descriptionKey = "iris.director.commandiris.director.print_world_height_information", origin = DirectorOrigin.PLAYER) @@ -439,14 +432,6 @@ public class CommandIris implements DirectorExecutor { return failure.getMessage(); } - @Director(description = "Toggle debug", descriptionKey = "iris.director.commandiris.director.toggle_debug") - public void debug() { - boolean to = !IrisSettings.get().getGeneral().isDebug(); - IrisSettings.get().getGeneral().setDebug(to); - IrisSettings.get().forceSave(); - sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_SET_DEBUG, MessageArgument.untrusted("to", to))); - } - @Director(description = "Download a project.", descriptionKey = "iris.director.commandiris.director.download_project", aliases = "dl") public void download( @Param(name = "pack", description = "The built-in pack to download", descriptionKey = "iris.director.commandiris.param.pack_download", defaultValue = NO_DOWNLOAD_SOURCE, customHandler = DownloadPackHandler.class) diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandSVC.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandSVC.java index bc27424c8..1be4cae3e 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandSVC.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandSVC.java @@ -188,7 +188,7 @@ public class CommandSVC implements IrisService, CommandExecutor, TabCompleter, D Iris.instance.selectLanguage(sender, Arrays.copyOfRange(args, 1, args.length)); return; } - if (!(args.length > 0 && args[0].equalsIgnoreCase("debugdump")) + if (!(args.length > 1 && args[0].equalsIgnoreCase("debug") && args[1].equalsIgnoreCase("dump")) && !sender.hasPermission(ROOT_PERMISSION)) { ComponentMessenger.sendSection(sender, IrisLanguage.text( IrisMessages.COMMAND_PERMISSION_DENIED, diff --git a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandDebugTest.java b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandDebugTest.java new file mode 100644 index 000000000..239424daf --- /dev/null +++ b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandDebugTest.java @@ -0,0 +1,87 @@ +package art.arcane.iris.command; + +import art.arcane.iris.Iris; +import art.arcane.iris.command.CommandSVC; +import art.arcane.iris.world.task.J; +import art.arcane.volmlib.util.diagnostics.BukkitDebugDump; +import art.arcane.volmlib.util.director.DirectorEngineOptions; +import art.arcane.volmlib.util.director.compat.DirectorEngineFactory; +import art.arcane.volmlib.util.director.context.DirectorContextRegistry; +import art.arcane.volmlib.util.director.help.DirectorMiniMenu; +import art.arcane.volmlib.util.director.runtime.DirectorInvocation; +import art.arcane.volmlib.util.director.runtime.DirectorRuntimeEngine; +import art.arcane.volmlib.util.director.runtime.DirectorSender; +import art.arcane.volmlib.util.plugin.ComponentMessenger; +import org.bukkit.command.CommandSender; +import org.junit.Test; +import org.mockito.MockedStatic; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class CommandDebugTest { + @Test + public void nestedDumpPreservesUploadDefaultAndLocalOnlyOption() { + Iris previousPlugin = Iris.instance; + Iris plugin = mock(Iris.class); + Iris.instance = plugin; + BukkitDebugDump dump = mock(BukkitDebugDump.class); + CommandSender sender = mock(CommandSender.class); + DirectorSender invocationSender = mock(DirectorSender.class); + when(plugin.debugDump()).thenReturn(dump); + when(invocationSender.getName()).thenReturn("Console"); + DirectorContextRegistry contexts = new DirectorContextRegistry(); + contexts.register(CommandSender.class, (invocation, arguments) -> sender); + + try (MockedStatic iris = mockStatic(Iris.class)) { + DirectorRuntimeEngine engine = DirectorEngineFactory.create(new CommandIris(), + DirectorEngineOptions.builder().contexts(contexts).build()); + + assertTrue(engine.execute(new DirectorInvocation(invocationSender, "iris", List.of("debug", "dump"))).isSuccess()); + assertTrue(engine.execute(new DirectorInvocation(invocationSender, "iris", List.of("debug", "dump", "upload=false"))).isSuccess()); + verify(dump).request(sender, true); + verify(dump).request(sender, false); + assertEquals(List.of("dump", "toggle", "version"), + DirectorMiniMenu.resolveHelp(engine, List.of("debug")).orElseThrow().entries().stream() + .map(entry -> entry.getDescriptor().getName()).sorted().toList()); + } finally { + Iris.instance = previousPlugin; + } + } + + @Test + public void canonicalDumpReachesItsOwnPermissionCheckWithoutTheAdminPermission() { + CommandSender sender = mock(CommandSender.class); + + try (MockedStatic scheduling = mockStatic(J.class)) { + new CommandSVC().executeRoot(sender, "iris", new String[]{"debug", "dump", "upload=false"}); + + scheduling.verify(() -> J.aBukkit(any(Runnable.class))); + verify(sender, never()).hasPermission("iris.all"); + } + } + + @Test + public void otherDebugCommandsStillRequireTheAdminPermission() { + CommandSender sender = mock(CommandSender.class); + + try (MockedStatic scheduling = mockStatic(J.class); + MockedStatic messages = mockStatic(ComponentMessenger.class)) { + CommandSVC commands = new CommandSVC(); + commands.executeRoot(sender, "iris", new String[]{"debug", "version"}); + commands.executeRoot(sender, "iris", new String[]{"debug", "toggle"}); + commands.executeRoot(sender, "iris", new String[]{"debug", "ver"}); + commands.executeRoot(sender, "iris", new String[]{"debug", "tog"}); + + scheduling.verifyNoInteractions(); + } + } +} diff --git a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandVersionTest.java b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandVersionTest.java new file mode 100644 index 000000000..d0cee466e --- /dev/null +++ b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/command/CommandVersionTest.java @@ -0,0 +1,57 @@ +package art.arcane.iris.command; + +import art.arcane.iris.Iris; +import art.arcane.volmlib.util.director.DirectorEngineOptions; +import art.arcane.volmlib.util.director.compat.DirectorEngineFactory; +import art.arcane.volmlib.util.director.context.DirectorContextRegistry; +import art.arcane.volmlib.util.director.help.DirectorMiniMenu; +import art.arcane.volmlib.util.director.runtime.DirectorInvocation; +import art.arcane.volmlib.util.director.runtime.DirectorRuntimeEngine; +import art.arcane.volmlib.util.director.runtime.DirectorSender; +import art.arcane.volmlib.util.plugin.ComponentMessenger; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.PluginDescriptionFile; +import org.junit.Test; +import org.mockito.MockedStatic; + +import java.util.List; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.when; + +public class CommandVersionTest { + @Test + public void nestedVersionAndHiddenShortcutUseTheSameInstalledVersion() { + Iris previousPlugin = Iris.instance; + Iris plugin = mock(Iris.class); + Iris.instance = plugin; + CommandSender sender = mock(CommandSender.class); + DirectorSender invocationSender = mock(DirectorSender.class); + when(plugin.getDescription()).thenReturn(new PluginDescriptionFile("Iris", "3.2.1-test", "test.Plugin")); + when(invocationSender.getName()).thenReturn("Console"); + DirectorContextRegistry contexts = new DirectorContextRegistry(); + contexts.register(CommandSender.class, (invocation, arguments) -> sender); + try (MockedStatic iris = mockStatic(Iris.class); + MockedStatic messages = mockStatic(ComponentMessenger.class)) { + DirectorRuntimeEngine engine = DirectorEngineFactory.create(new CommandIris(), + DirectorEngineOptions.builder().contexts(contexts).build()); + + assertTrue(engine.execute(new DirectorInvocation(invocationSender, "iris", List.of("debug", "version"))).isSuccess()); + assertTrue(engine.execute(new DirectorInvocation(invocationSender, "iris", List.of("version"))).isSuccess()); + messages.verify(() -> ComponentMessenger.sendMarkup(sender, + DirectorMiniMenu.version("Iris", "3.2.1-test", DirectorMiniMenu.Theme.irisGreen())), times(2)); + assertFalse(DirectorMiniMenu.resolveHelp(engine, List.of()).orElseThrow().entries().stream() + .anyMatch(entry -> entry.getDescriptor().getName().equals("version"))); + assertTrue(DirectorMiniMenu.resolveHelp(engine, List.of("debug")).orElseThrow().entries().stream() + .anyMatch(entry -> entry.getDescriptor().getName().equals("version"))); + assertTrue(DirectorMiniMenu.resolveHelp(engine, List.of("debug")).orElseThrow().entries().stream() + .anyMatch(entry -> entry.getDescriptor().getName().equals("toggle"))); + } finally { + Iris.instance = previousPlugin; + } + } +} diff --git a/core/src/main/java/art/arcane/iris/localization/BukkitCommandMessagesExtended.java b/core/src/main/java/art/arcane/iris/localization/BukkitCommandMessagesExtended.java index aa24913d1..dc7784bb8 100644 --- a/core/src/main/java/art/arcane/iris/localization/BukkitCommandMessagesExtended.java +++ b/core/src/main/java/art/arcane/iris/localization/BukkitCommandMessagesExtended.java @@ -194,10 +194,6 @@ public final class BukkitCommandMessagesExtended { "iris.bukkit.commandiris.specified_player_does_not_exist", C.RED + "The specified player does not exist." ); - public static final TextKey COMMAND_IRIS_IRIS_V_BY_VOLMIT_SOFTWARE = TextKey.of( - "iris.bukkit.commandiris.iris_v_by_volmit_software", - C.GREEN + "Iris v" + "{value}" + " by Volmit Software" - ); public static final TextKey COMMAND_IRIS_TO = TextKey.of( "iris.bukkit.commandiris.to", C.GREEN + "" + "{value}" + " to " + "{value2}" @@ -852,7 +848,6 @@ public final class BukkitCommandMessagesExtended { COMMAND_IRIS_EXCEPTION_RAISED_DURING_CREATION_SEE_CONSOLE_MORE_DETAILS, COMMAND_IRIS_SUCCESSFULLY_CREATED_YOUR_WORLD, COMMAND_IRIS_SPECIFIED_PLAYER_DOES_NOT_EXIST, - COMMAND_IRIS_IRIS_V_BY_VOLMIT_SOFTWARE, COMMAND_IRIS_TO, COMMAND_IRIS_TOTAL_HEIGHT, COMMAND_IRIS_IRIS_WORLDS, diff --git a/core/src/main/java/art/arcane/iris/localization/DirectorCommandMessages.java b/core/src/main/java/art/arcane/iris/localization/DirectorCommandMessages.java index f19a2eb08..4cd012f9b 100644 --- a/core/src/main/java/art/arcane/iris/localization/DirectorCommandMessages.java +++ b/core/src/main/java/art/arcane/iris/localization/DirectorCommandMessages.java @@ -6,6 +6,7 @@ import art.arcane.volmlib.util.localization.TextKey; import java.util.List; public final class DirectorCommandMessages { + public static final TextKey DEBUG_DESCRIPTION = TextKey.of("iris.director.commanddebug.description", "Iris diagnostic tools"); public static final TextKey DEBUG_DUMP_DESCRIPTION = TextKey.of("iris.director.commandiris.director.debugdump", "Create and optionally upload a diagnostic report"); public static final TextKey DEBUG_DUMP_UPLOAD = TextKey.of("iris.director.commandiris.param.debugdump_upload", "Upload the report to mclo.gs"); public static final TextKey COMMAND_DATAPACK_DIRECTOR_DOWNLOAD_MANAGE_EXTERNAL_DATAPACK_IMPORTS_MODRINTH = TextKey.of( @@ -874,6 +875,7 @@ public final class DirectorCommandMessages { ); private static final List KEYS = List.of( + DEBUG_DESCRIPTION, DEBUG_DUMP_DESCRIPTION, DEBUG_DUMP_UPLOAD, COMMAND_DATAPACK_DIRECTOR_DOWNLOAD_MANAGE_EXTERNAL_DATAPACK_IMPORTS_MODRINTH, diff --git a/core/src/main/resources/languages/de_DE.toml b/core/src/main/resources/languages/de_DE.toml index fca797846..0ddb8f08b 100644 --- a/core/src/main/resources/languages/de_DE.toml +++ b/core/src/main/resources/languages/de_DE.toml @@ -272,6 +272,9 @@ # {zoom} Aktuelle Zoomstufe der Vorschau. # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris-Diagnosewerkzeuge" + [iris.director.commandiris] "director.debugdump" = "Einen Diagnosebericht erstellen und optional hochladen" "param.debugdump_upload" = "Den Bericht zu mclo.gs hochladen" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cBei der Erstellung ist eine Ausnahme aufgetreten. Weitere Details findest du in der Konsole." successfully_created_your_world = "§aDeine Welt wurde erfolgreich erstellt!" specified_player_does_not_exist = "§cDer angegebene Spieler existiert nicht." -iris_v_by_volmit_software = "§aIris v{value} von Volmit Software" to = "§a{value} bis {value2}" total_height = "§aGesamthöhe: {value}" iris_worlds = "§9Iris-Welten: " diff --git a/core/src/main/resources/languages/es_ES.toml b/core/src/main/resources/languages/es_ES.toml index 0055793be..a1f716c5a 100644 --- a/core/src/main/resources/languages/es_ES.toml +++ b/core/src/main/resources/languages/es_ES.toml @@ -272,6 +272,9 @@ # {zoom} Nivel de zoom actual de la vista previa. # === End Iris language guide === +[iris.director.commanddebug] +description = "Herramientas de diagnóstico de Iris" + [iris.director.commandiris] "director.debugdump" = "Crear y subir opcionalmente un informe de diagnóstico" "param.debugdump_upload" = "Subir el informe a mclo.gs" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cSe produjo una excepción durante la creación. Consulta la consola para obtener más detalles." successfully_created_your_world = "§a¡Tu mundo se creó correctamente!" specified_player_does_not_exist = "§cEl jugador especificado no existe." -iris_v_by_volmit_software = "§aIris v{value} por Volmit Software" to = "§a{value} a {value2}" total_height = "§aAltura total: {value}" iris_worlds = "§9Mundos de Iris: " diff --git a/core/src/main/resources/languages/fi_FI.toml b/core/src/main/resources/languages/fi_FI.toml index 82c558bad..24fa31627 100644 --- a/core/src/main/resources/languages/fi_FI.toml +++ b/core/src/main/resources/languages/fi_FI.toml @@ -277,6 +277,9 @@ # {zoom} Esikatselun nykyinen zoomaustaso. # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris-diagnostiikkatyökalut" + [iris.director.commandiris] "director.debugdump" = "Luo diagnostiikkaraportti ja lähetä se halutessasi" "param.debugdump_upload" = "Lähetä raportti mclo.gs-palveluun" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cLuomisen aikana nostettu poikkeus. Katso lisätietoja konsolista." successfully_created_your_world = "§aOnnistuneesti loin maailmasi!" specified_player_does_not_exist = "§cMääriteltyä pelaajaa ei ole olemassa." -iris_v_by_volmit_software = "§aIris{value} mennessä Volmit Software" to = "§a{value} - {value2}" total_height = "§aKokonaiskorkeus: {value}" iris_worlds = "§9Iris Worlds. " diff --git a/core/src/main/resources/languages/fr_FR.toml b/core/src/main/resources/languages/fr_FR.toml index 1a748ee93..09f246b59 100644 --- a/core/src/main/resources/languages/fr_FR.toml +++ b/core/src/main/resources/languages/fr_FR.toml @@ -272,6 +272,9 @@ # {zoom} Niveau de zoom actuel de l’aperçu. # === End Iris language guide === +[iris.director.commanddebug] +description = "Outils de diagnostic Iris" + [iris.director.commandiris] "director.debugdump" = "Créer un rapport de diagnostic et le publier si souhaité" "param.debugdump_upload" = "Publier le rapport sur mclo.gs" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cUne exception s'est produite pendant la création. Consultez la console pour plus de détails." successfully_created_your_world = "§aVotre monde a été créé avec succès !" specified_player_does_not_exist = "§cLe joueur indiqué n'existe pas." -iris_v_by_volmit_software = "§aIris v{value} par Volmit Software" to = "§a{value} à {value2}" total_height = "§aHauteur totale : {value}" iris_worlds = "§9Mondes Iris : " diff --git a/core/src/main/resources/languages/he_IL.toml b/core/src/main/resources/languages/he_IL.toml index ec56b1cbd..a6d4646a3 100644 --- a/core/src/main/resources/languages/he_IL.toml +++ b/core/src/main/resources/languages/he_IL.toml @@ -277,6 +277,9 @@ # {zoom} רמת ההגדלה הנוכחית של התצוגה המקדימה. # === End Iris language guide === +[iris.director.commanddebug] +description = "כלי אבחון של Iris" + [iris.director.commandiris] "director.debugdump" = "יצירת דוח אבחון והעלאתו לפי בחירה" "param.debugdump_upload" = "העלאת הדוח אל mclo.gs" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cלמעטים שגדלו במהלך הבריאה. ראו את הקונסולה לפרטים נוספים." successfully_created_your_world = "§aיצרתם בהצלחה את עולמכם!" specified_player_does_not_exist = "§cהשחקן שצוין אינו קיים." -iris_v_by_volmit_software = "§aאיריס v{value} על ידי Volmit Software" to = "§a{value} כדי {value2}" total_height = "§aגובה מוחלט: {value}" iris_worlds = "§9אייריס וורלד: " diff --git a/core/src/main/resources/languages/it_IT.toml b/core/src/main/resources/languages/it_IT.toml index cb0d780ff..09e701923 100644 --- a/core/src/main/resources/languages/it_IT.toml +++ b/core/src/main/resources/languages/it_IT.toml @@ -272,6 +272,9 @@ # {zoom} Livello di zoom attuale dell’anteprima. # === End Iris language guide === +[iris.director.commanddebug] +description = "Strumenti di diagnostica Iris" + [iris.director.commandiris] "director.debugdump" = "Crea un rapporto diagnostico e caricalo facoltativamente" "param.debugdump_upload" = "Carica il rapporto su mclo.gs" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cSi è verificata un'eccezione durante la creazione. Consulta la console per maggiori dettagli." successfully_created_your_world = "§aCreato con successo il tuo mondo!" specified_player_does_not_exist = "§cIl giocatore specificato non esiste." -iris_v_by_volmit_software = "§aIris v{value} di Volmit Software" to = "§a{value} a {value2}" total_height = "§aAltezza totale: {value}" iris_worlds = "§9Mondi Iris: " diff --git a/core/src/main/resources/languages/ja-JP.toml b/core/src/main/resources/languages/ja-JP.toml index c6effd248..e07683bf3 100644 --- a/core/src/main/resources/languages/ja-JP.toml +++ b/core/src/main/resources/languages/ja-JP.toml @@ -275,6 +275,9 @@ # {zoom} プレビューの現在のズーム倍率。 # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris診断ツール" + [iris.director.commandiris] "director.debugdump" = "診断レポートを作成し、必要に応じてアップロードする" "param.debugdump_upload" = "レポートを mclo.gs にアップロードする" @@ -519,7 +522,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§c作成中に例外が発生しました。詳細はコンソールを確認してください。" successfully_created_your_world = "§aワールドを作成しました!" specified_player_does_not_exist = "§c指定されたプレイヤーは存在しません。" -iris_v_by_volmit_software = "§aIris v{value} by Volmit Software" to = "§a{value} から {value2}" total_height = "§a総高さ: {value}" iris_worlds = "§9Iris ワールド: " diff --git a/core/src/main/resources/languages/ko_KR.toml b/core/src/main/resources/languages/ko_KR.toml index 1b2d6c1bf..84e7aaed3 100644 --- a/core/src/main/resources/languages/ko_KR.toml +++ b/core/src/main/resources/languages/ko_KR.toml @@ -275,6 +275,9 @@ # {zoom} 현재 미리보기 확대/축소 수준. # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris 진단 도구" + [iris.director.commandiris] "director.debugdump" = "진단 보고서를 생성하고 선택적으로 업로드" "param.debugdump_upload" = "보고서를 mclo.gs에 업로드" @@ -519,7 +522,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§c창조 중 발생한 예외. 자세한 내용은 콘솔을 참조하십시오." successfully_created_your_world = "§a세상을 성공적으로 만들었습니다!" specified_player_does_not_exist = "§c지정된 플레이어는 존재하지 않습니다." -iris_v_by_volmit_software = "§a아이리스 v{value} Volmit 소프트웨어" to = "§a{value} 으로 {value2}" total_height = "§a총 고도: {value}" iris_worlds = "§9Iris 세계: " diff --git a/core/src/main/resources/languages/lt_LT.toml b/core/src/main/resources/languages/lt_LT.toml index 891233ba4..d26e4eb95 100644 --- a/core/src/main/resources/languages/lt_LT.toml +++ b/core/src/main/resources/languages/lt_LT.toml @@ -277,6 +277,9 @@ # {zoom} Dabartinis peržiūros mastelio lygis. # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris diagnostikos įrankiai" + [iris.director.commandiris] "director.debugdump" = "Sukurti diagnostikos ataskaitą ir pasirinktinai ją įkelti" "param.debugdump_upload" = "Įkelti ataskaitą į mclo.gs" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cSukūrimo metu iškelta išimtis. Daugiau informacijos rasite konsolėje." successfully_created_your_world = "§aSėkmingai sukūrė savo pasaulį!" specified_player_does_not_exist = "§cNurodytasis žaidėjas neegzistuoja." -iris_v_by_volmit_software = "§aIris prieš{value} pagal Volmit programinė įranga" to = "§a{value} iki {value2}" total_height = "§aBendras aukštis: {value}" iris_worlds = "§9Iris pasauliai: " diff --git a/core/src/main/resources/languages/nl_NL.toml b/core/src/main/resources/languages/nl_NL.toml index aeb8c7c62..c6968a19c 100644 --- a/core/src/main/resources/languages/nl_NL.toml +++ b/core/src/main/resources/languages/nl_NL.toml @@ -272,6 +272,9 @@ # {zoom} Huidig zoomniveau van de voorvertoning. # === End Iris language guide === +[iris.director.commanddebug] +description = "Diagnosehulpmiddelen voor Iris" + [iris.director.commandiris] "director.debugdump" = "Maak een diagnostisch rapport en upload het desgewenst" "param.debugdump_upload" = "Upload het rapport naar mclo.gs" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cUitzondering bij de schepping. Zie de console voor meer details." successfully_created_your_world = "§aSuccesvol jullie wereld gecreëerd!" specified_player_does_not_exist = "§cDe opgegeven speler bestaat niet." -iris_v_by_volmit_software = "§aIris /{value} door Volmit Software" to = "§a{value} tot {value2}" total_height = "§aTotale hoogte: {value}" iris_worlds = "§9Iris Worlds. " diff --git a/core/src/main/resources/languages/pl_PL.toml b/core/src/main/resources/languages/pl_PL.toml index eead78500..d1590e8af 100644 --- a/core/src/main/resources/languages/pl_PL.toml +++ b/core/src/main/resources/languages/pl_PL.toml @@ -277,6 +277,9 @@ # {zoom} Aktualny poziom powiększenia podglądu. # === End Iris language guide === +[iris.director.commanddebug] +description = "Narzędzia diagnostyczne Iris" + [iris.director.commandiris] "director.debugdump" = "Utwórz raport diagnostyczny i opcjonalnie go prześlij" "param.debugdump_upload" = "Prześlij raport do mclo.gs" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cWyjątek podniesiony podczas tworzenia. Więcej szczegółów znajdziesz w konsoli." successfully_created_your_world = "§aZ powodzeniem stworzyłeś swój świat!" specified_player_does_not_exist = "§cOkreślony gracz nie istnieje." -iris_v_by_volmit_software = "§aIris v.{value} przez Volmit Software" to = "§a{value} do {value2}" total_height = "§aWysokość całkowita: {value}" iris_worlds = "§9/ Iris Worlds: " diff --git a/core/src/main/resources/languages/pt_PT.toml b/core/src/main/resources/languages/pt_PT.toml index e7107e7b8..7e070655f 100644 --- a/core/src/main/resources/languages/pt_PT.toml +++ b/core/src/main/resources/languages/pt_PT.toml @@ -272,6 +272,9 @@ # {zoom} Nível de zoom atual da pré-visualização. # === End Iris language guide === +[iris.director.commanddebug] +description = "Ferramentas de diagnóstico do Iris" + [iris.director.commandiris] "director.debugdump" = "Criar um relatório de diagnóstico e carregá-lo opcionalmente" "param.debugdump_upload" = "Carregar o relatório para mclo.gs" @@ -516,7 +519,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cExceção levantada durante a criação. Veja o console para mais detalhes." successfully_created_your_world = "§aCriou com sucesso o seu mundo!" specified_player_does_not_exist = "§cO jogador especificado não existe." -iris_v_by_volmit_software = "§aÍris v{value} por Volmit Software" to = "§a{value} para {value2}" total_height = "§aAltura total: {value}" iris_worlds = "§9Mundos Iris: " diff --git a/core/src/main/resources/languages/ru_RU.toml b/core/src/main/resources/languages/ru_RU.toml index 54e24db5a..10695490f 100644 --- a/core/src/main/resources/languages/ru_RU.toml +++ b/core/src/main/resources/languages/ru_RU.toml @@ -277,6 +277,9 @@ # {zoom} Текущий уровень масштаба предварительного просмотра. # === End Iris language guide === +[iris.director.commanddebug] +description = "Инструменты диагностики Iris" + [iris.director.commandiris] "director.debugdump" = "Создать диагностический отчёт и при желании загрузить его" "param.debugdump_upload" = "Загрузить отчёт на mclo.gs" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cИсключение, возникшее при сотворении. Смотрите консоль для более подробной информации." successfully_created_your_world = "§aУспешно создал свой мир!" specified_player_does_not_exist = "§cУказанного игрока не существует." -iris_v_by_volmit_software = "§aИрис v{value} Разработчик Volmit Software" to = "§a{value} то {value2}" total_height = "§aОбщая высота: {value}" iris_worlds = "§9Миры Айрис: " diff --git a/core/src/main/resources/languages/tr_TR.toml b/core/src/main/resources/languages/tr_TR.toml index 5cc4eb522..00f7e8a7b 100644 --- a/core/src/main/resources/languages/tr_TR.toml +++ b/core/src/main/resources/languages/tr_TR.toml @@ -277,6 +277,9 @@ # {zoom} Önizlemenin geçerli yakınlaştırma düzeyi. # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris tanılama araçları" + [iris.director.commandiris] "director.debugdump" = "Tanılama raporu oluştur ve isteğe bağlı olarak yükle" "param.debugdump_upload" = "Raporu mclo.gs üzerine yükle" @@ -521,7 +524,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cYaratılış sırasında ortaya çıktı. Konsolu daha fazla ayrıntı için görün." successfully_created_your_world = "§aBaşarılı bir şekilde dünyanızı yarattı!" specified_player_does_not_exist = "§cBelirtilen oyuncu mevcut değildir." -iris_v_by_volmit_software = "§aIris{value} Volmit Software" to = "§a{value} tom için {value2}" total_height = "§aToplam Yükseklik: {value}" iris_worlds = "§9Iris Dünyaları: " diff --git a/core/src/main/resources/languages/vi_VI.toml b/core/src/main/resources/languages/vi_VI.toml index e22b7eb56..4ca67848b 100644 --- a/core/src/main/resources/languages/vi_VI.toml +++ b/core/src/main/resources/languages/vi_VI.toml @@ -275,6 +275,9 @@ # {zoom} Mức thu phóng hiện tại của bản xem trước. # === End Iris language guide === +[iris.director.commanddebug] +description = "Công cụ chẩn đoán Iris" + [iris.director.commandiris] "director.debugdump" = "Tạo báo cáo chẩn đoán và tải lên nếu muốn" "param.debugdump_upload" = "Tải báo cáo lên mclo.gs" @@ -519,7 +522,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§cNgoại lệ được nuôi lớn trong suốt quá trình sáng tạo. Xem bảng điều khiển để biết thêm chi tiết." successfully_created_your_world = "§aThành công trong việc tạo ra thế giới của anh!" specified_player_does_not_exist = "§cNgười chơi đã ghi rõ không tồn tại." -iris_v_by_volmit_software = "§aIris v.{value} by Volmit Phần mềm" to = "§a{value} phải {value2}" total_height = "§aTổng chiều cao: {value}" iris_worlds = "§9Thế giới Iris: " diff --git a/core/src/main/resources/languages/zh_CN.toml b/core/src/main/resources/languages/zh_CN.toml index c2fc487b1..cc5704227 100644 --- a/core/src/main/resources/languages/zh_CN.toml +++ b/core/src/main/resources/languages/zh_CN.toml @@ -275,6 +275,9 @@ # {zoom} 预览的当前缩放级别。 # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris诊断工具" + [iris.director.commandiris] "director.debugdump" = "创建诊断报告并选择是否上传" "param.debugdump_upload" = "将报告上传到 mclo.gs" @@ -519,7 +522,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§c创建期间发生异常。详情请查看控制台。" successfully_created_your_world = "§a世界创建成功!" specified_player_does_not_exist = "§c指定的玩家不存在。" -iris_v_by_volmit_software = "§aIris v.{value},由 Volmit Software 开发" to = "§a{value} 改为: {value2}" total_height = "§a总高度:{value}" iris_worlds = "§9Iris 世界:" diff --git a/core/src/main/resources/languages/zh_TW.toml b/core/src/main/resources/languages/zh_TW.toml index 9471845f9..1b89cd69b 100644 --- a/core/src/main/resources/languages/zh_TW.toml +++ b/core/src/main/resources/languages/zh_TW.toml @@ -275,6 +275,9 @@ # {zoom} 預覽的目前縮放層級。 # === End Iris language guide === +[iris.director.commanddebug] +description = "Iris診斷工具" + [iris.director.commandiris] "director.debugdump" = "建立診斷報告並選擇是否上傳" "param.debugdump_upload" = "將報告上傳至 mclo.gs" @@ -519,7 +522,6 @@ install_pack_and_restart = "§eInstall it with §b{command}§e and restart the s exception_raised_during_creation_see_console_more_details = "§c建立期間發生例外。詳細資訊請查看主控台。" successfully_created_your_world = "§a世界建立成功!" specified_player_does_not_exist = "§c指定的玩家不存在。" -iris_v_by_volmit_software = "§aIris v.{value},由 Volmit Software 開發" to = "§a{value} 改為: {value2}" total_height = "§a總高度:{value}" iris_worlds = "§9Iris 世界:"