Skip to content

Commit 22f5ccc

Browse files
fancydialogs: Fixed player getting kicked when no button or action is defined
Updated version to 1.0.1
1 parent 1422d42 commit 22f5ccc

5 files changed

Lines changed: 37 additions & 56 deletions

File tree

docs/src/fancydialogs/changelog/v1.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ order: 2
88

99
#
1010

11+
## v1.0.1 [!badge variant="info" text="2025-11-23"] [!badge variant="danger" text="Hotfix"]
12+
13+
- Fixed player kick issue when no button or action is defined. ([#147](https://github.com/FancyInnovations/FancyPlugins/issues/147))
14+
1115
## v1.0.0 [!badge variant="info" text="2025-11-23"]
1216

1317
- Create dialogs using the [JSON schema](https://docs.fancyinnovations.com/fancydialogs/tutorials/json-schema/)

plugins/fancydialogs/CHANGELOG.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1 @@
1-
- Create dialogs using the [JSON schema](https://docs.fancyinnovations.com/fancydialogs/tutorials/json-schema/)
2-
- PlaceholderAPI and MiniMessage support in dialog texts
3-
- Execute actions when dialog buttons are clicked
4-
- Open a dialog when the user joins the server for the first time (see `welcome_dialog_id` in the config)
5-
- A quick actions dialog which can be opened with the `/qa` or `/quickactions` commands
6-
- FancyNpcs ingegration to open dialogs when interacting with NPCs (see [docs](https://docs.fancyinnovations.com/fancydialogs/tutorials/open-dialog-npc-action/))
7-
- API for other plugins to open dialogs (see [docs](https://docs.fancyinnovations.com/fancydialogs/api/getting-started/))
1+
- Fixed player kick issue when no button or action is defined. ([#147](https://github.com/FancyInnovations/FancyPlugins/issues/147))

plugins/fancydialogs/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.0
1+
1.0.1

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

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
1111
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
1212
import de.oliver.fancysitula.api.dialogs.FS_CommonDialogData;
13+
import de.oliver.fancysitula.api.dialogs.FS_Dialog;
1314
import de.oliver.fancysitula.api.dialogs.FS_DialogAction;
1415
import de.oliver.fancysitula.api.dialogs.actions.FS_CommonButtonData;
1516
import de.oliver.fancysitula.api.dialogs.actions.FS_DialogActionButton;
@@ -18,6 +19,7 @@
1819
import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody;
1920
import de.oliver.fancysitula.api.dialogs.inputs.*;
2021
import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog;
22+
import de.oliver.fancysitula.api.dialogs.types.FS_NoticeDialog;
2123
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
2224
import de.oliver.fancysitula.factories.FancySitula;
2325
import org.bukkit.entity.Player;
@@ -35,7 +37,7 @@ public DialogImpl(String id, DialogData data) {
3537
super(id, data);
3638
}
3739

38-
private FS_MultiActionDialog buildForPlayer(Player player) {
40+
private FS_Dialog buildForPlayer(Player player) {
3941
List<FS_DialogBody> body = new ArrayList<>();
4042
for (DialogBodyData bodyData : data.body()) {
4143
FS_DialogTextBody fsDialogTextBody = new FS_DialogTextBody(
@@ -109,6 +111,30 @@ private FS_MultiActionDialog buildForPlayer(Player player) {
109111
actions.add(fsDialogActionButton);
110112
}
111113

114+
if (actions.isEmpty()) {
115+
return new FS_NoticeDialog(
116+
new FS_CommonDialogData(
117+
ChatColorHandler.translate(data.title(), player, ParserTypes.placeholder()),
118+
ChatColorHandler.translate(data.title(), player, ParserTypes.placeholder()),
119+
data.canCloseWithEscape(),
120+
false,
121+
FS_DialogAction.CLOSE,
122+
body,
123+
inputs
124+
),
125+
new FS_DialogActionButton(
126+
new FS_CommonButtonData(
127+
"Close",
128+
null,
129+
150 // default button width
130+
),
131+
new FS_DialogCustomAction(
132+
"fancydialogs_dialog_action--none",
133+
Map.of())
134+
)
135+
);
136+
}
137+
112138
return new FS_MultiActionDialog(
113139
new FS_CommonDialogData(
114140
ChatColorHandler.translate(data.title(), player, ParserTypes.placeholder()),
@@ -118,53 +144,6 @@ private FS_MultiActionDialog buildForPlayer(Player player) {
118144
FS_DialogAction.CLOSE,
119145
body,
120146
inputs
121-
// List.of(
122-
// new FS_DialogInput(
123-
// "input1",
124-
// new FS_DialogTextInput(
125-
// 200,
126-
// "Enter something",
127-
// true,
128-
// "default text",
129-
// 100,
130-
// null
131-
// )
132-
// ),
133-
// new FS_DialogInput(
134-
// "input2",
135-
// new FS_DialogBooleanInput(
136-
// "input2",
137-
// false,
138-
// "true",
139-
// "false"
140-
// )
141-
// ),
142-
// new FS_DialogInput(
143-
// "input3",
144-
// new FS_DialogNumberRangeInput(
145-
// 200,
146-
// "Number Input",
147-
// "options.generic_value",
148-
// 0,
149-
// 100,
150-
// 50.f,
151-
// 1.0f
152-
// )
153-
// ),
154-
// new FS_DialogInput(
155-
// "input4",
156-
// new FS_DialogSingleOptionInput(
157-
// 200,
158-
// List.of(
159-
// new FS_DialogSingleOptionInput.Entry("option1", "Option 1", true),
160-
// new FS_DialogSingleOptionInput.Entry("option2", "Option 2", false),
161-
// new FS_DialogSingleOptionInput.Entry("option3", "Option 3", false)
162-
// ),
163-
// "Select an option",
164-
// true
165-
// )
166-
// )
167-
// )
168147
),
169148
actions, // actions
170149
null,

plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ private void onPacketReceived(FS_PacketListener.PacketReceivedEvent event) {
4646
String dialogId = packet.getPayload().get("dialog_id");
4747
String buttonId = packet.getPayload().get("button_id");
4848

49+
if (dialogId == null || buttonId == null) {
50+
return; // Missing necessary information
51+
}
52+
4953
new DialogButtonClickedEvent(event.player(), dialogId, buttonId, packet.getPayload()).callEvent();
5054

5155
if (dialogId.startsWith("confirmation_dialog_")) {

0 commit comments

Comments
 (0)