mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Add confirmation dialog to api
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package com.fancyinnovations.fancydialogs.api;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class ConfirmationDialog {
|
||||
|
||||
private final String title;
|
||||
private final String question;
|
||||
private final String confirmText;
|
||||
private final String cancelText;
|
||||
|
||||
private final DialogData dialogData;
|
||||
|
||||
public ConfirmationDialog(String title, String question, String confirmText, String cancelText) {
|
||||
this.title = title;
|
||||
this.question = question;
|
||||
this.confirmText = confirmText;
|
||||
this.cancelText = cancelText;
|
||||
|
||||
this.dialogData = new DialogData(
|
||||
"confirmation_dialog_" + UUID.randomUUID(),
|
||||
this.title,
|
||||
this.title,
|
||||
false,
|
||||
List.of(
|
||||
new DialogBodyData(this.question)
|
||||
),
|
||||
List.of(
|
||||
new DialogButton(
|
||||
this.confirmText,
|
||||
this.confirmText,
|
||||
"confirm"
|
||||
),
|
||||
new DialogButton(
|
||||
this.cancelText,
|
||||
this.cancelText,
|
||||
"cancel"
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public ConfirmationDialog(String question) {
|
||||
this("Confirmation", question, "Confirm", "Cancel");
|
||||
}
|
||||
|
||||
public ConfirmationDialog(String title, String question) {
|
||||
this(title, question, "Confirm", "Cancel");
|
||||
}
|
||||
|
||||
public static boolean ask(Player player, String question) {
|
||||
return new ConfirmationDialog(question).ask(player).join();
|
||||
}
|
||||
|
||||
public CompletableFuture<Boolean> ask(Player player) {
|
||||
CompletableFuture<Boolean> future = new CompletableFuture<>();
|
||||
FancyDialogs.get()
|
||||
.createDialog(dialogData)
|
||||
.open(player);
|
||||
|
||||
// TODO wait for user response
|
||||
|
||||
future.complete(true);
|
||||
return future;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public String getQuestion() {
|
||||
return question;
|
||||
}
|
||||
|
||||
public String getConfirmText() {
|
||||
return confirmText;
|
||||
}
|
||||
|
||||
public String getCancelText() {
|
||||
return cancelText;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.fancyinnovations.fancydialogs.api;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public interface FancyDialogs {
|
||||
|
||||
static FancyDialogs get() {
|
||||
Plugin plugin = Bukkit.getPluginManager().getPlugin("FancyDialogs");
|
||||
return (FancyDialogs) plugin;
|
||||
}
|
||||
|
||||
Dialog createDialog(DialogData data);
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.fancyinnovations.fancydialogs;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import com.fancyinnovations.fancydialogs.api.FancyDialogs;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||
import com.fancyinnovations.fancydialogs.commands.DialogCMD;
|
||||
import com.fancyinnovations.fancydialogs.commands.FancyDialogsCMD;
|
||||
@@ -38,7 +39,7 @@ import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class FancyDialogsPlugin extends JavaPlugin {
|
||||
public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs {
|
||||
|
||||
private static FancyDialogsPlugin INSTANCE;
|
||||
private final ExtendedFancyLogger fancyLogger;
|
||||
@@ -173,6 +174,11 @@ public class FancyDialogsPlugin extends JavaPlugin {
|
||||
lamp.register(TutorialCMD.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog createDialog(DialogData data) {
|
||||
return new DialogImpl(data.id(), data);
|
||||
}
|
||||
|
||||
public ExtendedFancyLogger getFancyLogger() {
|
||||
return fancyLogger;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.fancyinnovations.fancydialogs.commands;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
|
||||
import com.fancyinnovations.fancydialogs.api.ConfirmationDialog;
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
||||
@@ -59,6 +60,13 @@ public final class FancyDialogsCMD {
|
||||
public void storageLoad(
|
||||
final BukkitCommandActor actor
|
||||
) {
|
||||
if (actor.isPlayer()) {
|
||||
if (!ConfirmationDialog.ask(actor.asPlayer(), "Are you sure you want to load all dialogs from storage? This will clear the current registry.")) {
|
||||
translator.translate("commands.fancydialogs.storage.load.cancelled").send(actor.sender());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Collection<DialogData> dialogs = plugin.getDialogStorage().loadAll();
|
||||
|
||||
for (DialogData dialogData : dialogs) {
|
||||
|
||||
@@ -18,6 +18,7 @@ messages:
|
||||
success: "<dark_gray>› <gray>Successfully saved {warningColor}{count}<gray> dialogs to the storage."
|
||||
load:
|
||||
success: "<dark_gray>› <gray>Successfully loaded {warningColor}{count}<gray> dialogs from the storage."
|
||||
cancelled: "<dark_gray>› <gray>Loading dialogs from storage was cancelled."
|
||||
reload:
|
||||
success: "<dark_gray>› <gray>Successfully reloaded {warningColor}{count}<gray> dialogs from the storage."
|
||||
registry:
|
||||
|
||||
Reference in New Issue
Block a user