ChestSort/src/main/java/de/jeff_media/chestsort/gui/GUIListener.java

67 lines
2.9 KiB
Java

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;
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();
@EventHandler
public void onClick(InventoryClickEvent event) {
if(event.getView().getTopInventory().getHolder() instanceof ChestSortGUIHolder) {
event.setCancelled(true);
}
ItemStack clicked = event.getCurrentItem();
if(clicked == null || !clicked.hasItemMeta()) return;
if(!(event.getWhoClicked() instanceof Player)) return;
Player player = (Player) event.getWhoClicked();
PlayerSetting setting = main.getPlayerSetting(player);
String function = Objects.requireNonNull(clicked.getItemMeta()).getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"function"), PersistentDataType.STRING,"");
List<String> userCommands = clicked.getItemMeta().getPersistentDataContainer().getOrDefault(new NamespacedKey(main,"user-commands"), DataType.asList(DataType.STRING), new ArrayList<>());
List<String> 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) {
case "": return;
case "leftclick": setting.toggleLeftClick(); break;
case "rightclick": setting.toggleRightClick(); break;
case "shiftclick": setting.toggleShiftClick(); break;
case "middleclick": setting.toggleMiddleClick(); break;
case "shiftrightclick": setting.toggleShiftRightClick(); break;
case "doubleclick": setting.toggleDoubleClick(); break;
case "outside": setting.toggleLeftClickOutside(); break;
case "autosorting": setting.toggleChestSorting(); break;
case "autoinvsorting": setting.toggleInvSorting(); break;
}
new NewUI(player).showGUI();
}
private void executeCommands(Player player, CommandSender sender, List<String> commands) {
for(String command : commands) {
main.getServer().dispatchCommand(sender, command.replace("{player}", player.getName()));
}
}
}