Files
PvpTogglePlugin/pvptogglepluginworkspace/src/main/java/benkralex/pvptoggle/PvpCommand.java
T
2023-08-24 17:07:53 +02:00

177 lines
8.9 KiB
Java

package benkralex.pvptoggle;
import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPICommand;
import dev.jorel.commandapi.executors.CommandArguments;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
public class PvpCommand {
public static void createPvpCommand() {
//Create PVP-Command with Command-API
new CommandAPICommand("pvp")
.executesPlayer((sender, args)->{pvpInv(sender, args);})
.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);})
.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);})
.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);})
.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);})
.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);})
.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);})
.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);})
.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);})
.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.")))
.register();
}
public static void pvpInv(Player sender, CommandArguments args) {
sender.openInventory(InventoryMenu.pvpMenu(sender));
}
public static void pvpToggle(Player sender, CommandArguments args) {
NamespacedKey pvptoggle = new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle");
PersistentDataContainer pdc = sender.getPersistentDataContainer();
if (pdc.has(pvptoggle, PersistentDataType.BOOLEAN)) {
pdc.set(pvptoggle, PersistentDataType.BOOLEAN, !pdc.get(pvptoggle, PersistentDataType.BOOLEAN));
sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
} else {
pdc.set(pvptoggle, PersistentDataType.BOOLEAN, Config.getPvpProt());
sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus"));
}
}
public static void pvpUltra(Player sender, CommandArguments args) {
//PvP Ultra Command
NamespacedKey ultra = new NamespacedKey(Pvptoggle.pvptoggle, "ultra");
PersistentDataContainer pdc = sender.getPersistentDataContainer();
if (pdc.has(ultra, PersistentDataType.BOOLEAN)) {
pdc.set(ultra, PersistentDataType.BOOLEAN, !pdc.get(ultra, PersistentDataType.BOOLEAN));
sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
} else {
pdc.set(ultra, PersistentDataContainer.BOOLEAN, true);
sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
}
}
public static void pvpWhitelist(Player sender, CommandArguments args, Int action) {
//PvP Whitelist Command
PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey whitelist = new NamespacedKey(Pvptoggle.pvptoggle, "whitelist");
if (action == 1) {
//anzeigen
if (pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
if(pdcwhitelist != null) {
int i = 0;
for (NamespacedKey whitelistkey:pdcwhitelist.getKeys()) {
sender.sendMessage(ChatColor.LIGHT_GREEN + i + ". " + ChatColor.GREEN + pdcwhitelist.get(whitelistkey, PersistentDataType.STRING));
}
} else {
sender.sendMessage("Deine Whitelist ist leer");
}
} else {
sender.sendMessage("Deine Whitelist ist leer");
}
//sender.sendMessage("Du kannst dir die Whitelist nicht anzeigen");
} else if (action == 2) {
//hinzufügen
if (pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
}
sender.sendMessage("Du kannst " + args.get("Player") + " nicht zur der Whitelist hinzufügen");
} else if (action == 3) {
//entfernen
/*if (pdc.has(whitelist, PersistentDataType.TAG_CONTAINER)) {
} else {
}*/
if (args[0] instanceof player) {
Util.pdcTagContaineradd(sender, whitelist, args[0], true);
} else {
sender.sendMessage("'" + args.get("Player").getName() + "' ist kein Spieler")
}
sender.sendMessage("Du kannst " + args.get("Player").getName() + " nicht aus der Whitelist entfernen");
} else {
sender.sendMessage("Fehler");
}
}
public static void pvpBlacklist(Player sender, CommandArguments args, Int action) {
//PvP Blacklist Command
PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey blacklist = new NamespacedKey(Pvptoggle.pvptoggle, "blacklist");
if (action == 1) {
//anzeigen
if (pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
//
}
sender.sendMessage("Du kannst dir die Blacklist nicht anzeigen");
} else if (action == 2) {
//hinzufügen
if (pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
//
}
sender.sendMessage("Du kannst " + args.get("Player").getName() + " nicht zur der Blacklist hinzufügen");
} else if (action == 3) {
//entfernen
if (pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
//
}
sender.sendMessage("Du kannst " + args.get("Player").getName() + " nicht aus der Blacklist entfernen");
} else {
sender.sendMessage("Fehler");
}
}
}