From 8708c0db24faf4c395e922053b90cca0ece83ca2 Mon Sep 17 00:00:00 2001 From: Benkralex Date: Thu, 31 Aug 2023 10:53:57 +0200 Subject: [PATCH] Menu Player entfenen --- pvptogglepluginworkspace/pom.xml | 2 +- .../benkralex/pvptoggle/InventoryMenu.java | 6 ++++ .../benkralex/pvptoggle/ListListener.java | 32 +++++++++++++++++++ .../java/benkralex/pvptoggle/PvpCommand.java | 30 ++++++++--------- .../java/benkralex/pvptoggle/Pvptoggle.java | 1 + 5 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/ListListener.java diff --git a/pvptogglepluginworkspace/pom.xml b/pvptogglepluginworkspace/pom.xml index 977ec54..3ada0e6 100644 --- a/pvptogglepluginworkspace/pom.xml +++ b/pvptogglepluginworkspace/pom.xml @@ -6,7 +6,7 @@ benkralex Pvptoggle - 1.8-FINAL + 1.9.1-SNAPSHOT jar Pvptoggle diff --git a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/InventoryMenu.java b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/InventoryMenu.java index 7b58bc8..0566b25 100644 --- a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/InventoryMenu.java +++ b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/InventoryMenu.java @@ -202,6 +202,9 @@ public class InventoryMenu { SkullMeta m = (SkullMeta) item.getItemMeta(); m.setDisplayName(ChatColor.GREEN + Bukkit.getPlayer(UUID.fromString(blacklistedPlayerUuid.getKey())).getDisplayName()); m.setOwningPlayer(Bukkit.getPlayer(UUID.fromString(blacklistedPlayerUuid.getKey()))); + List lore = new ArrayList<>(); + lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " Spieler entfernen"); + m.setLore(lore); item.setItemMeta(m); if (!((i == 8) || (i == 26))) { inv.setItem(i, item); @@ -228,6 +231,9 @@ public class InventoryMenu { SkullMeta m = (SkullMeta) item.getItemMeta(); m.setDisplayName(ChatColor.GREEN + Bukkit.getOfflinePlayer(UUID.fromString(whitelistedPlayerUuid.getKey())).getName()); m.setOwningPlayer(Bukkit.getOfflinePlayer(UUID.fromString(whitelistedPlayerUuid.getKey()))); + List lore = new ArrayList<>(); + lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " Spieler entfernen"); + m.setLore(lore); item.setItemMeta(m); if (!((i == 8) || (i == 26))) { inv.setItem(i, item); diff --git a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/ListListener.java b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/ListListener.java new file mode 100644 index 0000000..8239c97 --- /dev/null +++ b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/ListListener.java @@ -0,0 +1,32 @@ +package benkralex.pvptoggle; + +import dev.jorel.commandapi.executors.CommandArguments; +import org.bukkit.Bukkit; +import org.bukkit.Material; +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.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; + +public class ListListener implements Listener { + @EventHandler + public static void onListMenuInteract(InventoryClickEvent e) { + ItemStack item = e.getCurrentItem(); + String invtitle = e.getView().getTitle(); + Player p = (Player) e.getWhoClicked(); + + if (item.getType() == Material.PLAYER_HEAD && e.isRightClick()) { + Player ptarget = (Player) ((SkullMeta) item.getItemMeta()).getOwningPlayer(); + if (invtitle.equals("Whitelist-Menu")) { + PvpCommand.pvpList(p, ptarget, "whitelist", "Whitelist", 3); + p.openInventory(InventoryMenu.pvpWhitelistMenu(p)); + } else if (invtitle.equals("Blacklist-Menu")) { + PvpCommand.pvpList(p, ptarget, "blacklist", "Blacklist", 3); + p.openInventory(InventoryMenu.pvpBlacklistMenu(p)); + } + } + } +} diff --git a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/PvpCommand.java b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/PvpCommand.java index 730a508..67cc7c3 100644 --- a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/PvpCommand.java +++ b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/PvpCommand.java @@ -39,35 +39,35 @@ public class PvpCommand { .withUsage("/pvp ultra") .withHelp("Schutz + Schutz gegen ausversehen angreifen", "Du kannst damit an/ausschalten, ob du geschlagen werden kannst und andere schlagen kannst.")) .withSubcommand(new CommandAPICommand("whitelist") - .executesPlayer((sender, args)->{pvpList(sender, args,"whitelist","Whitelist", SHOW_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, null,"whitelist","Whitelist", SHOW_ACTION);}) .withPermission("pvp.whitelist") .withUsage("/pvp whitelist") .withHelp("Whitelist zeigen", "Damit kannst du dir die Whitelist anzeigen. Alle die in der Whitelist sind können dich immer schlagen.") .withSubcommand(new CommandAPICommand("add") - .executesPlayer((sender, args)->{pvpList(sender, args,"whitelist","Whitelist", ADD_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"whitelist","Whitelist", ADD_ACTION);}) .withPermission("pvp.whitelist") .withUsage("/pvp whitelist add ") .withArguments(new PlayerArgument("Player")) .withHelp("Spieler zu Whitelist hinzufügen", "Du kannst damit Spieler zu deiner Whitelist hinzufügen.")) .withSubcommand(new CommandAPICommand("remove") - .executesPlayer((sender, args)->{pvpList(sender, args,"whitelist","Whitelist", REMOVE_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"whitelist","Whitelist", REMOVE_ACTION);}) .withPermission("pvp.whitelist") .withUsage("/pvp whitelist remove ") .withArguments(new PlayerArgument("Player")) .withHelp("Spieler aus Whitelist entfernen", "Du kannst damit Spieler aus deiner Whitelist entfernen."))) .withSubcommand(new CommandAPICommand("blacklist") - .executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", SHOW_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, null,"blacklist","Blacklist", SHOW_ACTION);}) .withPermission("pvp.blacklist") .withUsage("/pvp blacklist ") .withHelp("Blacklist anzeigen", "Damit kannst du dir die Blacklist anzeigen. Alle die in der Blacklist sind können dich nur zurückschlagen.") .withSubcommand(new CommandAPICommand("add") - .executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", ADD_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"blacklist","Blacklist", ADD_ACTION);}) .withPermission("pvp.blacklist") .withUsage("/pvp blacklist add ") .withArguments(new PlayerArgument("Player")) .withHelp("Spieler zu Blacklist hinzufügen", "Du kannst damit Spieler zu deiner Blacklist hinzufügen.")) .withSubcommand(new CommandAPICommand("remove") - .executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", REMOVE_ACTION);}) + .executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"blacklist","Blacklist", REMOVE_ACTION);}) .withPermission("pvp.blacklist") .withUsage("/pvp blacklist remove ") .withArguments(new PlayerArgument("Player")) @@ -129,7 +129,7 @@ public class PvpCommand { } - public static void pvpList(Player sender, CommandArguments args, String key,String listName, int action) { + public static void pvpList(Player sender, Player ptarget, String key,String listName, int action) { //PvP Whitelist Command PersistentDataContainer pdc = sender.getPersistentDataContainer(); PersistentDataContainer pdcList = pdc.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdc.getAdapterContext().newPersistentDataContainer()); @@ -147,19 +147,19 @@ public class PvpCommand { } } else if (action == 2) { //hinzufügen - if (pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { - sender.sendMessage(ChatColor.RED + "Der Spieler " + ((Player) args.get("Player")).getDisplayName() + ChatColor.RED + " ist schon in deiner " + listName); + if (pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { + sender.sendMessage(ChatColor.RED + "Der Spieler " + ptarget.getDisplayName() + ChatColor.RED + " ist schon in deiner " + listName); }else{ - pdcList.set(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()),PersistentDataType.TAG_CONTAINER,pdcList.getAdapterContext().newPersistentDataContainer()); - sender.sendMessage(ChatColor.GREEN + ((Player)args.get("Player")).getDisplayName() + ChatColor.GREEN + " wurde zu deiner "+listName+" hinzugefügt"); + pdcList.set(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER,pdcList.getAdapterContext().newPersistentDataContainer()); + sender.sendMessage(ChatColor.GREEN + ptarget.getDisplayName() + ChatColor.GREEN + " wurde zu deiner "+listName+" hinzugefügt"); } } else if (action == 3) { //entfernen - if (!pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { - sender.sendMessage(ChatColor.RED + "Der Spieler " + ((Player) args.get("Player")).getDisplayName() + ChatColor.RED + " ist nicht in deiner "+listName); + if (!pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { + sender.sendMessage(ChatColor.RED + "Der Spieler " + ptarget.getDisplayName() + ChatColor.RED + " ist nicht in deiner "+listName); }else{ - pdcList.remove(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString())); - sender.sendMessage(ChatColor.GREEN + ((Player)args.get("Player")).getDisplayName() + ChatColor.GREEN + " wurde aus deiner "+listName+" entfernt"); + pdcList.remove(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString())); + sender.sendMessage(ChatColor.GREEN + ptarget.getDisplayName() + ChatColor.GREEN + " wurde aus deiner "+listName+" entfernt"); } } else { sender.sendMessage("Fehler"); diff --git a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/Pvptoggle.java b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/Pvptoggle.java index e6c7e95..f9f04f5 100644 --- a/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/Pvptoggle.java +++ b/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/Pvptoggle.java @@ -11,6 +11,7 @@ public final class Pvptoggle extends JavaPlugin { public void onEnable() { Bukkit.getPluginManager().registerEvents(new PvpEvent(), this); Bukkit.getPluginManager().registerEvents(new InventoryListener(), this); + Bukkit.getPluginManager().registerEvents(new ListListener(), this); Config.createConfig(); if (Config.getPvpTime() < 0) { Config.setPvpTime(0);