fancydialogs: More command stuff

This commit is contained in:
Oliver
2025-06-15 21:33:59 +02:00
committed by Oliver
parent 25c4844b48
commit bdb23fb172
5 changed files with 65 additions and 19 deletions

View File

@@ -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 <id> [player]`
- **Permissions**: `fancydialogs.commands.dialog.open`

View File

@@ -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 <id>`
- **Syntax**: `/fancydialogs registry unregister <id>`
- **Permissions**: `fancydialogs.commands.fancydialogs.registry.unregister`

View File

@@ -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<Dialog> 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 <dialog>")
@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<Player> 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<String> 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);
}
}

View File

@@ -98,16 +98,16 @@ public final class FancyDialogsCMD {
) {
Collection<Dialog> 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());

View File

@@ -6,7 +6,11 @@ messages:
dialog:
open:
self: "<dark_gray> <gray>Opened dialog {warningColor}{id}<gray>."
other: "<dark_gray> <gray>Opened dialog {warningColor}{id}<gray> for player {target}."
other: "<dark_gray> <gray>Opened dialog {warningColor}{id}<gray> for {target}."
list:
empty: "<dark_gray> <gray>There are no dialogs registered."
header: "<dark_gray> <gray>Registered dialogs:"
entry: "<dark_gray> <gray> - {warningColor}{id}<gray> ({title})"
fancydialogs:
version: "<dark_gray> <gray>You are running FancyDialogs {warningColor}{version}<gray>."
storage:
@@ -17,10 +21,6 @@ messages:
reload:
success: "<dark_gray> <gray>Successfully reloaded {warningColor}{count}<gray> dialogs from the storage."
registry:
list:
empty: "<dark_gray> <gray>There are no dialogs registered."
header: "<dark_gray> <gray>Registered dialogs:"
entry: "<dark_gray> <gray> - {warningColor}{id}<gray> ({title})"
clear:
success: "<dark_gray> <gray>Successfully cleared all registered dialogs."
unregister: