From 7e05693fb2b5f7ebb4e3e638a7ef0411f6f9ad2a Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 15 Jun 2025 19:18:32 +0200 Subject: [PATCH] fancydialogs: Add open_dialog action for FancyNpcs --- plugins/fancydialogs/build.gradle.kts | 5 +++ .../fancydialogs/FancyDialogsPlugin.java | 4 +++ .../fancynpcs/OpenDialogNpcAction.java | 35 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/fancynpcs/OpenDialogNpcAction.java diff --git a/plugins/fancydialogs/build.gradle.kts b/plugins/fancydialogs/build.gradle.kts index acf63b8c..ee5b95aa 100644 --- a/plugins/fancydialogs/build.gradle.kts +++ b/plugins/fancydialogs/build.gradle.kts @@ -54,6 +54,7 @@ dependencies { implementation("de.oliver.FancyAnalytics:api:0.1.6") implementation("de.oliver.FancyAnalytics:logger:0.0.6") + compileOnly(project(":plugins:fancynpcs:fn-api")) compileOnly("org.lushplugins:ChatColorHandler:5.1.3") implementation("io.github.revxrsal:lamp.common:4.0.0-rc.12") implementation("io.github.revxrsal:lamp.bukkit:4.0.0-rc.12") @@ -72,6 +73,10 @@ paper { apiVersion = "1.21" load = BukkitPluginDescription.PluginLoadOrder.POSTWORLD serverDependencies { + register("FancyNpcs") { + required = false + load = PaperPluginDescription.RelativeLoadOrder.BEFORE + } register("MiniPlaceholders") { required = false load = PaperPluginDescription.RelativeLoadOrder.BEFORE 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 bb08addf..ef986137 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java @@ -6,6 +6,7 @@ import com.fancyinnovations.fancydialogs.commands.TutorialCMD; import com.fancyinnovations.fancydialogs.config.FDFeatureFlags; import com.fancyinnovations.fancydialogs.config.FancyDialogsConfig; import com.fancyinnovations.fancydialogs.dialog.DialogImpl; +import com.fancyinnovations.fancydialogs.fancynpcs.OpenDialogNpcAction; import com.fancyinnovations.fancydialogs.listener.PlayerJoinListener; import com.fancyinnovations.fancydialogs.registry.DefaultDialogs; import com.fancyinnovations.fancydialogs.registry.DialogRegistry; @@ -138,6 +139,9 @@ public class FancyDialogsPlugin extends JavaPlugin { .build(); lamp.register(TutorialCMD.INSTANCE); + // FancyNpcs actions + new OpenDialogNpcAction().register(); + fancyLogger.info("Successfully enabled FancyDialogs version %s".formatted(getDescription().getVersion())); } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/fancynpcs/OpenDialogNpcAction.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/fancynpcs/OpenDialogNpcAction.java new file mode 100644 index 00000000..9595ade3 --- /dev/null +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/fancynpcs/OpenDialogNpcAction.java @@ -0,0 +1,35 @@ +package com.fancyinnovations.fancydialogs.fancynpcs; + +import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; +import com.fancyinnovations.fancydialogs.api.Dialog; +import de.oliver.fancynpcs.api.FancyNpcsPlugin; +import de.oliver.fancynpcs.api.actions.NpcAction; +import de.oliver.fancynpcs.api.actions.executor.ActionExecutionContext; +import org.bukkit.Bukkit; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class OpenDialogNpcAction extends NpcAction { + + public OpenDialogNpcAction() { + super("open_dialog", true); + } + + @Override + public void execute(@NotNull ActionExecutionContext context, @Nullable String value) { + Dialog dialog = FancyDialogsPlugin.get().getDialogRegistry().get(value); + if (dialog == null) { + FancyDialogsPlugin.get().getFancyLogger().warn("Dialog with ID '" + value + "' not found for NPC action 'open_dialog'."); + return; + } + + dialog.open(context.getPlayer()); + } + + public void register() { + if (Bukkit.getPluginManager().isPluginEnabled("FancyNpcs")) { + FancyNpcsPlugin.get().getActionManager().registerAction(this); + FancyDialogsPlugin.get().getFancyLogger().info("Registered NPC action 'open_dialog' for FancyNpcs."); + } + } +}