package benkralex.pvptoggle; import benkralex.pvptoggle.Config; import benkralex.pvptoggle.Pvptoggle; import org.bukkit.*; import org.bukkit.entity.Blaze; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import org.bukkit.profile.PlayerProfile; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.UUID; public class InventoryMenu { public static final int PVP_TOGGLE=0; public static final int ULTRA_TOGGLE=1; public static final int WHITELIST=2; public static final int BLACKLIST=3; public static final int OP=4; public static final int CLOSE=5; public static final int BACK=6; public static final int VOID=7; public static final int DEFAULT_PROTECTION=8; public static final int PVP_TIME=9; public static final int PVP_TIME_PLUS=10; public static final int PVP_TIME_MINUS=11; public static final int LIST_ADD=12; private static HashSet inventories=new HashSet(); public static ItemStack getMenuItem(int i, Player p) { List lore = new ArrayList<>(); switch (i) { case 0: ItemStack itoggle = new ItemStack(Material.IRON_SWORD); ItemMeta mtoggle = itoggle.getItemMeta(); mtoggle.setDisplayName("PvP-Schutz an/aus schalten"); mtoggle.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); String s3 = p.getPersistentDataContainer().getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN, false)?"an":"aus"; lore.add(ChatColor.LIGHT_PURPLE + "Toggle ist " + s3); lore.add(ChatColor.BLUE + ""); String s = p.getPersistentDataContainer().getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN, false)?"Aus":"An"; lore.add(ChatColor.DARK_PURPLE + s + " schalten"); mtoggle.setLore(lore); itoggle.setItemMeta(mtoggle); return itoggle; case 1: ItemStack iultra = new ItemStack(Material.DIAMOND_SWORD); ItemMeta multra = iultra.getItemMeta(); multra.setDisplayName("Ultra an/aus schalten"); multra.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); String s2 = p.getPersistentDataContainer().getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"), PersistentDataType.BOOLEAN, false)?"an":"aus"; lore.add(ChatColor.LIGHT_PURPLE + "Ultra ist " + s2); lore.add(ChatColor.BLUE + ""); String s1 = p.getPersistentDataContainer().getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"), PersistentDataType.BOOLEAN, false)?"Aus":"An"; lore.add(ChatColor.DARK_PURPLE + s1 + " schalten"); multra.setLore(lore); iultra.setItemMeta(multra); return iultra; case 2: ItemStack iwhitelist = new ItemStack(Material.WHITE_CONCRETE); ItemMeta mwhitelist = iwhitelist.getItemMeta(); mwhitelist.setDisplayName("Whitelist"); mwhitelist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iwhitelist.setItemMeta(mwhitelist); return iwhitelist; case 3: ItemStack iblacklist = new ItemStack(Material.BLACK_CONCRETE); ItemMeta mblacklist = iblacklist.getItemMeta(); mblacklist.setDisplayName("Blacklist"); mblacklist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iblacklist.setItemMeta(mblacklist); return iblacklist; case 4: ItemStack iop = new ItemStack(Material.BEDROCK); ItemMeta mop = iop.getItemMeta(); mop.setDisplayName("Menu für Operators"); mop.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iop.setItemMeta(mop); /*if (p.hasPermission("pvp.inv.op")) { inv.setItem(22, getMenuItem(4)); }*/ return iop; case 5: ItemStack iclose = new ItemStack(Material.BARRIER); ItemMeta mclose = iclose.getItemMeta(); mclose.setDisplayName("Inventar schließen"); mclose.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iclose.setItemMeta(mclose); //inv.setItem(8, getMenuItem(5)); return iclose; case 6: ItemStack iback = new ItemStack(Material.HOPPER); ItemMeta mback = iback.getItemMeta(); mback.setDisplayName("Zurück"); mback.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iback.setItemMeta(mback); //inv.setItem(26, getMenuItem(6)); return iback; case 7: ItemStack ivoid = new ItemStack(Material.LIGHT_GRAY_STAINED_GLASS_PANE); ItemMeta mvoid = ivoid.getItemMeta(); mvoid.setDisplayName("X"); mvoid.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); ivoid.setItemMeta(mvoid); /*for (int i = 0, i <= 26, i++) { if (inv.getItem(i) == Material.AIR) { inv.set(i, getMenuItem(7)); } }*/ return ivoid; case 8: ItemStack idefaultprot = new ItemStack(Material.GOLDEN_SWORD); ItemMeta mdefaultprot = idefaultprot.getItemMeta(); mdefaultprot.setDisplayName("Standard PvP-Schutz an/aus schalten"); lore.add(ChatColor.LIGHT_PURPLE + "Standart ist PvP-Schutz " + (Config.getPvpProt()?"an":"aus")); lore.add(ChatColor.BLUE + ""); lore.add(ChatColor.DARK_PURPLE + (Config.getPvpProt()?"Aus":"An") + " schalten"); mdefaultprot.setLore(lore); mdefaultprot.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); idefaultprot.setItemMeta(mdefaultprot); return idefaultprot; case 9: ItemStack ipvptime = new ItemStack(Material.CLOCK); ItemMeta mpvptime = ipvptime.getItemMeta(); mpvptime.setDisplayName("Zeit um zurückzuschlagen"); lore.add(ChatColor.BLUE + "" + Config.getPvpTime() + " Sekunden um zurückzuschlagen"); mpvptime.setLore(lore); mpvptime.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); ipvptime.setItemMeta(mpvptime); return ipvptime; case 10: ItemStack ipvptimeplus = new ItemStack(Material.GREEN_WOOL); ItemMeta mpvptimeplus = ipvptimeplus.getItemMeta(); mpvptimeplus.setDisplayName("Zeit um zurückzuschlagen erhöhen"); mpvptimeplus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.GREEN + " +1"); lore.add(ChatColor.BLUE + "Linksklick:" + ChatColor.GREEN + " +10"); mpvptimeplus.setLore(lore); ipvptimeplus.setItemMeta(mpvptimeplus); return ipvptimeplus; case 11: ItemStack ipvptimeminus = new ItemStack(Material.RED_WOOL); ItemMeta mpvptimeminus = ipvptimeminus.getItemMeta(); mpvptimeminus.setDisplayName("Zeit um zurückzuschlagen verringern"); mpvptimeminus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " -1"); lore.add(ChatColor.BLUE + "Linksklick:" + ChatColor.RED + " -10"); mpvptimeminus.setLore(lore); ipvptimeminus.setItemMeta(mpvptimeminus); return ipvptimeminus; case 12: ItemStack iAddPlayer = new ItemStack(Material.NETHER_STAR); ItemMeta mAddPlayer = iAddPlayer.getItemMeta(); mAddPlayer.setDisplayName("Spieler hinzufügen"); mAddPlayer.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); iAddPlayer.setItemMeta(mAddPlayer); return iAddPlayer; default: return null; } } public static Inventory pvpMenuFillEmpty(Inventory inv, Player p) { for (int i = 0; i <= inv.getSize()-1; i++) { try { if (inv.getItem(i) == null || inv.getItem(i).equals(Material.AIR)) { inv.setItem(i, getMenuItem(VOID, p)); } } catch (Exception e) { Pvptoggle.pvptoggle.getLogger().warning(ChatColor.RED + "ERROR IN pvpMenuFillEmpty(): " + e.toString()); } } return registerInv(inv); } public static Inventory pvpMenu(Player p) { if (p.hasPermission("pvp.inv.normal")) { Inventory inv = Bukkit.createInventory(null, 3 * 9, "PvP-Menu"); Inventory inv2; inv.setItem(10, getMenuItem(PVP_TOGGLE, p)); inv.setItem(12, getMenuItem(ULTRA_TOGGLE, p)); inv.setItem(14, getMenuItem(WHITELIST, p)); inv.setItem(16, getMenuItem(BLACKLIST, p)); if (p.hasPermission("pvp.inv.op")) { inv.setItem(22, getMenuItem(OP, p)); } inv.setItem(8, getMenuItem(CLOSE, p)); inv2 = pvpMenuFillEmpty(inv, p); return registerInv(inv2); } else { return registerInv(pvpMenuFillEmpty(Bukkit.createInventory(null, 3*9, "No Permission"), p)); } } public static Inventory pvpListMenu(Player p,String listname, String key) { Inventory inv = Bukkit.createInventory(null, 3*9, listname+"-Menu"); PersistentDataContainer pdc = p.getPersistentDataContainer(); PersistentDataContainer plist = pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, key), PersistentDataType.TAG_CONTAINER); int i = 0; for (NamespacedKey listedPlayerUuid:plist.getKeys()) { ItemStack item = new ItemStack(Material.PLAYER_HEAD); SkullMeta m = (SkullMeta) item.getItemMeta(); OfflinePlayer target=Bukkit.getOfflinePlayer(UUID.fromString(listedPlayerUuid.getKey())); target.getPlayerProfile().update().thenAccept(profile->{ m.setDisplayName(ChatColor.GREEN + profile.getName()); m.setOwnerProfile(profile); List lore = new ArrayList<>(); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " Spieler entfernen"); m.setLore(lore); item.setItemMeta(m); }); if (!((i == 8) || (i == 26) || (i == 22))) { inv.setItem(i, item); } else { i++; inv.setItem(i, item); } i++; } inv.setItem(8, getMenuItem(CLOSE, p)); inv.setItem(26, getMenuItem(BACK, p)); inv.setItem(22, getMenuItem(LIST_ADD, p)); return registerInv(pvpMenuFillEmpty(inv, p)); } public static Inventory pvpListAddMenu(Player p,String listname, String key){ AnvilInventory inv = (AnvilInventory) Bukkit.createInventory(null, InventoryType.ANVIL,"Bitte Spielername eingeben"); inv.setItem(0,new ItemStack(Material.PAPER)); inv.setRepairCost(0); return registerInv(inv); } public static Inventory pvpOpSettingsMenu(Player p) { Inventory inv = Bukkit.createInventory(null, 3*9, "Operator-Menu"); inv.setItem(8, getMenuItem(CLOSE, p)); inv.setItem(26, getMenuItem(BACK, p)); inv.setItem(11, getMenuItem(DEFAULT_PROTECTION, p)); inv.setItem(13, getMenuItem(PVP_TIME_MINUS, p)); inv.setItem(14, getMenuItem(PVP_TIME, p)); inv.setItem(15, getMenuItem(PVP_TIME_PLUS, p)); return registerInv(pvpMenuFillEmpty(inv, p)); } public static Inventory registerInv(Inventory inv) { inventories.add(inv); return inv; } } /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 */