summaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2022-04-13 19:54:26 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2022-04-13 19:54:26 +0100
commit8bc887cb1c1e3839c147022c517d6037bfedd2d3 (patch)
treef19067b5dd7b8532ef44e86f05287d355c3e0dd4 /bukkit/src/main/java
parentb771bac19697cb3e5b03bcc35d9dcfea9b82dd9f (diff)
Add commands to custom items (closes ##341)
Diffstat (limited to 'bukkit/src/main/java')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java9
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java9
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/CustomMenuElement.java14
3 files changed, 30 insertions, 2 deletions
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<String> 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<String> 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<String> 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<String> commands) {
+ this.itemStack = MenuUtils.applyPlaceholders(plugin, owner, itemStack);
+ this.commands = commands;
}
@Override
public ItemStack asItemStack() {
return itemStack;
}
+
+ public List<String> getCommands() {
+ return Collections.unmodifiableList(commands);
+ }
}