aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
authorKrakenied <krakenied1@gmail.com>2026-01-18 02:40:41 +0100
committerKrakenied <46192742+Krakenied@users.noreply.github.com>2026-01-18 18:42:28 +0100
commita4f1c58f53a3afcb06df3c24380bc96dfbfc4afa (patch)
treefe1ceaddf884918b9124612a6d04329bc73c3d1c /bukkit/src/main/java
parent434acc7220db0f05b7659925f85c18d374df983b (diff)
Add option to specify custom element click result
Closes https://github.com/LMBishop/Quests/issues/646
Diffstat (limited to 'bukkit/src/main/java')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/PaginatedQMenu.java11
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java23
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);
}
}