From 8bc887cb1c1e3839c147022c517d6037bfedd2d3 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Wed, 13 Apr 2022 19:54:26 +0100 Subject: Add commands to custom items (closes ##341) --- .../leonardobishop/quests/bukkit/menu/CategoryQMenu.java | 9 ++++++++- .../com/leonardobishop/quests/bukkit/menu/QuestQMenu.java | 9 ++++++++- .../quests/bukkit/menu/element/CustomMenuElement.java | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) (limited to 'bukkit/src') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java index 607931bb..36782ea4 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java @@ -51,7 +51,8 @@ public class CategoryQMenu implements QMenu { MenuElement menuElement; if (config.getConfig().contains("custom-elements.categories." + s + ".display")) { ItemStack is = config.getItem("custom-elements.categories." + s + ".display"); - menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is); + List commands = plugin.getQuestsConfig().getStringList( "custom-elements." + s + ".commands"); + menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is, commands); } else if (config.getBoolean("custom-elements.categories." + s + ".spacer", false)) { menuElement = new SpacerMenuElement(); } else continue; // user = idiot @@ -169,6 +170,12 @@ public class CategoryQMenu implements QMenu { } else { return true; } + } else if (element instanceof CustomMenuElement) { + CustomMenuElement customMenuElement = (CustomMenuElement) element; + for (String command : customMenuElement.getCommands()) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), + command.replace("{player}", event.getWhoClicked().getName())); + } } } return false; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java index 747dc28b..36b744b9 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java @@ -75,7 +75,8 @@ public class QuestQMenu implements QMenu { MenuElement menuElement; if (plugin.getConfig().contains(path + "." + s + ".display")) { ItemStack is = plugin.getConfiguredItemStack(path + "." + s + ".display", plugin.getConfig()); - menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is); + List commands = plugin.getQuestsConfig().getStringList(path + "." + s + ".commands"); + menuElement = new CustomMenuElement(plugin, owner.getPlayerUUID(), is, commands); } else if (plugin.getConfig().getBoolean(path + "." + s + ".spacer", false)) { menuElement = new SpacerMenuElement(); } else continue; // user = idiot @@ -240,6 +241,12 @@ public class QuestQMenu implements QMenu { MenuUtils.handleRightClick(plugin, this, quest, Bukkit.getPlayer(owner.getPlayerUUID()), controller); return true; } + } else if (menuElement instanceof CustomMenuElement) { + CustomMenuElement customMenuElement = (CustomMenuElement) menuElement; + for (String command : customMenuElement.getCommands()) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), + command.replace("{player}", event.getWhoClicked().getName())); + } } } return false; 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 440ac217..c0125dfe 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 @@ -4,18 +4,32 @@ import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.util.MenuUtils; 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{ private final ItemStack itemStack; + private final List commands; public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack) { this.itemStack = MenuUtils.applyPlaceholders(plugin, owner, itemStack); + this.commands = new ArrayList<>(); + } + + public CustomMenuElement(BukkitQuestsPlugin plugin, UUID owner, ItemStack itemStack, List commands) { + this.itemStack = MenuUtils.applyPlaceholders(plugin, owner, itemStack); + this.commands = commands; } @Override public ItemStack asItemStack() { return itemStack; } + + public List getCommands() { + return Collections.unmodifiableList(commands); + } } -- cgit v1.2.3-70-g09d2