Merge pvpWhitelist and pvpBlacklist

pvpWhitelist and pvpBlacklist Methods were merged into pvpList Method for better maintanance
This commit is contained in:
skippyall
2023-08-26 21:40:52 +02:00
parent 54177410a1
commit a7f7888b53
@@ -14,75 +14,81 @@ import org.bukkit.persistence.PersistentDataType;
import java.util.UUID;
public class PvpCommand {
private static final int SHOW_ACTION=1;
private static final int ADD_ACTION=2;
private static final int REMOVE_ACTION=3;
private static final int CHALLENGE_ACTION=0;
private static final int ACCEPT_ACTION=1;
private static final int DENY_ACTION=2;
public static void createPvpCommand() {
//Create PVP-Command with Command-API
new CommandAPICommand("pvp")
.executesPlayer((sender, args)->{pvpInv(sender, args);})
.executesPlayer(PvpCommand::pvpInv)
.withPermission("pvp.inv.op")
.withUsage("/pvp")
.withHelp("PvP Menu", "Du kannst damit ein Menu öffnen, in dem du alles verwalten kannst.")
.withSubcommand(new CommandAPICommand("toggle")
.executesPlayer((sender, args)->{pvpToggle(sender, args);})
.executesPlayer(PvpCommand::pvpToggle)
.withPermission("pvp.toggle")
.withUsage("/pvp toggle")
.withHelp("PvP damage für sich an/auschalten.", "Du kannst damit an/ausschalten, ob du geschlagen werden kannst."))
.withSubcommand(new CommandAPICommand("ultra")
.executesPlayer((sender, args)->{pvpUltra(sender, args);})
.executesPlayer(PvpCommand::pvpUltra)
.withPermission("pvp.ultra")
.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)->{pvpWhitelist(sender, args, 1);})
.executesPlayer((sender, args)->{pvpList(sender, args,"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)->{pvpWhitelist(sender, args, 2);})
.executesPlayer((sender, args)->{pvpList(sender, args,"whitelist","Whitelist", ADD_ACTION);})
.withPermission("pvp.whitelist")
.withUsage("/pvp whitelist add <Player>")
.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)->{pvpWhitelist(sender, args, 3);})
.executesPlayer((sender, args)->{pvpList(sender, args,"whitelist","Whitelist", REMOVE_ACTION);})
.withPermission("pvp.whitelist")
.withUsage("/pvp whitelist remove <Player>")
.withArguments(new PlayerArgument("Player"))
.withHelp("Spieler aus Whitelist entfernen", "Du kannst damit Spieler aus deiner Whitelist entfernen.")))
.withSubcommand(new CommandAPICommand("blacklist")
.executesPlayer((sender, args)->{pvpBlacklist(sender, args, 1);})
.executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", SHOW_ACTION);})
.withPermission("pvp.blacklist")
.withUsage("/pvp blacklist <Player>")
.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)->{pvpBlacklist(sender, args, 2);})
.executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", ADD_ACTION);})
.withPermission("pvp.blacklist")
.withUsage("/pvp blacklist add <Player>")
.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)->{pvpBlacklist(sender, args, 3);})
.executesPlayer((sender, args)->{pvpList(sender, args,"blacklist","Blacklist", REMOVE_ACTION);})
.withPermission("pvp.blacklist")
.withUsage("/pvp blacklist remove <Player>")
.withArguments(new PlayerArgument("Player"))
.withHelp("Spieler aus Blacklist entfernen", "Du kannst damit Spieler aus deiner Blacklist entfernen.")))
.withSubcommand(new CommandAPICommand("fight")
.executesPlayer((sender, args)->{pvpFight(sender, args, 0);})
.executesPlayer((sender, args)->{pvpFight(sender, args, CHALLENGE_ACTION);})
.withPermission("pvp.fight")
.withUsage("/pvp fight <Player>")
.withArguments(new PlayerArgument("Player"))
.withHelp("Spieler zu einem Kampf herrausfordern", "Man kann sich schlagen bis einer stirbt, der der stirbt verliert nichts.")
.withHelp("Spieler zu einem Kampf herausfordern", "Man kann sich schlagen bis einer stirbt, der der stirbt verliert nichts.")
.withSubcommand(new CommandAPICommand("accept")
.executesPlayer((sender, args)->{pvpFight(sender, args, 1);})
.executesPlayer((sender, args)->{pvpFight(sender, args, ACCEPT_ACTION);})
.withPermission("pvp.fight")
.withUsage("/pvp fight accept")
.withHelp("Herrausforderung annehmen", "Letzte Herrausforderung annehmen"))
.withHelp("Herausforderung annehmen", "Letzte Herrausforderung annehmen"))
.withSubcommand(new CommandAPICommand("deny")
.executesPlayer((sender, args)->{pvpFight(sender, args, 2);})
.executesPlayer((sender, args)->{pvpFight(sender, args, DENY_ACTION);})
.withPermission("pvp.fight")
.withUsage("/pvp fight deny")
.withHelp("Herrausforderung ablehnen", "Letzte Herrausforderung ablehnen")))
.withHelp("Herausforderung ablehnen", "Letzte Herrausforderung ablehnen")))
.register();
}
@@ -122,113 +128,44 @@ public class PvpCommand {
}
public static void pvpWhitelist(Player sender, CommandArguments args, int action) {
public static void pvpList(Player sender, CommandArguments args, String key,String listName, int action) {
//PvP Whitelist Command
Player pargs = (Player) args.get("Player");
PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey whitelist = new NamespacedKey(Pvptoggle.pvptoggle, "whitelist");
PersistentDataContainer pdcList = pdc.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdc.getAdapterContext().newPersistentDataContainer());
if (action == 1) {
//anzeigen
if (pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
if(pdcwhitelist != null) {
if(!pdcList.isEmpty()){
int i = 0;
for (NamespacedKey whitelistkey:pdcwhitelist.getKeys()) {
for (NamespacedKey uuid:pdcList.getKeys()) {
i++;
sender.sendMessage(ChatColor.BLUE + "" + i + ". " + ChatColor.DARK_BLUE + "" + Bukkit.getPlayer(UUID.fromString(pdcwhitelist.get(whitelistkey, PersistentDataType.STRING))).getDisplayName());
sender.sendMessage(""+ChatColor.DARK_BLUE + i + ". " + ChatColor.BLUE +Bukkit.getPlayer(UUID.fromString(uuid.getKey())).getName());
}
} else {
sender.sendMessage("Deine Whitelist ist leer");
sender.sendMessage("Deine "+listName+ "ist leer");
}
} else {
sender.sendMessage("Deine Whitelist ist leer");
}
sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht");
} else if (action == 2) {
//hinzufügen
if (!pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
//pdc erstellen
if (pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) {
sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "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() + "wurde zu deiner "+listName+" hinzugefügt");
}
PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
pdcwhitelist.set(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING, pargs.getUniqueId().toString());
sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde zu deiner Whitelist hinzugefügt");
sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht");
} else if (action == 3) {
//entfernen
if (!pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "ist nicht in deiner Whitelist");
return;
}
PersistentDataContainer whitelistpdc = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
if (whitelistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING)) {
whitelistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()));
sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde aus deiner Whitelist entfernt");
if (!pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) {
sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "ist nicht in deiner "+listName);
}else{
sender.sendMessage(ChatColor.RED + pargs.getDisplayName() + "ist nicht in deiner Whitelist");
pdcList.remove(new NamespacedKey(Pvptoggle.pvptoggle,((Player)args.get("Player")).getUniqueId().toString()));
sender.sendMessage(ChatColor.GREEN + ((Player)args.get("Player")).getDisplayName() + "wurde aus deiner "+listName+" entfernt");
}
sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht");
} else {
sender.sendMessage("Fehler");
}
pdc.set(new NamespacedKey(Pvptoggle.pvptoggle,key),PersistentDataType.TAG_CONTAINER,pdcList);
}
public static void pvpBlacklist(Player sender, CommandArguments args, int action) {
//PvP Blacklist Command
Player pargs = (Player) args.get("Player");
PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey blacklist = new NamespacedKey(Pvptoggle.pvptoggle, "blacklist");
if (action == 1) {
//anzeigen
if (pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
PersistentDataContainer pdcblacklist = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER);
if(pdcblacklist != null) {
int i = 0;
for (NamespacedKey blacklistkey:pdcblacklist.getKeys()) {
i++;
sender.sendMessage(ChatColor.BLUE + "" + i + ". " + ChatColor.BLUE + "" + Bukkit.getPlayer(UUID.fromString(pdcblacklist.get(blacklistkey, PersistentDataType.STRING))).getDisplayName());
}
} else {
sender.sendMessage("Deine Blacklist ist leer");
}
} else {
sender.sendMessage("Deine Blacklist ist leer");
}
sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht");
} else if (action == 2) {
//hinzufügen
if (!pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
//pdc erstellen
}
PersistentDataContainer pdcblacklist = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER);
pdcblacklist.set(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING, pargs.getUniqueId().toString());
sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde zu deiner Blacklist hinzugefügt");
sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht");
} else if (action == 3) {
//entfernen
if (!pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "ist nicht in deiner Blacklist");
return;
}
PersistentDataContainer blacklistpdc = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER);
if (blacklistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING)) {
blacklistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()));
sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde aus deiner Blacklist entfernt");
} else {
sender.sendMessage(ChatColor.RED + pargs.getDisplayName() + "ist nicht in deiner Blacklist");
}
sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht");
} else {
sender.sendMessage("Fehler");
}
}
public static void pvpFight(Player sender, CommandArguments args, int action) {
//PvP Fight Command
if (action == 0) {