Allow offline Players

This commit is contained in:
skippyall
2023-08-31 10:59:32 +02:00
parent 8708c0db24
commit c1612a6d80
2 changed files with 17 additions and 14 deletions
@@ -3,6 +3,7 @@ package benkralex.pvptoggle;
import dev.jorel.commandapi.executors.CommandArguments; import dev.jorel.commandapi.executors.CommandArguments;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@@ -19,7 +20,7 @@ public class ListListener implements Listener {
Player p = (Player) e.getWhoClicked(); Player p = (Player) e.getWhoClicked();
if (item.getType() == Material.PLAYER_HEAD && e.isRightClick()) { if (item.getType() == Material.PLAYER_HEAD && e.isRightClick()) {
Player ptarget = (Player) ((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.pvpWhitelistMenu(p));
@@ -1,6 +1,7 @@
package benkralex.pvptoggle; package benkralex.pvptoggle;
import dev.jorel.commandapi.CommandAPICommand; import dev.jorel.commandapi.CommandAPICommand;
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
import dev.jorel.commandapi.arguments.PlayerArgument; import dev.jorel.commandapi.arguments.PlayerArgument;
import dev.jorel.commandapi.executors.CommandArguments; import dev.jorel.commandapi.executors.CommandArguments;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
@@ -8,6 +9,7 @@ import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
@@ -44,16 +46,16 @@ public class PvpCommand {
.withUsage("/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.") .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") .withSubcommand(new CommandAPICommand("add")
.executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"whitelist","Whitelist", ADD_ACTION);}) .executesPlayer((sender, args)->{pvpList(sender, (OfflinePlayer) args.get("Player"),"whitelist","Whitelist", ADD_ACTION);})
.withPermission("pvp.whitelist") .withPermission("pvp.whitelist")
.withUsage("/pvp whitelist add <Player>") .withUsage("/pvp whitelist add <Player>")
.withArguments(new PlayerArgument("Player")) .withArguments(new OfflinePlayerArgument("Player"))
.withHelp("Spieler zu Whitelist hinzufügen", "Du kannst damit Spieler zu deiner Whitelist hinzufügen.")) .withHelp("Spieler zu Whitelist hinzufügen", "Du kannst damit Spieler zu deiner Whitelist hinzufügen."))
.withSubcommand(new CommandAPICommand("remove") .withSubcommand(new CommandAPICommand("remove")
.executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"whitelist","Whitelist", REMOVE_ACTION);}) .executesPlayer((sender, args)->{pvpList(sender, (OfflinePlayer) args.get("Player"),"whitelist","Whitelist", REMOVE_ACTION);})
.withPermission("pvp.whitelist") .withPermission("pvp.whitelist")
.withUsage("/pvp whitelist remove <Player>") .withUsage("/pvp whitelist remove <Player>")
.withArguments(new PlayerArgument("Player")) .withArguments(new OfflinePlayerArgument("Player"))
.withHelp("Spieler aus Whitelist entfernen", "Du kannst damit Spieler aus deiner Whitelist entfernen."))) .withHelp("Spieler aus Whitelist entfernen", "Du kannst damit Spieler aus deiner Whitelist entfernen.")))
.withSubcommand(new CommandAPICommand("blacklist") .withSubcommand(new CommandAPICommand("blacklist")
.executesPlayer((sender, args)->{pvpList(sender, null,"blacklist","Blacklist", SHOW_ACTION);}) .executesPlayer((sender, args)->{pvpList(sender, null,"blacklist","Blacklist", SHOW_ACTION);})
@@ -61,16 +63,16 @@ public class PvpCommand {
.withUsage("/pvp blacklist <Player>") .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.") .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") .withSubcommand(new CommandAPICommand("add")
.executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"blacklist","Blacklist", ADD_ACTION);}) .executesPlayer((sender, args)->{pvpList(sender, (OfflinePlayer) args.get("Player"),"blacklist","Blacklist", ADD_ACTION);})
.withPermission("pvp.blacklist") .withPermission("pvp.blacklist")
.withUsage("/pvp blacklist add <Player>") .withUsage("/pvp blacklist add <Player>")
.withArguments(new PlayerArgument("Player")) .withArguments(new OfflinePlayerArgument("Player"))
.withHelp("Spieler zu Blacklist hinzufügen", "Du kannst damit Spieler zu deiner Blacklist hinzufügen.")) .withHelp("Spieler zu Blacklist hinzufügen", "Du kannst damit Spieler zu deiner Blacklist hinzufügen."))
.withSubcommand(new CommandAPICommand("remove") .withSubcommand(new CommandAPICommand("remove")
.executesPlayer((sender, args)->{pvpList(sender, (Player) args.get("Player"),"blacklist","Blacklist", REMOVE_ACTION);}) .executesPlayer((sender, args)->{pvpList(sender, (OfflinePlayer) args.get("Player"),"blacklist","Blacklist", REMOVE_ACTION);})
.withPermission("pvp.blacklist") .withPermission("pvp.blacklist")
.withUsage("/pvp blacklist remove <Player>") .withUsage("/pvp blacklist remove <Player>")
.withArguments(new PlayerArgument("Player")) .withArguments(new OfflinePlayerArgument("Player"))
.withHelp("Spieler aus Blacklist entfernen", "Du kannst damit Spieler aus deiner Blacklist entfernen."))) .withHelp("Spieler aus Blacklist entfernen", "Du kannst damit Spieler aus deiner Blacklist entfernen.")))
.withSubcommand(new CommandAPICommand("fight") .withSubcommand(new CommandAPICommand("fight")
.executesPlayer((sender, args)->{pvpFight(sender, args, CHALLENGE_ACTION);}) .executesPlayer((sender, args)->{pvpFight(sender, args, CHALLENGE_ACTION);})
@@ -129,7 +131,7 @@ public class PvpCommand {
} }
public static void pvpList(Player sender, Player ptarget, String key,String listName, int action) { public static void pvpList(Player sender, OfflinePlayer ptarget, String key, String listName, int action) {
//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());
@@ -148,18 +150,18 @@ public class PvpCommand {
} else if (action == 2) { } else if (action == 2) {
//hinzufügen //hinzufügen
if (pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { 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); sender.sendMessage(ChatColor.RED + "Der Spieler " + ptarget.getName() + ChatColor.RED + " ist schon in deiner " + listName);
}else{ }else{
pdcList.set(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER,pdcList.getAdapterContext().newPersistentDataContainer()); 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"); sender.sendMessage(ChatColor.GREEN + ptarget.getName() + ChatColor.GREEN + " wurde zu deiner "+listName+" hinzugefügt");
} }
} else if (action == 3) { } else if (action == 3) {
//entfernen //entfernen
if (!pdcList.has(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()),PersistentDataType.TAG_CONTAINER)) { 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); sender.sendMessage(ChatColor.RED + "Der Spieler " + ptarget.getName() + ChatColor.RED + " ist nicht in deiner "+listName);
}else{ }else{
pdcList.remove(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString())); pdcList.remove(new NamespacedKey(Pvptoggle.pvptoggle,ptarget.getUniqueId().toString()));
sender.sendMessage(ChatColor.GREEN + ptarget.getDisplayName() + ChatColor.GREEN + " wurde aus deiner "+listName+" entfernt"); sender.sendMessage(ChatColor.GREEN + ptarget.getName() + ChatColor.GREEN + " wurde aus deiner "+listName+" entfernt");
} }
} else { } else {
sender.sendMessage("Fehler"); sender.sendMessage("Fehler");