Skip to content

Commit 2095090

Browse files
fancydialogs: Add checkbox input type
1 parent 6b2f82a commit 2095090

6 files changed

Lines changed: 47 additions & 7 deletions

File tree

docs/src/fancydialogs/changelog/v0.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ order: 1
55

66
# FancyDialogs v0.x.x
77

8+
## v0.0.19 [!badge variant="info" text="2025-07-25"]
9+
10+
- Added checkbox input type
11+
812
## v0.0.18 [!badge variant="info" text="2025-07-21"]
913

1014
- Added more metrics

plugins/fancydialogs/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.18
1+
0.0.19
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.fancyinnovations.fancydialogs.api.data.inputs;
2+
3+
public class DialogCheckbox extends DialogInput {
4+
5+
private final boolean initial;
6+
7+
public DialogCheckbox(String key, String label, int order, boolean initial) {
8+
super(key, label, order);
9+
this.initial = initial;
10+
}
11+
12+
public boolean isInitial() {
13+
return initial;
14+
}
15+
}

plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/inputs/DialogInputs.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77

88
public record DialogInputs(
99
@Nullable List<DialogTextField> textFields,
10-
@Nullable List<DialogSelect> selects
10+
@Nullable List<DialogSelect> selects,
11+
@Nullable List<DialogCheckbox> checkboxes
1112
) {
1213

13-
public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of());
14+
public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of(), List.of());
1415

1516
public List<DialogInput> all() {
1617
List<DialogInput> all = new ArrayList<>();
@@ -22,6 +23,10 @@ public List<DialogInput> all() {
2223
all.addAll(selects);
2324
}
2425

26+
if (checkboxes != null) {
27+
all.addAll(checkboxes);
28+
}
29+
2530
all.sort((o1, o2) -> {
2631
if (o1.getOrder() == o2.getOrder()) {
2732
return 0;

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
66
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
77
import com.fancyinnovations.fancydialogs.api.data.DialogData;
8+
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogCheckbox;
89
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInput;
910
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
1011
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
@@ -15,10 +16,7 @@
1516
import de.oliver.fancysitula.api.dialogs.actions.FS_DialogCustomAction;
1617
import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody;
1718
import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody;
18-
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInput;
19-
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInputControl;
20-
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogSingleOptionInput;
21-
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogTextInput;
19+
import de.oliver.fancysitula.api.dialogs.inputs.*;
2220
import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog;
2321
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
2422
import de.oliver.fancysitula.factories.FancySitula;
@@ -78,6 +76,8 @@ private FS_MultiActionDialog buildForPlayer(Player player) {
7876
ChatColorHandler.translate(select.getLabel(), player, ParserTypes.placeholder()),
7977
!select.getLabel().isEmpty()
8078
);
79+
} else if (input instanceof DialogCheckbox checkbox) {
80+
control = new FS_DialogBooleanInput(input.getLabel(), checkbox.isInitial(), "true", "false");
8181
}
8282

8383
if (control == null) {

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
55
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
66
import com.fancyinnovations.fancydialogs.api.data.DialogData;
7+
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogCheckbox;
78
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
89
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
910
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
@@ -66,6 +67,14 @@ private static void welcomeToFancyDialogsDialog() {
6667
new DialogSelect.Entry("yellow", "<color:yellow>Yellow</color>", false)
6768
)
6869
)
70+
),
71+
List.of(
72+
new DialogCheckbox(
73+
"is_cool",
74+
"<color:#ff7300>Are you cool?</color>",
75+
3,
76+
true
77+
)
6978
)
7079
),
7180
List.of(
@@ -80,6 +89,13 @@ private static void welcomeToFancyDialogsDialog() {
8089
List.of(
8190
new DialogButton.DialogAction("message", "Hi {nickname}, your favorite color is: <color:{color_choice}>{color_choice}</color>")
8291
)
92+
),
93+
new DialogButton(
94+
"<color:#ffd000>Check if you are cool</color>",
95+
"<color:#ff4f19>Click to know if, you are cool</color>",
96+
List.of(
97+
new DialogButton.DialogAction("message", "Hi {nickname}, are you cool: {is_cool}")
98+
)
8399
)
84100
)
85101
);

0 commit comments

Comments
 (0)