Begin Whitelist add

This commit is contained in:
skippyall
2023-08-31 20:16:08 +02:00
parent 52316ff64a
commit 3f55623454
5 changed files with 78 additions and 85 deletions
@@ -49,10 +49,10 @@ public class InventoryListener implements Listener{
} }
return; return;
} else if (iname.equals("Whitelist")) { } else if (iname.equals("Whitelist")) {
p.openInventory(InventoryMenu.pvpWhitelistMenu(p)); p.openInventory(InventoryMenu.pvpListMenu(p,"Whitelist","whitelist"));
return; return;
} else if (iname.equals("Blacklist")) { } else if (iname.equals("Blacklist")) {
p.openInventory(InventoryMenu.pvpBlacklistMenu(p)); p.openInventory(InventoryMenu.pvpListMenu(p,"Blacklist","blacklist"));
return; return;
} else if (iname.equals("Menu für Operators")) { } else if (iname.equals("Menu für Operators")) {
p.openInventory(InventoryMenu.pvpOpSettingsMenu(p)); p.openInventory(InventoryMenu.pvpOpSettingsMenu(p));
@@ -5,6 +5,8 @@ import benkralex.pvptoggle.Pvptoggle;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.entity.Blaze; import org.bukkit.entity.Blaze;
import org.bukkit.entity.Player; 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.Inventory;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@@ -15,6 +17,7 @@ import org.bukkit.persistence.PersistentDataType;
import org.bukkit.profile.PlayerProfile; import org.bukkit.profile.PlayerProfile;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@@ -32,6 +35,8 @@ public class InventoryMenu {
public static final int PVP_TIME_PLUS=10; public static final int PVP_TIME_PLUS=10;
public static final int PVP_TIME_MINUS=11; public static final int PVP_TIME_MINUS=11;
private static HashSet<Inventory> inventories=new HashSet<Inventory>();
public static ItemStack getMenuItem(int i, Player p) { public static ItemStack getMenuItem(int i, Player p) {
List<String> lore = new ArrayList<>(); List<String> lore = new ArrayList<>();
switch (i) { switch (i) {
@@ -168,7 +173,7 @@ public class InventoryMenu {
Pvptoggle.pvptoggle.getLogger().warning(ChatColor.RED + "ERROR IN pvpMenuFillEmpty(): " + e.toString()); Pvptoggle.pvptoggle.getLogger().warning(ChatColor.RED + "ERROR IN pvpMenuFillEmpty(): " + e.toString());
} }
} }
return inv; return registerInv(inv);
} }
public static Inventory pvpMenu(Player p) { public static Inventory pvpMenu(Player p) {
@@ -186,29 +191,30 @@ public class InventoryMenu {
inv.setItem(8, getMenuItem(CLOSE, p)); inv.setItem(8, getMenuItem(CLOSE, p));
inv2 = pvpMenuFillEmpty(inv, p); inv2 = pvpMenuFillEmpty(inv, p);
return inv2; return registerInv(inv2);
} else { } else {
return pvpMenuFillEmpty(Bukkit.createInventory(null, 3*9, "No Permissiom"), p); return registerInv(pvpMenuFillEmpty(Bukkit.createInventory(null, 3*9, "No Permission"), p));
} }
} }
public static Inventory pvpBlacklistMenu(Player p) { public static Inventory pvpListMenu(Player p,String listname, String key) {
Inventory inv = Bukkit.createInventory(null, 3*9, "Blacklist-Menu"); Inventory inv = Bukkit.createInventory(null, 3*9, listname+"-Menu");
PersistentDataContainer pdc = p.getPersistentDataContainer(); PersistentDataContainer pdc = p.getPersistentDataContainer();
PersistentDataContainer pBlacklist = pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, "blacklist"), PersistentDataType.TAG_CONTAINER); PersistentDataContainer plist = pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, key), PersistentDataType.TAG_CONTAINER);
int i = 0; int i = 0;
for (NamespacedKey blacklistedPlayerUuid:pBlacklist.getKeys()) { for (NamespacedKey listedPlayerUuid:plist.getKeys()) {
ItemStack item = new ItemStack(Material.PLAYER_HEAD); ItemStack item = new ItemStack(Material.PLAYER_HEAD);
SkullMeta m = (SkullMeta) item.getItemMeta(); SkullMeta m = (SkullMeta) item.getItemMeta();
OfflinePlayer target=Bukkit.getOfflinePlayer(UUID.fromString(blacklistedPlayerUuid.getKey())); OfflinePlayer target=Bukkit.getOfflinePlayer(UUID.fromString(listedPlayerUuid.getKey()));
PlayerProfile profile=target.getPlayerProfile().update().join(); target.getPlayerProfile().update().thenAccept(profile->{
m.setDisplayName(ChatColor.GREEN + profile.getName()); m.setDisplayName(ChatColor.GREEN + profile.getName());
m.setOwningPlayer(target); m.setOwnerProfile(profile);
List<String> lore = new ArrayList<>(); List<String> lore = new ArrayList<>();
lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " Spieler entfernen"); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " Spieler entfernen");
m.setLore(lore); m.setLore(lore);
item.setItemMeta(m); item.setItemMeta(m);
});
if (!((i == 8) || (i == 26))) { if (!((i == 8) || (i == 26))) {
inv.setItem(i, item); inv.setItem(i, item);
} else { } else {
@@ -220,40 +226,16 @@ public class InventoryMenu {
inv.setItem(8, getMenuItem(CLOSE, p)); inv.setItem(8, getMenuItem(CLOSE, p));
inv.setItem(26, getMenuItem(BACK, p)); inv.setItem(26, getMenuItem(BACK, p));
return pvpMenuFillEmpty(inv, 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);
public static Inventory pvpWhitelistMenu(Player p) { return registerInv(inv);
Inventory inv = Bukkit.createInventory(null, 3*9, "Whitelist-Menu");
PersistentDataContainer pdc = p.getPersistentDataContainer();
PersistentDataContainer pWhitelist = pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, "whitelist"), PersistentDataType.TAG_CONTAINER);
int i = 0;
for (NamespacedKey whitelistedPlayerUuid:pWhitelist.getKeys()) {
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
SkullMeta m = (SkullMeta) item.getItemMeta();
OfflinePlayer target=Bukkit.getOfflinePlayer(UUID.fromString(whitelistedPlayerUuid.getKey()));
PlayerProfile profile=target.getPlayerProfile().update().join();
m.setDisplayName(ChatColor.GREEN + profile.getName());
m.setOwningPlayer(target);
List<String> 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);
} else {
i++;
inv.setItem(i, item);
} }
i++;
}
inv.setItem(8, getMenuItem(CLOSE, p));
inv.setItem(26, getMenuItem(BACK, p));
return pvpMenuFillEmpty(inv, p);
}
public static Inventory pvpOpSettingsMenu(Player p) { public static Inventory pvpOpSettingsMenu(Player p) {
Inventory inv = Bukkit.createInventory(null, 3*9, "Operator-Menu"); Inventory inv = Bukkit.createInventory(null, 3*9, "Operator-Menu");
@@ -264,7 +246,12 @@ public class InventoryMenu {
inv.setItem(14, getMenuItem(PVP_TIME, p)); inv.setItem(14, getMenuItem(PVP_TIME, p));
inv.setItem(15, getMenuItem(PVP_TIME_PLUS, p)); inv.setItem(15, getMenuItem(PVP_TIME_PLUS, p));
return pvpMenuFillEmpty(inv, p); return registerInv(pvpMenuFillEmpty(inv, p));
}
public static Inventory registerInv(Inventory inv) {
inventories.add(inv);
return inv;
} }
} }
@@ -0,0 +1,5 @@
package benkralex.pvptoggle;
public class ListAddInventoryListener {
}
@@ -23,10 +23,10 @@ public class ListListener implements Listener {
OfflinePlayer ptarget = ((SkullMeta) item.getItemMeta()).getOwningPlayer(); OfflinePlayer ptarget = ((SkullMeta) item.getItemMeta()).getOwningPlayer();
if (invtitle.equals("Whitelist-Menu")) { if (invtitle.equals("Whitelist-Menu")) {
PvpCommand.pvpList(p, ptarget, "whitelist", "Whitelist", 3); PvpCommand.pvpList(p, ptarget, "whitelist", "Whitelist", 3);
p.openInventory(InventoryMenu.pvpWhitelistMenu(p)); p.openInventory(InventoryMenu.pvpListMenu(p,"Whitelist","whitelist"));
} else if (invtitle.equals("Blacklist-Menu")) { } else if (invtitle.equals("Blacklist-Menu")) {
PvpCommand.pvpList(p, ptarget, "blacklist", "Blacklist", 3); PvpCommand.pvpList(p, ptarget, "blacklist", "Blacklist", 3);
p.openInventory(InventoryMenu.pvpBlacklistMenu(p)); p.openInventory(InventoryMenu.pvpListMenu(p, "Blacklist", "blacklist"));
} }
} }
} }
@@ -136,7 +136,7 @@ public class PvpCommand {
//PvP Whitelist Command //PvP Whitelist Command
PersistentDataContainer pdc = sender.getPersistentDataContainer(); PersistentDataContainer pdc = sender.getPersistentDataContainer();
PersistentDataContainer pdcList = pdc.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdc.getAdapterContext().newPersistentDataContainer()); PersistentDataContainer pdcList = pdc.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdc.getAdapterContext().newPersistentDataContainer());
PlayerProfile targetProfile=ptarget.getPlayerProfile().update().join(); ptarget.getPlayerProfile().update().thenAccept(targetProfile->{
if (action == 1) { if (action == 1) {
//anzeigen //anzeigen
if(!pdcList.isEmpty()){ if(!pdcList.isEmpty()){
@@ -169,6 +169,7 @@ public class PvpCommand {
sender.sendMessage("Fehler"); sender.sendMessage("Fehler");
} }
pdc.set(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdcList); pdc.set(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdcList);
});
} }