From 3aaa364b580298f8397815e4d0e89768e2cbe1ea Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 19 Jun 2025 17:00:19 +0200 Subject: [PATCH] fancydialogs: Make dialog action registry accessible through api --- .../fancydialogs/api}/DialogAction.java | 3 +-- .../api/DialogActionRegistry.java | 22 +++++++++++++++++++ .../fancydialogs/api/FancyDialogs.java | 2 ++ .../fancydialogs/FancyDialogsPlugin.java | 14 ++++++++---- ...nRegistry.java => ActionRegistryImpl.java} | 6 +++-- .../ConsoleCommandDialogAction.java | 2 +- .../defaultActions/MessageDialogAction.java | 2 +- .../OpenDialogDialogAction.java | 2 +- .../PlayerCommandDialogAction.java | 2 +- .../SendToServerDialogAction.java | 2 +- .../CustomClickActionPacketListener.java | 2 +- 11 files changed, 45 insertions(+), 14 deletions(-) rename plugins/fancydialogs/{src/main/java/com/fancyinnovations/fancydialogs/actions => fd-api/src/main/java/com/fancyinnovations/fancydialogs/api}/DialogAction.java (55%) create mode 100644 plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogActionRegistry.java rename plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/{ActionRegistry.java => ActionRegistryImpl.java} (83%) diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/DialogAction.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogAction.java similarity index 55% rename from plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/DialogAction.java rename to plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogAction.java index 9be28fe4..a7cdad6c 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/DialogAction.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogAction.java @@ -1,6 +1,5 @@ -package com.fancyinnovations.fancydialogs.actions; +package com.fancyinnovations.fancydialogs.api; -import com.fancyinnovations.fancydialogs.api.Dialog; import org.bukkit.entity.Player; public interface DialogAction { diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogActionRegistry.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogActionRegistry.java new file mode 100644 index 00000000..3d0614a7 --- /dev/null +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/DialogActionRegistry.java @@ -0,0 +1,22 @@ +package com.fancyinnovations.fancydialogs.api; + +public interface DialogActionRegistry { + + /** + * Registers a dialog action with the given ID. + * + * @param actionId The unique identifier for the action. + * @param action The dialog action to register. + * @throws IllegalArgumentException if an action with the same ID is already registered. + */ + void registerAction(String actionId, DialogAction action); + + /** + * Retrieves a dialog action by its ID. + * + * @param actionId The unique identifier for the action. + * @return The dialog action associated with the given ID, or null if not found. + */ + DialogAction getAction(String actionId); + +} diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/FancyDialogs.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/FancyDialogs.java index 326d1d30..b28458c5 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/FancyDialogs.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/FancyDialogs.java @@ -15,4 +15,6 @@ public interface FancyDialogs { DialogRegistry getDialogRegistry(); + DialogActionRegistry getDialogActionRegistry(); + } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java index a9f6e4a0..2150b56f 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java @@ -1,7 +1,8 @@ package com.fancyinnovations.fancydialogs; -import com.fancyinnovations.fancydialogs.actions.ActionRegistry; +import com.fancyinnovations.fancydialogs.actions.ActionRegistryImpl; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogActionRegistry; import com.fancyinnovations.fancydialogs.api.FancyDialogs; import com.fancyinnovations.fancydialogs.api.data.DialogData; import com.fancyinnovations.fancydialogs.commands.DialogCMD; @@ -50,7 +51,7 @@ public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs { private Translator translator; private DialogRegistry dialogRegistry; private DialogStorage dialogStorage; - private ActionRegistry actionRegistry; + private ActionRegistryImpl actionRegistry; public FancyDialogsPlugin() { INSTANCE = this; @@ -111,7 +112,7 @@ public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs { DefaultDialogs.registerDefaultDialogs(); - actionRegistry = new ActionRegistry(); + actionRegistry = new ActionRegistryImpl(); fancyLogger.info("Successfully loaded FancyDialogs version %s".formatted(getDescription().getVersion())); } @@ -208,11 +209,16 @@ public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs { return dialogRegistry; } + @Override + public DialogActionRegistry getDialogActionRegistry() { + return actionRegistry; + } + public DialogStorage getDialogStorage() { return dialogStorage; } - public ActionRegistry getActionRegistry() { + public ActionRegistryImpl getActionRegistry() { return actionRegistry; } } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistry.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistryImpl.java similarity index 83% rename from plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistry.java rename to plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistryImpl.java index 1eb4a88d..6a784586 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistry.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/ActionRegistryImpl.java @@ -1,15 +1,17 @@ package com.fancyinnovations.fancydialogs.actions; import com.fancyinnovations.fancydialogs.actions.defaultActions.*; +import com.fancyinnovations.fancydialogs.api.DialogAction; +import com.fancyinnovations.fancydialogs.api.DialogActionRegistry; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -public class ActionRegistry { +public class ActionRegistryImpl implements DialogActionRegistry { private final Map actions; - public ActionRegistry() { + public ActionRegistryImpl() { this.actions = new ConcurrentHashMap<>(); registerDefaultActions(); diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/ConsoleCommandDialogAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/ConsoleCommandDialogAction.java index ac07ee5e..e53c4d2d 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/ConsoleCommandDialogAction.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/ConsoleCommandDialogAction.java @@ -1,8 +1,8 @@ package com.fancyinnovations.fancydialogs.actions.defaultActions; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/MessageDialogAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/MessageDialogAction.java index 6fb68676..8423b1f4 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/MessageDialogAction.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/MessageDialogAction.java @@ -1,7 +1,7 @@ package com.fancyinnovations.fancydialogs.actions.defaultActions; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import org.lushplugins.chatcolorhandler.ModernChatColorHandler; diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/OpenDialogDialogAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/OpenDialogDialogAction.java index 32884f4f..40d4ce9a 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/OpenDialogDialogAction.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/OpenDialogDialogAction.java @@ -1,8 +1,8 @@ package com.fancyinnovations.fancydialogs.actions.defaultActions; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import org.bukkit.entity.Player; public class OpenDialogDialogAction implements DialogAction { diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/PlayerCommandDialogAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/PlayerCommandDialogAction.java index d6c00b13..61057b30 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/PlayerCommandDialogAction.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/PlayerCommandDialogAction.java @@ -1,8 +1,8 @@ package com.fancyinnovations.fancydialogs.actions.defaultActions; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.lushplugins.chatcolorhandler.ChatColorHandler; diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/SendToServerDialogAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/SendToServerDialogAction.java index 1e58826a..ea417bf2 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/SendToServerDialogAction.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/actions/defaultActions/SendToServerDialogAction.java @@ -1,8 +1,8 @@ package com.fancyinnovations.fancydialogs.actions.defaultActions; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import org.bukkit.entity.Player; 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 259fec4f..ad36880b 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 @@ -1,8 +1,8 @@ package com.fancyinnovations.fancydialogs.listener; import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; -import com.fancyinnovations.fancydialogs.actions.DialogAction; import com.fancyinnovations.fancydialogs.api.Dialog; +import com.fancyinnovations.fancydialogs.api.DialogAction; import com.fancyinnovations.fancydialogs.api.data.DialogButton; import com.fancyinnovations.fancydialogs.api.events.DialogButtonClickedEvent; import de.oliver.fancysitula.api.packets.FS_ServerboundCustomClickActionPacket;