From a4f1c58f53a3afcb06df3c24380bc96dfbfc4afa Mon Sep 17 00:00:00 2001 From: Krakenied Date: Sun, 18 Jan 2026 02:40:41 +0100 Subject: Add option to specify custom element click result Closes https://github.com/LMBishop/Quests/issues/646 --- .../quests/bukkit/menu/PaginatedQMenu.java | 11 ++++++++++- .../bukkit/menu/element/CustomMenuElement.java | 23 +++++++++++----------- 2 files changed, 22 insertions(+), 12 deletions(-) (limited to 'bukkit/src/main/java') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java index a5c9620c..bc6c4a70 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java @@ -99,7 +99,16 @@ public abstract class PaginatedQMenu extends QMenu { if (plugin.getConfig().contains(customElementsPath + "." + s + ".display")) { ItemStack is = plugin.getConfiguredItemStack(customElementsPath + "." + s + ".display", plugin.getConfig()); List commands = plugin.getQuestsConfig().getStringList(customElementsPath + "." + s + ".commands"); - menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is, commands); + String resultString = plugin.getConfig().getString(customElementsPath + "." + s + ".result", ClickResult.DO_NOTHING.name()); + + ClickResult result; + try { + result = ClickResult.valueOf(resultString); + } catch (final IllegalArgumentException e) { + result = ClickResult.DO_NOTHING; + } + + menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is, commands, result); } else if (plugin.getConfig().getBoolean(customElementsPath + "." + s + ".spacer", false)) { menuElement = spacer; } else { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java index 8b826829..c6802afa 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java @@ -8,48 +8,49 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; -public class CustomMenuElement extends MenuElement{ +public class CustomMenuElement extends MenuElement { private final BukkitQuestsPlugin plugin; private final ItemStack itemStack; private final List commands; + private final ClickResult result; public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack) { - this(plugin, owner, itemStack, new ArrayList<>()); + this(plugin, owner, itemStack, List.of(), ClickResult.DO_NOTHING); } - public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack, List commands) { + public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack, List commands, ClickResult result) { this.plugin = plugin; this.itemStack = MenuUtils.applyPlaceholders(plugin, owner, itemStack); this.commands = commands; + this.result = result; } @Override public ItemStack asItemStack() { - return itemStack; + return this.itemStack; } @Override - public ClickResult handleClick(Player whoClicked, ClickType clickType) { - if (commands.isEmpty()) { - return ClickResult.DO_NOTHING; + public ClickResult handleClick(final Player whoClicked, final ClickType clickType) { + if (this.commands.isEmpty()) { + return this.result; } this.plugin.getScheduler().runTask(() -> { - for (String command : commands) { + for (final String command : this.commands) { DispatchUtils.dispatchCommand(whoClicked, this.plugin.applyPlayerAndPAPI(BukkitQuestsPlugin.PAPIType.GUI, whoClicked, command)); } }); - return ClickResult.DO_NOTHING; + return this.result; } public List getCommands() { - return Collections.unmodifiableList(commands); + return Collections.unmodifiableList(this.commands); } } -- cgit v1.2.3-70-g09d2