From c496283b796979b47bb471ee28d5e1fbfb26e691 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 19 Jun 2025 14:51:24 +0200 Subject: [PATCH] fancydialogs: Add DialogButtonClickedEvent --- .../api/events/DialogButtonClickedEvent.java | 40 +++++++++++++++++++ .../CustomClickActionPacketListener.java | 3 ++ 2 files changed, 43 insertions(+) create mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/events/DialogButtonClickedEvent.java diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/events/DialogButtonClickedEvent.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/events/DialogButtonClickedEvent.java new file mode 100644 index 00000000..6405ee3d --- /dev/null +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/events/DialogButtonClickedEvent.java @@ -0,0 +1,40 @@ +package com.fancyinnovations.fancydialogs.api.events; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class DialogButtonClickedEvent extends Event { + + private static final HandlerList handlerList = new HandlerList(); + + private final Player player; + private final String dialogId; + private final String buttonId; + + public DialogButtonClickedEvent(@NotNull Player player, @NotNull String dialogId, @NotNull String buttonId) { + super(!Bukkit.isPrimaryThread()); + this.player = player; + this.dialogId = dialogId; + this.buttonId = buttonId; + } + + public Player getPlayer() { + return player; + } + + public String getDialogId() { + return dialogId; + } + + public String getButtonId() { + return buttonId; + } + + @Override + public @NotNull HandlerList getHandlers() { + return handlerList; + } +} diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java index 81aa9bc7..dd4c47b9 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java @@ -4,6 +4,7 @@ import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; import com.fancyinnovations.fancydialogs.api.data.DialogButton; +import com.fancyinnovations.fancydialogs.api.events.DialogButtonClickedEvent; import de.oliver.fancysitula.api.packets.FS_ServerboundCustomClickActionPacket; import de.oliver.fancysitula.api.packets.FS_ServerboundPacket; import de.oliver.fancysitula.api.utils.FS_PacketListener; @@ -39,6 +40,8 @@ public class CustomClickActionPacketListener { String dialogId = packet.getPayload().get("dialog_id"); String buttonId = packet.getPayload().get("button_id"); + new DialogButtonClickedEvent(event.player(), dialogId, buttonId).callEvent(); + Dialog dialog = FancyDialogsPlugin.get().getDialogRegistry().get(dialogId); if (dialog == null) { FancyDialogsPlugin.get().getFancyLogger().warn("Received action for unknown dialog: " + dialogId);