fancydialogs: Make dialog action registry accessible through api

This commit is contained in:
Oliver
2025-06-19 17:00:19 +02:00
parent a3be8d71ce
commit 3aaa364b58
11 changed files with 45 additions and 14 deletions

View File

@@ -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 {

View File

@@ -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);
}

View File

@@ -15,4 +15,6 @@ public interface FancyDialogs {
DialogRegistry getDialogRegistry();
DialogActionRegistry getDialogActionRegistry();
}

View File

@@ -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;
}
}

View File

@@ -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<String, DialogAction> actions;
public ActionRegistry() {
public ActionRegistryImpl() {
this.actions = new ConcurrentHashMap<>();
registerDefaultActions();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;