From bdb23fb172122fd93a955e1490eb24975ae98f3b Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 15 Jun 2025 21:33:59 +0200 Subject: [PATCH] fancydialogs: More command stuff --- docs/src/fancydialogs/commands/dialog.md | 14 ++++++- .../src/fancydialogs/commands/fancydialogs.md | 14 +++---- .../fancydialogs/commands/DialogCMD.java | 40 +++++++++++++++++-- .../commands/FancyDialogsCMD.java | 6 +-- .../src/main/resources/languages/default.yml | 10 ++--- 5 files changed, 65 insertions(+), 19 deletions(-) diff --git a/docs/src/fancydialogs/commands/dialog.md b/docs/src/fancydialogs/commands/dialog.md index f341154d..371df6d5 100644 --- a/docs/src/fancydialogs/commands/dialog.md +++ b/docs/src/fancydialogs/commands/dialog.md @@ -7,4 +7,16 @@ order: 10 # /Dialog -The `/dialog` command is the main command for managing dialogs. +## List all dialogs + +Lists all registered dialogs. + +- **Syntax**: `/dialog list` +- **Permissions**: `fancydialogs.commands.dialog.list` + +## Open dialog + +Opens a dialog (for a player) by its ID. + +- **Syntax**: `/dialog open [player]` +- **Permissions**: `fancydialogs.commands.dialog.open` diff --git a/docs/src/fancydialogs/commands/fancydialogs.md b/docs/src/fancydialogs/commands/fancydialogs.md index 0c67ec02..25cf1ab3 100644 --- a/docs/src/fancydialogs/commands/fancydialogs.md +++ b/docs/src/fancydialogs/commands/fancydialogs.md @@ -11,7 +11,7 @@ order: 9 Shows the version of FancyDialogs. -- **Syntax**: `/fancydialogs version` +- **Syntax**: `/fancydialogs version` - **Permissions**: `fancydialogs.commands.fancydialogs.version` ## Storage @@ -20,21 +20,21 @@ Shows the version of FancyDialogs. Saves all dialog data to the storage. -- **Syntax**: `/fancydialogs storage save` +- **Syntax**: `/fancydialogs storage save` - **Permissions**: `fancydialogs.commands.fancydialogs.storage.save` ### Load all dialogs Loads all dialog data from the storage. -- **Syntax**: `/fancydialogs storage load` +- **Syntax**: `/fancydialogs storage load` - **Permissions**: `fancydialogs.commands.fancydialogs.storage.load` ### Reload all dialogs Clears the dialog registry and loads all dialog data from the storage. -- **Syntax**: `/fancydialogs storage reload` +- **Syntax**: `/fancydialogs storage reload` - **Permissions**: `fancydialogs.commands.fancydialogs.storage.reload` ## Registry @@ -43,19 +43,19 @@ Clears the dialog registry and loads all dialog data from the storage. Lists all registered dialogs. -- **Syntax**: `/fancydialogs registry list` +- **Syntax**: `/fancydialogs registry list` - **Permissions**: `fancydialogs.commands.fancydialogs.registry.list` ## Clear registry Clears the dialog registry -- **Syntax**: `/fancydialogs registry clear` +- **Syntax**: `/fancydialogs registry clear` - **Permissions**: `fancydialogs.commands.fancydialogs.registry.clear` ## Unregister dialog Unregisters a dialog by its ID. -- **Syntax**: `/fancydialogs registry unregister ` +- **Syntax**: `/fancydialogs registry unregister ` - **Permissions**: `fancydialogs.commands.fancydialogs.registry.unregister` \ No newline at end of file diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/DialogCMD.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/DialogCMD.java index 490d90f5..b4917025 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/DialogCMD.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/DialogCMD.java @@ -7,7 +7,11 @@ import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; import revxrsal.commands.annotation.Description; import revxrsal.commands.annotation.Optional; +import revxrsal.commands.bukkit.actor.BukkitCommandActor; import revxrsal.commands.bukkit.annotation.CommandPermission; +import revxrsal.commands.bukkit.parameters.EntitySelector; + +import java.util.Collection; public final class DialogCMD { @@ -19,13 +23,35 @@ public final class DialogCMD { private DialogCMD() { } + @Command("dialog list") + @Description("Lists all registered dialogs") + @CommandPermission("fancydialogs.commands.dialog.list") + public void list(BukkitCommandActor actor) { + Collection dialogs = plugin.getDialogRegistry().getAll(); + if (dialogs.isEmpty()) { + translator.translate("commands.dialog.registry.list.empty").send(actor.sender()); + return; + } + + translator.translate("commands.dialog.registry.list.header") + .replace("count", String.valueOf(dialogs.size())) + .send(actor.sender()); + + for (Dialog dialog : dialogs) { + translator.translate("commands.dialog.registry.list.entry") + .replace("id", dialog.getId()) + .replace("title", dialog.getData().title()) + .send(actor.sender()); + } + } + @Command("dialog open ") @Description("Opens a dialog (for a player) by its ID") @CommandPermission("fancydialogs.commands.registry.unregister") public void open( Player actor, Dialog dialog, - @Optional Player target + @Optional EntitySelector target ) { if (target == null) { dialog.open(actor); @@ -33,10 +59,18 @@ public final class DialogCMD { .replace("id", dialog.getId()) .send(actor); } else { - dialog.open(target); + for (Player player : target) { + dialog.open(player); + } + + Collection players = target.stream() + .map(Player::getName) + .toList(); + String playersStr = String.join(", ", players); + translator.translate("commands.dialog.open.other") .replace("id", dialog.getId()) - .replace("target", target.getName()) + .replace("target", playersStr) .send(actor); } } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/FancyDialogsCMD.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/FancyDialogsCMD.java index 084100fb..238c0aa9 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/FancyDialogsCMD.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/commands/FancyDialogsCMD.java @@ -98,16 +98,16 @@ public final class FancyDialogsCMD { ) { Collection dialogs = plugin.getDialogRegistry().getAll(); if (dialogs.isEmpty()) { - translator.translate("commands.fancydialogs.registry.list.empty").send(actor.sender()); + translator.translate("commands.dialog.registry.list.empty").send(actor.sender()); return; } - translator.translate("commands.fancydialogs.registry.list.header") + translator.translate("commands.dialog.registry.list.header") .replace("count", String.valueOf(dialogs.size())) .send(actor.sender()); for (Dialog dialog : dialogs) { - translator.translate("commands.fancydialogs.registry.list.entry") + translator.translate("commands.dialog.registry.list.entry") .replace("id", dialog.getId()) .replace("title", dialog.getData().title()) .send(actor.sender()); diff --git a/plugins/fancydialogs/src/main/resources/languages/default.yml b/plugins/fancydialogs/src/main/resources/languages/default.yml index e0142538..69c89d8a 100644 --- a/plugins/fancydialogs/src/main/resources/languages/default.yml +++ b/plugins/fancydialogs/src/main/resources/languages/default.yml @@ -6,7 +6,11 @@ messages: dialog: open: self: "Opened dialog {warningColor}{id}." - other: "Opened dialog {warningColor}{id} for player {target}." + other: "Opened dialog {warningColor}{id} for {target}." + list: + empty: "There are no dialogs registered." + header: "Registered dialogs:" + entry: " - {warningColor}{id} ({title})" fancydialogs: version: "You are running FancyDialogs {warningColor}{version}." storage: @@ -17,10 +21,6 @@ messages: reload: success: "Successfully reloaded {warningColor}{count} dialogs from the storage." registry: - list: - empty: "There are no dialogs registered." - header: "Registered dialogs:" - entry: " - {warningColor}{id} ({title})" clear: success: "Successfully cleared all registered dialogs." unregister: