diff --git a/pom.xml b/pom.xml
index 9d21007..270d30e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
ChestSort
https://www.chestsort.de
Allows automatic chest sorting!
- 13.5.1
+ 13.6.0
jar
@@ -87,6 +87,11 @@
de.jeff_media.chestsort.paperlib
+
+ com.jeff_media.morepersistentdatatypes
+ com.jeff_media.chestsort.morepersistentdatatypes
+
+
@@ -204,10 +209,17 @@
compile
+
+ com.jeff_media
+ MorePersistentDataTypes
+ 2.3.1
+ compile
+
+
com.jeff_media
JeffLib
- 12.0.0
+ 12.3.1
compile
diff --git a/src/main/java/de/jeff_media/chestsort/gui/GUIListener.java b/src/main/java/de/jeff_media/chestsort/gui/GUIListener.java
index f8988ee..ff556e7 100644
--- a/src/main/java/de/jeff_media/chestsort/gui/GUIListener.java
+++ b/src/main/java/de/jeff_media/chestsort/gui/GUIListener.java
@@ -1,8 +1,11 @@
package de.jeff_media.chestsort.gui;
+import com.jeff_media.morepersistentdatatypes.DataType;
import de.jeff_media.chestsort.ChestSortPlugin;
import de.jeff_media.chestsort.data.PlayerSetting;
+import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
+import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -10,6 +13,10 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
public class GUIListener implements Listener {
private static final ChestSortPlugin main = ChestSortPlugin.getInstance();
@@ -26,8 +33,12 @@ public class GUIListener implements Listener {
if(!(event.getWhoClicked() instanceof Player)) return;
Player player = (Player) event.getWhoClicked();
PlayerSetting setting = main.getPlayerSetting(player);
- String function = clicked.getItemMeta().getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"function"), PersistentDataType.STRING,"");
+ String function = Objects.requireNonNull(clicked.getItemMeta()).getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"function"), PersistentDataType.STRING,"");
+ List userCommands = clicked.getItemMeta().getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"user-commands"), DataType.asList(DataType.STRING), new ArrayList<>());
+ List adminCommands = clicked.getItemMeta().getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"admin-commands"), DataType.asList(DataType.STRING), new ArrayList<>());
+ executeCommands(player, player, userCommands);
+ executeCommands(player, Bukkit.getConsoleSender(), adminCommands);
//System.out.println("Click in GUI: " + function);
switch (function) {
@@ -44,6 +55,12 @@ public class GUIListener implements Listener {
}
new NewUI(player).showGUI();
-
}
+
+ private void executeCommands(Player player, CommandSender sender, List commands) {
+ for(String command : commands) {
+ main.getServer().dispatchCommand(sender, command.replace("{player}", player.getName()));
+ }
+ }
+
}
diff --git a/src/main/java/de/jeff_media/chestsort/gui/NewUI.java b/src/main/java/de/jeff_media/chestsort/gui/NewUI.java
index 3ace300..0e7edc8 100644
--- a/src/main/java/de/jeff_media/chestsort/gui/NewUI.java
+++ b/src/main/java/de/jeff_media/chestsort/gui/NewUI.java
@@ -1,5 +1,6 @@
package de.jeff_media.chestsort.gui;
+import com.jeff_media.morepersistentdatatypes.DataType;
import de.jeff_media.chestsort.ChestSortPlugin;
import de.jeff_media.chestsort.enums.Hotkey;
import com.jeff_media.jefflib.ItemStackUtils;
@@ -13,6 +14,8 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
+import java.util.List;
+
public class NewUI {
private static final ChestSortPlugin main = ChestSortPlugin.getInstance();
@@ -44,6 +47,10 @@ public class NewUI {
ItemMeta meta = button.getItemMeta();
assert meta != null;
meta.getPersistentDataContainer().set(new NamespacedKey(main,"function"),PersistentDataType.STRING, buttonName.split("-")[0]);
+ List userCommands = conf.getStringList("items." + buttonName + ".commands.player");
+ List adminCommands = conf.getStringList("items." + buttonName + ".commands.console");
+ meta.getPersistentDataContainer().set(new NamespacedKey(main,"user-commands"), DataType.asList(DataType.STRING), userCommands);
+ meta.getPersistentDataContainer().set(new NamespacedKey(main,"admin-commands"), DataType.asList(DataType.STRING), adminCommands);
button.setItemMeta(meta);
}
return button;
diff --git a/src/main/resources/gui.yml b/src/main/resources/gui.yml
index 08c47b1..405d370 100644
--- a/src/main/resources/gui.yml
+++ b/src/main/resources/gui.yml
@@ -21,6 +21,11 @@
# enchantments:
# unbreaking: 3
# efficiency: 5
+# commands:
+# player:
+# - "say Hello" # command that will be run as the player
+# console:
+# - "tell {player} Hello" # command that will be run as the console
title: "<#000000>&l[<#007700>&lChest<#339933>&lSort<#000000>&l] &rSettings"
size: 45