diff options
| author | Krakenied <krakenied1@gmail.com> | 2026-01-18 02:40:41 +0100 |
|---|---|---|
| committer | Krakenied <46192742+Krakenied@users.noreply.github.com> | 2026-01-18 18:42:28 +0100 |
| commit | a4f1c58f53a3afcb06df3c24380bc96dfbfc4afa (patch) | |
| tree | fe1ceaddf884918b9124612a6d04329bc73c3d1c /bukkit/src | |
| parent | 434acc7220db0f05b7659925f85c18d374df983b (diff) | |
Add option to specify custom element click result
Closes https://github.com/LMBishop/Quests/issues/646
Diffstat (limited to 'bukkit/src')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java | 11 | ||||
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java | 23 |
2 files changed, 22 insertions, 12 deletions
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<String> 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<String> 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<String> commands) { + public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack, List<String> 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<String> getCommands() { - return Collections.unmodifiableList(commands); + return Collections.unmodifiableList(this.commands); } } |
