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 7244d1e2..ea5f6696 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 @@ -126,6 +126,18 @@ public final class FancyDialogsCMD { public void storageReload( final BukkitCommandActor actor ) { + if (actor.isPlayer()) { + new ConfirmationDialog("Are you sure you want to reload all dialog data from the storage? This will clear the dialog registry and overwrite any existing dialogs.") + .withTitle("Confirm reload") + .withOnConfirm(() -> reloadStorage(actor)) + .withOnCancel(() -> translator.translate("commands.fancydialogs.storage.reload.cancelled").send(actor.sender())) + .ask(actor.asPlayer()); + } else { + reloadStorage(actor); + } + } + + private void reloadStorage(BukkitCommandActor actor) { plugin.getDialogRegistry().clear(); Collection dialogs = plugin.getDialogStorage().loadAll(); @@ -169,6 +181,18 @@ public final class FancyDialogsCMD { public void registryClear( final BukkitCommandActor actor ) { + if (actor.isPlayer()) { + new ConfirmationDialog("Are you sure you want to clear the dialog registry? This will remove all registered dialogs.") + .withTitle("Confirm clear") + .withOnConfirm(() -> clearRegistry(actor)) + .withOnCancel(() -> translator.translate("commands.fancydialogs.registry.clear.cancelled").send(actor.sender())) + .ask(actor.asPlayer()); + } else { + clearRegistry(actor); + } + } + + private void clearRegistry(BukkitCommandActor actor) { plugin.getDialogRegistry().clear(); translator.translate("commands.fancydialogs.registry.clear.success").send(actor.sender()); } @@ -179,6 +203,21 @@ public final class FancyDialogsCMD { public void registryUnregister( final BukkitCommandActor actor, final Dialog dialog + ) { + if (actor.isPlayer()) { + new ConfirmationDialog("Are you sure you want to unregister the dialog with ID '" + dialog.getId() + "'? This will remove it from the registry.") + .withTitle("Confirm unregister") + .withOnConfirm(() -> unregisterDialog(actor, dialog)) + .withOnCancel(() -> translator.translate("commands.fancydialogs.registry.unregister.cancelled").send(actor.sender())) + .ask(actor.asPlayer()); + } else { + unregisterDialog(actor, dialog); + } + } + + private void unregisterDialog( + final BukkitCommandActor actor, + final Dialog dialog ) { plugin.getDialogRegistry().unregister(dialog.getId()); translator.translate("commands.fancydialogs.registry.unregister.success") diff --git a/plugins/fancydialogs/src/main/resources/languages/default.yml b/plugins/fancydialogs/src/main/resources/languages/default.yml index abaf8980..133ca2a1 100644 --- a/plugins/fancydialogs/src/main/resources/languages/default.yml +++ b/plugins/fancydialogs/src/main/resources/languages/default.yml @@ -25,8 +25,11 @@ messages: cancelled: "Loading dialogs from storage was cancelled." reload: success: "Successfully reloaded {warningColor}{count} dialogs from the storage." + cancelled: "Reloading dialogs from storage was cancelled." registry: clear: success: "Successfully cleared all registered dialogs." + cancelled: "Clearing registered dialogs was cancelled." unregister: - success: "Successfully unregistered dialog {warningColor}{id}." \ No newline at end of file + success: "Successfully unregistered dialog {warningColor}{id}." + cancelled: "Unregistering dialog {warningColor}{id} was cancelled." \ No newline at end of file