diff --git a/docs/src/fancydialogs/changelog/v0.md b/docs/src/fancydialogs/changelog/v0.md index 473b46fc..f3bdaafd 100644 --- a/docs/src/fancydialogs/changelog/v0.md +++ b/docs/src/fancydialogs/changelog/v0.md @@ -5,6 +5,10 @@ order: 1 # FancyDialogs v0.x.x +## v0.0.19 [!badge variant="info" text="2025-07-25"] + +- Added checkbox input type + ## v0.0.18 [!badge variant="info" text="2025-07-21"] - Added more metrics diff --git a/plugins/fancydialogs/VERSION b/plugins/fancydialogs/VERSION index a6186220..c5d4220b 100644 --- a/plugins/fancydialogs/VERSION +++ b/plugins/fancydialogs/VERSION @@ -1 +1 @@ -0.0.18 \ No newline at end of file +0.0.19 \ No newline at end of file diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogCheckbox.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogCheckbox.java new file mode 100644 index 00000000..d6522454 --- /dev/null +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogCheckbox.java @@ -0,0 +1,15 @@ +package com.fancyinnovations.fancydialogs.api.data.inputs; + +public class DialogCheckbox extends DialogInput { + + private final boolean initial; + + public DialogCheckbox(String key, String label, int order, boolean initial) { + super(key, label, order); + this.initial = initial; + } + + public boolean isInitial() { + return initial; + } +} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java index f8517738..4e412af5 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java @@ -7,10 +7,11 @@ import java.util.List; public record DialogInputs( @Nullable List textFields, - @Nullable List selects + @Nullable List selects, + @Nullable List checkboxes ) { - public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of()); + public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of(), List.of()); public List all() { List all = new ArrayList<>(); @@ -22,6 +23,10 @@ public record DialogInputs( all.addAll(selects); } + if (checkboxes != null) { + all.addAll(checkboxes); + } + all.sort((o1, o2) -> { if (o1.getOrder() == o2.getOrder()) { return 0; diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java index ec32f28b..fb4b0384 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java @@ -5,6 +5,7 @@ import com.fancyinnovations.fancydialogs.api.Dialog; import com.fancyinnovations.fancydialogs.api.data.DialogBodyData; import com.fancyinnovations.fancydialogs.api.data.DialogButton; import com.fancyinnovations.fancydialogs.api.data.DialogData; +import com.fancyinnovations.fancydialogs.api.data.inputs.DialogCheckbox; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInput; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField; @@ -15,10 +16,7 @@ import de.oliver.fancysitula.api.dialogs.actions.FS_DialogActionButton; import de.oliver.fancysitula.api.dialogs.actions.FS_DialogCustomAction; import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody; import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody; -import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInput; -import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInputControl; -import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogSingleOptionInput; -import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogTextInput; +import de.oliver.fancysitula.api.dialogs.inputs.*; import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog; import de.oliver.fancysitula.api.entities.FS_RealPlayer; import de.oliver.fancysitula.factories.FancySitula; @@ -78,6 +76,8 @@ public class DialogImpl extends Dialog { ChatColorHandler.translate(select.getLabel(), player, ParserTypes.placeholder()), !select.getLabel().isEmpty() ); + } else if (input instanceof DialogCheckbox checkbox) { + control = new FS_DialogBooleanInput(input.getLabel(), checkbox.isInitial(), "true", "false"); } if (control == null) { diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java index acf6a0be..fd4d0407 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java @@ -4,6 +4,7 @@ import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; import com.fancyinnovations.fancydialogs.api.data.DialogBodyData; import com.fancyinnovations.fancydialogs.api.data.DialogButton; import com.fancyinnovations.fancydialogs.api.data.DialogData; +import com.fancyinnovations.fancydialogs.api.data.inputs.DialogCheckbox; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField; @@ -66,6 +67,14 @@ public class DefaultDialogs { new DialogSelect.Entry("yellow", "Yellow", false) ) ) + ), + List.of( + new DialogCheckbox( + "is_cool", + "Are you cool?", + 3, + true + ) ) ), List.of( @@ -80,6 +89,13 @@ public class DefaultDialogs { List.of( new DialogButton.DialogAction("message", "Hi {nickname}, your favorite color is: {color_choice}") ) + ), + new DialogButton( + "Check if you are cool", + "Click to know if, you are cool", + List.of( + new DialogButton.DialogAction("message", "Hi {nickname}, are you cool: {is_cool}") + ) ) ) );