Bug fixes

This commit is contained in:
Benkralex
2023-08-26 08:15:48 +02:00
parent 4680e0442f
commit 7babcad82a
6 changed files with 130 additions and 93 deletions
@@ -7,20 +7,20 @@ import java.time.Instant;
public class Config { public class Config {
privat FileConfiguration config = Pvptoggle.pvptoggle.getConfig(); private static FileConfiguration config = Pvptoggle.pvptoggle.getConfig();
public static void createConfig() { public static void createConfig() {
config.options().copyDefaults(true); config.options().copyDefaults(true);
config.addDefault("pvp-time-hit-back", 60); config.addDefault("pvp-time-hit-back", 60);
config.addDefault("default-pvp-protection", true); config.addDefault("default-pvp-protection", true);
Pvptoggle.pvptoggle.saveConfig(); Pvptoggle.pvptoggle.saveConfig();
} }
public static int getPvpTime() { public static int getPvpTime() {
return config.getInt("pvp-time-hit-back"); return config.getInt("pvp-time-hit-back");
} }
public static int getPvpProt() { public static boolean getPvpProt() {
return config.getBoolean("default-pvp-protection"); return config.getBoolean("default-pvp-protection");
} }
@@ -1,43 +1,50 @@
package benkralex.pvptoggle; package benkralex.pvptoggle;
import org.bukkit.NamespacedKey;
import benkralex.pvptoggle.InventoryMenu;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
public class InventoryListener implements Listener{ public class InventoryListener implements Listener{
@EventHandler @EventHandler
public void onPvpMenuInteract(InventoryClickEvent e) { public void onPvpMenuInteract(InventoryClickEvent e) {
Player p = e.getWhoClicked(); Player p = (Player) e.getWhoClicked();
Inventory inv = e.getClickedInventory(); Inventory inv = e.getClickedInventory();
String invtitle = e.getView().getTitle(); String invtitle = e.getView().getTitle();
PersistentDataContainer pdc = p.getPersistentDataContainer();
NamespacedKey pvptoggle = new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle");
NamespacedKey ultra = new NamespacedKey(Pvptoggle.pvptoggle, "ultra");
if (invtitle.equals("PvP-Menu")) { if (invtitle.equals("PvP-Menu")) {
event.setCancelled(true); e.setCancelled(true);
if (event.getCurrentItem() != null) { if (e.getCurrentItem() != null) {
switch (e.getCurrentItem().getItemMeta().getDisplayName()) { switch (e.getCurrentItem().getItemMeta().getDisplayName()) {
case "Inventar schließen": case "Inventar schließen":
p.closeInventory(); p.closeInventory();
break; break;
case "Ultra an/aus schalten": case "Ultra an/aus schalten":
multra.setDisplayName("Ultra an/aus schalten");
if (pdc.has(ultra, PersistentDataType.BOOLEAN)) { if (pdc.has(ultra, PersistentDataType.BOOLEAN)) {
pdc.set(ultra, PersistentDataType.BOOLEAN, !pdc.get(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")); p.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
inv.setItem(12, InventoryMenu.getMenuItem(1, p)); inv.setItem(12, InventoryMenu.getMenuItem(1, p));
} else { } else {
pdc.set(ultra, PersistentDataContainer.BOOLEAN, true); pdc.set(ultra, PersistentDataType.BOOLEAN, true);
sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus")); p.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
inv.setItem(12, InventoryMenu.getMenuItem(1, p)); inv.setItem(12, InventoryMenu.getMenuItem(1, p));
} }
break; break;
case "PvP-Schutz an/aus schalten": case "PvP-Schutz an/aus schalten":
mtoggle.setDisplayName("PvP-Schutz an/aus schalten");
if (pdc.has(pvptoggle, PersistentDataType.BOOLEAN)) { if (pdc.has(pvptoggle, PersistentDataType.BOOLEAN)) {
pdc.set(pvptoggle, PersistentDataType.BOOLEAN, !pdc.get(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")); p.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
inv.setItem(10, InventoryMenu.getMenuItem(0, p)); inv.setItem(10, InventoryMenu.getMenuItem(0, p));
} else { } else {
pdc.set(pvptoggle, PersistentDataType.BOOLEAN, Config.getPvpProt()); pdc.set(pvptoggle, PersistentDataType.BOOLEAN, Config.getPvpProt());
sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus")); p.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
inv.setItem(10, InventoryMenu.getMenuItem(0, p)); inv.setItem(10, InventoryMenu.getMenuItem(0, p));
} }
break; break;
@@ -55,7 +62,7 @@ public class InventoryListener implements Listener{
} }
} }
} else if (invtitle.equals("Whitelist-Menu")) { } else if (invtitle.equals("Whitelist-Menu")) {
if (event.getCurrentItem() != null) { if (e.getCurrentItem() != null) {
switch (e.getCurrentItem().getItemMeta().getDisplayName()) { switch (e.getCurrentItem().getItemMeta().getDisplayName()) {
case "Inventar schließen": case "Inventar schließen":
p.closeInventory(); p.closeInventory();
@@ -67,7 +74,7 @@ public class InventoryListener implements Listener{
} }
} }
} else if (invtitle.equals("Blacklist-Menu")) { } else if (invtitle.equals("Blacklist-Menu")) {
if (event.getCurrentItem() != null) { if (e.getCurrentItem() != null) {
switch (e.getCurrentItem().getItemMeta().getDisplayName()) { switch (e.getCurrentItem().getItemMeta().getDisplayName()) {
case "Inventar schließen": case "Inventar schließen":
p.closeInventory(); p.closeInventory();
@@ -79,7 +86,7 @@ public class InventoryListener implements Listener{
} }
} }
} else if (invtitle.equals("Operator-Menu")) { } else if (invtitle.equals("Operator-Menu")) {
if (event.getCurrentItem() != null) { if (e.getCurrentItem() != null) {
switch (e.getCurrentItem().getItemMeta().getDisplayName()) { switch (e.getCurrentItem().getItemMeta().getDisplayName()) {
case "Inventar schließen": case "Inventar schließen":
p.closeInventory(); p.closeInventory();
@@ -90,21 +97,21 @@ public class InventoryListener implements Listener{
break; break;
case "Standard PvP-Schutz an/aus schalten": case "Standard PvP-Schutz an/aus schalten":
Config.setPvpProt(!Config.getPvpProt()); Config.setPvpProt(!Config.getPvpProt());
inv.set(11, InventoryMenu.getMenuItem(8)); inv.setItem(11, InventoryMenu.getMenuItem(8, p));
break; break;
case "Zeit um zurückzuschlagen erhöhen": case "Zeit um zurückzuschlagen erhöhen":
if (e.isRightClick()) { if (e.isRightClick()) {
Config.setPvpTime(getPvpTime() + 1); Config.setPvpTime(Config.getPvpTime() + 1);
} else if (e.isLeftClick()) { } else if (e.isLeftClick()) {
Config.setPvpTime(getPvpTime() + 10); Config.setPvpTime(Config.getPvpTime() + 10);
} }
inv.setItem(15, InventoryMenu.getMenuItem(9)); inv.setItem(15, InventoryMenu.getMenuItem(9, p));
break; break;
case "Zeit um zurückzuschlagen erniedrigen": case "Zeit um zurückzuschlagen erniedrigen":
if (e.isRightClick()) { if (e.isRightClick()) {
Config.setPvpTime(getPvpTime() - 1); Config.setPvpTime(Config.getPvpTime() - 1);
} else if (e.isLeftClick()) { } else if (e.isLeftClick()) {
Config.setPvpTime(getPvpTime() - 10); Config.setPvpTime(Config.getPvpTime() - 10);
} }
inv.setItem(15, InventoryMenu.getMenuItem(9, p)); inv.setItem(15, InventoryMenu.getMenuItem(9, p));
break; break;
@@ -1,6 +1,20 @@
package benkralex.pvptoggle;
import benkralex.pvptoggle.Config;
import benkralex.pvptoggle.Pvptoggle;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import java.util.ArrayList;
import java.util.List;
public class InventoryMenu { public class InventoryMenu {
public static final int PVP_TOGGLE=0; public static final int PVP_TOGGLE=0;
@@ -17,37 +31,41 @@ public class InventoryMenu {
public static final int PVP_TIME_MINUS=11; public static final int PVP_TIME_MINUS=11;
public static ItemStack getMenuItem(int i, Player p) { public static ItemStack getMenuItem(int i, Player p) {
switch i { List<String> lore = new ArrayList<String >();
switch (i) {
case 0: case 0:
ItemStack itoggle = new ItemStack(Material.IRON_SWORD); ItemStack itoggle = new ItemStack(Material.IRON_SWORD);
ItemMeta mtoggle = itoggle.getItemMeta(); ItemMeta mtoggle = itoggle.getItemMeta();
mtoggle.setDispalyName("PvP-Schutz an/aus schalten"); mtoggle.setDisplayName("PvP-Schutz an/aus schalten");
mtoggle.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mtoggle.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
mtoggle.setLore(ChatColor.BLUE + (p.getPersistentDataContainer().get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"Aus":"An" +) " schalten"); String s = p.getPersistentDataContainer().get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"Aus":"An";
lore.add(ChatColor.BLUE + s + " schalten");
mtoggle.setLore(lore);
itoggle.setItemMeta(mtoggle); itoggle.setItemMeta(mtoggle);
return itoggle; return itoggle;
break; break;
case 1: case 1:
ItemStack iultra = new ItemStack(Material.DIAMOND_SWORD); ItemStack iultra = new ItemStack(Material.DIAMOND_SWORD);
ItemMeta multra = iultra.getItemMeta(); ItemMeta multra = iultra.getItemMeta();
multra.setDispalyName("Ultra an/aus schalten"); multra.setDisplayName("Ultra an/aus schalten");
multra.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); multra.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
multra.setLore(ChatColor.BLUE + (p.getPersistentDataContainer().get(new NamespacedKey(Pvptoggle.pvptoggle, "pvpultra"), PersistentDataType.BOOLEAN)?"Aus":"An") + " schalten"); lore.add(ChatColor.BLUE + (p.getPersistentDataContainer().get(new NamespacedKey(Pvptoggle.pvptoggle, "pvpultra"), PersistentDataType.BOOLEAN)?"Aus":"An") + " schalten");
multra.setLore(lore);
iultra.setItemMeta(multra); iultra.setItemMeta(multra);
return iultra; return iultra;
break; break;
case 2: case 2:
ItemStack iwhitelist = new ItemStack(Material.WHITE_CONCRET); ItemStack iwhitelist = new ItemStack(Material.WHITE_CONCRETE);
ItemMeta mwhitelist = iwhitelist.getItemMeta(); ItemMeta mwhitelist = iwhitelist.getItemMeta();
mwhitelist.setDispalyName("Whitelist"); mwhitelist.setDisplayName("Whitelist");
mwhitelist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mwhitelist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
iwhitelist.setItemMeta(mwhitelist); iwhitelist.setItemMeta(mwhitelist);
return iwhitelist; return iwhitelist;
break; break;
case 3: case 3:
ItemStack iblacklist = new ItemStack(Material.BLACK_CONCRET); ItemStack iblacklist = new ItemStack(Material.BLACK_CONCRETE);
ItemMeta mblacklist = iblacklist.getItemMeta(); ItemMeta mblacklist = iblacklist.getItemMeta();
mblacklist.setDispalyName("Blacklist"); mblacklist.setDisplayName("Blacklist");
mblacklist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mblacklist.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
iblacklist.setItemMeta(mblacklist); iblacklist.setItemMeta(mblacklist);
return iblacklist; return iblacklist;
@@ -55,7 +73,7 @@ public class InventoryMenu {
case 4: case 4:
ItemStack iop = new ItemStack(Material.BEDROCK); ItemStack iop = new ItemStack(Material.BEDROCK);
ItemMeta mop = iop.getItemMeta(); ItemMeta mop = iop.getItemMeta();
mop.setDispalyName("Menu für Operators"); mop.setDisplayName("Menu für Operators");
mop.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mop.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
iop.setItemMeta(mop); iop.setItemMeta(mop);
/*if (p.hasPermission("pvp.inv.op")) { /*if (p.hasPermission("pvp.inv.op")) {
@@ -66,7 +84,7 @@ public class InventoryMenu {
case 5: case 5:
ItemStack iclose = new ItemStack(Material.BARRIER); ItemStack iclose = new ItemStack(Material.BARRIER);
ItemMeta mclose = iclose.getItemMeta(); ItemMeta mclose = iclose.getItemMeta();
mclose.setDispalyName("Inventar schließen"); mclose.setDisplayName("Inventar schließen");
mclose.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mclose.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
iclose.setItemMeta(mclose); iclose.setItemMeta(mclose);
//inv.setItem(8, getMenuItem(5)); //inv.setItem(8, getMenuItem(5));
@@ -75,14 +93,14 @@ public class InventoryMenu {
case 6: case 6:
ItemStack iback = new ItemStack(Material.HOPPER); ItemStack iback = new ItemStack(Material.HOPPER);
ItemMeta mback = iback.getItemMeta(); ItemMeta mback = iback.getItemMeta();
mback.setDispalyName("Zurück"); mback.setDisplayName("Zurück");
mback.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mback.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
iback.setItemMeta(mback); iback.setItemMeta(mback);
//inv.setItem(26, getMenuItem(6)); //inv.setItem(26, getMenuItem(6));
return iback; return iback;
break; break;
case 7: case 7:
ItemStack ivoid = new ItemStack(Material.LIGHT_GRAY_STAIND_GLASS_PAIN); ItemStack ivoid = new ItemStack(Material.LIGHT_GRAY_STAINED_GLASS_PANE);
ItemMeta mvoid = ivoid.getItemMeta(); ItemMeta mvoid = ivoid.getItemMeta();
mvoid.setDisplayName(""); mvoid.setDisplayName("");
mvoid.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mvoid.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
@@ -98,7 +116,8 @@ public class InventoryMenu {
ItemStack idefaultprot = new ItemStack(Material.GOLDEN_SWORD); ItemStack idefaultprot = new ItemStack(Material.GOLDEN_SWORD);
ItemMeta mdefaultprot = idefaultprot.getItemMeta(); ItemMeta mdefaultprot = idefaultprot.getItemMeta();
mdefaultprot.setDisplayName("Standard PvP-Schutz an/aus schalten"); mdefaultprot.setDisplayName("Standard PvP-Schutz an/aus schalten");
mdefaultprot.setLore(ChatColor.BLUE + (Config.getPvpProt()?"Aus":"An") + " schalten"); lore.add(ChatColor.BLUE + (Config.getPvpProt()?"Aus":"An") + " schalten");
mdefaultprot.setLore(lore);
mdefaultprot.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mdefaultprot.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
idefaultprot.setItemMeta(mdefaultprot); idefaultprot.setItemMeta(mdefaultprot);
return idefaultprot; return idefaultprot;
@@ -107,7 +126,8 @@ public class InventoryMenu {
ItemStack ipvptime = new ItemStack(Material.CLOCK); ItemStack ipvptime = new ItemStack(Material.CLOCK);
ItemMeta mpvptime = ipvptime.getItemMeta(); ItemMeta mpvptime = ipvptime.getItemMeta();
mpvptime.setDisplayName("Zeit um zurückzuschlagen"); mpvptime.setDisplayName("Zeit um zurückzuschlagen");
mpvptime.setLore(ChatColor.BLUE + Config.getPvpTime() + " Sekunden um zurückzuschlagen"); lore.add(ChatColor.BLUE + "" + Config.getPvpTime() + " Sekunden um zurückzuschlagen");
mpvptime.setLore(lore);
mpvptime.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mpvptime.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
ipvptime.setItemMeta(mpvptime); ipvptime.setItemMeta(mpvptime);
return ipvptime; return ipvptime;
@@ -117,7 +137,9 @@ public class InventoryMenu {
ItemMeta mpvptimeplus = ipvptimeplus.getItemMeta(); ItemMeta mpvptimeplus = ipvptimeplus.getItemMeta();
mpvptimeplus.setDisplayName("Zeit um zurückzuschlagen erhöhen"); mpvptimeplus.setDisplayName("Zeit um zurückzuschlagen erhöhen");
mpvptimeplus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mpvptimeplus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
mpvptimeplus.setLore(ChatColor.BLUE + "Rechtsklick:" + ChatColor.GREEN + " +1\n" + ChatColor.BLUE + "Linksklick:" + ChatColor.GREEN + " +10"); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.GREEN + " +1");
lore.add(ChatColor.BLUE + "Linksklick:" + ChatColor.GREEN + " +10");
mpvptimeplus.setLore(lore);
ipvptimeplus.setItemMeta(mpvptimeplus); ipvptimeplus.setItemMeta(mpvptimeplus);
return ipvptimeplus; return ipvptimeplus;
break; break;
@@ -126,24 +148,29 @@ public class InventoryMenu {
ItemMeta mpvptimeminus = ipvptimeminus.getItemMeta(); ItemMeta mpvptimeminus = ipvptimeminus.getItemMeta();
mpvptimeminus.setDisplayName("Zeit um zurückzuschlagen verringern"); mpvptimeminus.setDisplayName("Zeit um zurückzuschlagen verringern");
mpvptimeminus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); mpvptimeminus.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
mpvptimeminus.setLore(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " -1\n" + ChatColor.BLUE + "Linksklick:" + ChatColor.RED + " -10"); lore.add(ChatColor.BLUE + "Rechtsklick:" + ChatColor.RED + " -1");
lore.add(ChatColor.BLUE + "Linksklick:" + ChatColor.RED + " -10");
mpvptimeminus.setLore(lore);
ipvptimeminus.setItemMeta(mpvptimeminus); ipvptimeminus.setItemMeta(mpvptimeminus);
return ipvptimeminus; return ipvptimeminus;
break; break;
default:
break;
} }
return null;
} }
public static Inventory pvpMenuFillEmpty(Inventory inv, Player p) { public static Inventory pvpMenuFillEmpty(Inventory inv, Player p) {
for (int i = 0, i <= (inv.getSize-1), i++) { for (int i = 0; i <= inv.getSize()-1; i++) {
if (inv.getItem(i) == Material.AIR) { if (inv.getItem(i).equals(Material.AIR)) {
inv.set(i, getMenuItem(7, p)); inv.setItem(i, getMenuItem(7, p));
} }
} }
return inv; return inv;
} }
public static Inventory pvpMenu(Player p) { public static Inventory pvpMenu(Player p) {
Inventory inv = new Bukkit.createInventory(null, 3*9, "PvP-Menu"); Inventory inv = Bukkit.createInventory(null, 3 * 9, "PvP-Menu");
inv.setItem(10, getMenuItem(0, p)); inv.setItem(10, getMenuItem(0, p));
inv.setItem(12, getMenuItem(1, p)); inv.setItem(12, getMenuItem(1, p));
@@ -159,7 +186,7 @@ public class InventoryMenu {
public static Inventory pvpBlacklistMenu(Player p) { public static Inventory pvpBlacklistMenu(Player p) {
Inventory inv = new Bukkit.createInventory(null, 3*9, "Blacklist-Menu"); Inventory inv = Bukkit.createInventory(null, 3*9, "Blacklist-Menu");
inv.setItem(8, getMenuItem(5, p)); inv.setItem(8, getMenuItem(5, p));
inv.setItem(26, getMenuItem(6, p)); inv.setItem(26, getMenuItem(6, p));
@@ -168,7 +195,7 @@ public class InventoryMenu {
public static Inventory pvpWhitelistMenu(Player p) { public static Inventory pvpWhitelistMenu(Player p) {
Inventory inv = new Bukkit.createInventory(null, 3*9, "Whitelist-Menu"); Inventory inv = Bukkit.createInventory(null, 3*9, "Whitelist-Menu");
inv.setItem(8, getMenuItem(5, p)); inv.setItem(8, getMenuItem(5, p));
inv.setItem(26, getMenuItem(6, p)); inv.setItem(26, getMenuItem(6, p));
@@ -177,7 +204,7 @@ public class InventoryMenu {
public static Inventory pvpOpSettingsMenu(Player p) { public static Inventory pvpOpSettingsMenu(Player p) {
Inventory inv = new Bukkit.createInventory(null, 3*9, "Operator-Menu"); Inventory inv = Bukkit.createInventory(null, 3*9, "Operator-Menu");
inv.setItem(8, getMenuItem(5, p)); inv.setItem(8, getMenuItem(5, p));
inv.setItem(26, getMenuItem(6, p)); inv.setItem(26, getMenuItem(6, p));
inv.setItem(11, getMenuItem(8, p)); inv.setItem(11, getMenuItem(8, p));
@@ -2,12 +2,20 @@ package benkralex.pvptoggle;
import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPICommand; import dev.jorel.commandapi.CommandAPICommand;
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.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
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;
import java.util.UUID;
public class PvpCommand { public class PvpCommand {
public static void createPvpCommand() { public static void createPvpCommand() {
//Create PVP-Command with Command-API //Create PVP-Command with Command-API
@@ -60,7 +68,7 @@ public class PvpCommand {
.withUsage("/pvp blacklist remove <Player>") .withUsage("/pvp blacklist remove <Player>")
.withArguments(new PlayerArgument("Player")) .withArguments(new PlayerArgument("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 ConmmandAPICommand("fight") .withSubcommand(new CommandAPICommand("fight")
.executesPlayer((sender, args)->{pvpFight(sender, args, 0);}) .executesPlayer((sender, args)->{pvpFight(sender, args, 0);})
.withPermission("pvp.fight") .withPermission("pvp.fight")
.withUsage("/pvp fight <Player>") .withUsage("/pvp fight <Player>")
@@ -95,7 +103,7 @@ public class PvpCommand {
sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus")); sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
} else { } else {
pdc.set(pvptoggle, PersistentDataType.BOOLEAN, Config.getPvpProt()); pdc.set(pvptoggle, PersistentDataType.BOOLEAN, Config.getPvpProt());
sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus")); sender.sendMessage("Dein PvP-Schutz ist jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus"));
} }
} }
@@ -107,17 +115,18 @@ public class PvpCommand {
PersistentDataContainer pdc = sender.getPersistentDataContainer(); PersistentDataContainer pdc = sender.getPersistentDataContainer();
if (pdc.has(ultra, PersistentDataType.BOOLEAN)) { if (pdc.has(ultra, PersistentDataType.BOOLEAN)) {
pdc.set(ultra, PersistentDataType.BOOLEAN, !pdc.get(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")); sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(ultra, PersistentDataType.BOOLEAN)?"an":"aus"));
} else { } else {
pdc.set(ultra, PersistentDataContainer.BOOLEAN, true); pdc.set(ultra, PersistentDataType.BOOLEAN, true);
sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(pvptoggle, PersistentDataType.BOOLEAN)?"an":"aus")); sender.sendMessage("PvP-Ultra ist für dich jetzt " + (pdc.get(ultra, PersistentDataType.BOOLEAN)?"an":"aus"));
} }
} }
public static void pvpWhitelist(Player sender, CommandArguments args, Int action) { public static void pvpWhitelist(Player sender, CommandArguments args, int action) {
//PvP Whitelist Command //PvP Whitelist Command
Player pargs = (Player) args.get("Player");
PersistentDataContainer pdc = sender.getPersistentDataContainer(); PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey whitelist = new NamespacedKey(Pvptoggle.pvptoggle, "whitelist"); NamespacedKey whitelist = new NamespacedKey(Pvptoggle.pvptoggle, "whitelist");
if (action == 1) { if (action == 1) {
@@ -128,7 +137,7 @@ public class PvpCommand {
int i = 0; int i = 0;
for (NamespacedKey whitelistkey:pdcwhitelist.getKeys()) { for (NamespacedKey whitelistkey:pdcwhitelist.getKeys()) {
i++; i++;
sender.sendMessage(ChatColor.LIGHT_BLUE + i + ". " + ChatColor.BLUE + Bukkit.getPlayer(UUID.fromString(pdcwhitelist.get(whitelistkey, PersistentDataType.STRING))).getDisplayName()); sender.sendMessage(ChatColor.BLUE + "" + i + ". " + ChatColor.DARK_BLUE + "" + Bukkit.getPlayer(UUID.fromString(pdcwhitelist.get(whitelistkey, PersistentDataType.STRING))).getDisplayName());
} }
} else { } else {
sender.sendMessage("Deine Whitelist ist leer"); sender.sendMessage("Deine Whitelist ist leer");
@@ -143,8 +152,8 @@ public class PvpCommand {
//pdc erstellen //pdc erstellen
} }
PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER); PersistentDataContainer pdcwhitelist = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
pdcwhitelist.add(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId().toString()), PersistentDataType.STRING, args.get("Player").getUniqueId().toString())); pdcwhitelist.set(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING, pargs.getUniqueId().toString());
sender.sendMessage(ChatColor.LIGHT_GREEN + args.get("Player").getDisplayName() + "wurde zu deiner Whitelist hinzugefügt"); sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde zu deiner Whitelist hinzugefügt");
sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht"); sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht");
} else if (action == 3) { } else if (action == 3) {
@@ -154,11 +163,11 @@ public class PvpCommand {
return; return;
} }
PersistentDataContainer whitelistpdc = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER); PersistentDataContainer whitelistpdc = pdc.get(whitelist, PersistentDataType.TAG_CONTAINER);
if (whitelistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId()))) { if (whitelistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING)) {
whitelistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId().toString()), PersistentDataType.STRING); whitelistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()));
sender.sendMessage(ChatColor.LIGHT_GREEN + args.get("Player").getDispalyName() + "wurde aus deiner Whitelist entfernt"); sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde aus deiner Whitelist entfernt");
} else { } else {
sender.sendMessage(ChatColor.RED + args.get("Player").getDisplayName() + "ist nicht in deiner Whitelist"); sender.sendMessage(ChatColor.RED + pargs.getDisplayName() + "ist nicht in deiner Whitelist");
} }
sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht"); sender.sendMessage(ChatColor.RED + "Die Whitelist funktioniert aktuell nicht");
@@ -169,8 +178,9 @@ public class PvpCommand {
public static void pvpBlacklist(Player sender, CommandArguments args, Int action) { public static void pvpBlacklist(Player sender, CommandArguments args, int action) {
//PvP Blacklist Command //PvP Blacklist Command
Player pargs = (Player) args.get("Player");
PersistentDataContainer pdc = sender.getPersistentDataContainer(); PersistentDataContainer pdc = sender.getPersistentDataContainer();
NamespacedKey blacklist = new NamespacedKey(Pvptoggle.pvptoggle, "blacklist"); NamespacedKey blacklist = new NamespacedKey(Pvptoggle.pvptoggle, "blacklist");
if (action == 1) { if (action == 1) {
@@ -181,7 +191,7 @@ public class PvpCommand {
int i = 0; int i = 0;
for (NamespacedKey blacklistkey:pdcblacklist.getKeys()) { for (NamespacedKey blacklistkey:pdcblacklist.getKeys()) {
i++; i++;
sender.sendMessage(ChatColor.LIGHT_BLUE + i + ". " + ChatColor.BLUE + Bukkit.getPlayer(UUID.fromString(pdcblacklist.get(blacklistkey, PersistentDataType.STRING))).getDisplayName()); sender.sendMessage(ChatColor.BLUE + "" + i + ". " + ChatColor.BLUE + "" + Bukkit.getPlayer(UUID.fromString(pdcblacklist.get(blacklistkey, PersistentDataType.STRING))).getDisplayName());
} }
} else { } else {
sender.sendMessage("Deine Blacklist ist leer"); sender.sendMessage("Deine Blacklist ist leer");
@@ -195,23 +205,23 @@ public class PvpCommand {
if (!pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) { if (!pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
//pdc erstellen //pdc erstellen
} }
PersistentDataContainer pdcblacklist = pdc.get(blacklistlist, PersistentDataType.TAG_CONTAINER); PersistentDataContainer pdcblacklist = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER);
pdcblacklist.add(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId().toString()), PersistentDataType.STRING, args.get("Player").getUniqueId().toString())); pdcblacklist.set(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING, pargs.getUniqueId().toString());
sender.sendMessage(ChatColor.LIGHT_GREEN + args.get("Player").getDisplayName() + "wurde zu deiner Blacklist hinzugefügt"); sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde zu deiner Blacklist hinzugefügt");
sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht"); sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht");
} else if (action == 3) { } else if (action == 3) {
//entfernen //entfernen
if (!pdc.has(blacklistlist, PersistentDataType.TAG_CONTAINER)) { if (!pdc.has(blacklist, PersistentDataType.TAG_CONTAINER)) {
sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "ist nicht in deiner Blacklist"); sender.sendMessage(ChatColor.RED + "Der Spieler" + args.get("Player") + "ist nicht in deiner Blacklist");
return; return;
} }
PersistentDataContainer blacklistpdc = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER); PersistentDataContainer blacklistpdc = pdc.get(blacklist, PersistentDataType.TAG_CONTAINER);
if (blacklistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId()))) { if (blacklistpdc.has(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()), PersistentDataType.STRING)) {
whitelistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, args.get("Player").getUniqueId().toString()), PersistentDataType.STRING); blacklistpdc.remove(new NamespacedKey(Pvptoggle.pvptoggle, pargs.getUniqueId().toString()));
sender.sendMessage(ChatColor.LIGHT_GREEN + args.get("Player").getDispalyName() + "wurde aus deiner Blacklist entfernt"); sender.sendMessage(ChatColor.GREEN + pargs.getDisplayName() + "wurde aus deiner Blacklist entfernt");
} else { } else {
sender.sendMessage(ChatColor.RED + args.get("Player").getDisplayName() + "ist nicht in deiner Blacklist"); sender.sendMessage(ChatColor.RED + pargs.getDisplayName() + "ist nicht in deiner Blacklist");
} }
sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht"); sender.sendMessage(ChatColor.RED + "Die Blacklist funktioniert aktuell nicht");
@@ -220,17 +230,17 @@ public class PvpCommand {
} }
} }
public static void pvpFight(Player sender, Commandarguments args, int action) { public static void pvpFight(Player sender, CommandArguments args, int action) {
//PvP Fight Command //PvP Fight Command
if (action == 0) { if (action == 0) {
//Kampf herrausgefordert //Kampf herrausgefordert
Player pargs = args.get("Player"); Player pargs = (Player) args.get("Player");
TextComponent accept = new TextComponent(ChatColor.LIGHT_GREEN + "Annehmen"); TextComponent accept = new TextComponent(ChatColor.GREEN + "Annehmen");
TextComponent deny = new TextComponent(ChatColor.RED + "Ablehnen"); TextComponent deny = new TextComponent(ChatColor.RED + "Ablehnen");
accept.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/pvp fight accept")); accept.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/pvp fight accept"));
deny.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/pvp fight deny")); deny.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/pvp fight deny"));
pargs.sendMessage("Du wurdest von " + sender.getDisplayName() + " zu einem Kampf herrausgefordert."); pargs.sendMessage("Du wurdest von " + sender.getDisplayName() + " zu einem Kampf herrausgefordert.");
pargs.sendMessage(accept + ChatColor.WHITE + " | " + deny); pargs.sendMessage(accept + "" + ChatColor.WHITE + " | " + deny);
sender.sendMessage("Der Command funktioniert noch nicht"); sender.sendMessage("Der Command funktioniert noch nicht");
} else if (action == 1) { } else if (action == 1) {
//Kampf angenommen //Kampf angenommen
@@ -10,6 +10,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.projectiles.ProjectileSource; import org.bukkit.projectiles.ProjectileSource;
public class PvpEvent implements Listener { public class PvpEvent implements Listener {
@@ -50,10 +51,10 @@ public class PvpEvent implements Listener {
@EventHandler @EventHandler
public void playerJoinListener(PlayerJoinEvent event) { public void playerJoinListener(PlayerJoinEvent event) {
if (!event.getplayer().getPersistentDataContainer().has(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)) { if (!event.getPlayer().getPersistentDataContainer().has(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)) {
event.getPlayer().getPersistentDataContainer().set(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN, Config.getPvpProt()); event.getPlayer().getPersistentDataContainer().set(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN, Config.getPvpProt());
} else { } else {
event.getPlayer().sendMessage("Dein PvP-Schutz ist " + (pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus")); event.getPlayer().sendMessage("Dein PvP-Schutz ist " + (event.getPlayer().getPersistentDataContainer().get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus"));
} }
} }
} }
@@ -11,13 +11,15 @@ public class Util {
public static boolean canPvP(Player damager, Player victim){ public static boolean canPvP(Player damager, Player victim){
PersistentDataContainer damagerPDC=damager.getPersistentDataContainer(); PersistentDataContainer damagerPDC=damager.getPersistentDataContainer();
PersistentDataContainer victimPDC=victim.getPersistentDataContainer(); PersistentDataContainer victimPDC=victim.getPersistentDataContainer();
Boolean ultradamager;
Boolean ultravictim;
Boolean toggle = damagerPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"),PersistentDataType.BOOLEAN); Boolean toggle = damagerPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"),PersistentDataType.BOOLEAN);
if (victimPDC.has(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN)) { if (victimPDC.has(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN)) {
Boolean ultravictim = victimPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN); ultravictim = victimPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN);
} else {Boolean ultravictim = false;} } else {ultravictim = false;}
if (damagerPDC.has(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN)) { if (damagerPDC.has(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN)) {
Boolean ultradamager = damagerPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN); ultradamager = damagerPDC.get(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN);
} else {Boolean ultradamager = false;} } else {ultradamager = false;}
if(toggle!=null) { if(toggle!=null) {
return !toggle || checkPvPData(damager, victim) || !ultradamager || !ultravictim; return !toggle || checkPvPData(damager, victim) || !ultradamager || !ultravictim;
@@ -38,7 +40,7 @@ public class Util {
} }
public static void delOldData(PersistentDataContainer pvpdamagers){ public static void delOldData(PersistentDataContainer pvpdamagers){
for(NamespacedKey damagerKey:pvpdamagers.getKeys()){ for(NamespacedKey damagerKey:pvpdamagers.getKeys()){
if(pvpdamagers.get(damagerKey,PersistentDataType.LONG)>= Instant.now().getEpochSecond() + Config.getpvptime()){ if(pvpdamagers.get(damagerKey,PersistentDataType.LONG)>= Instant.now().getEpochSecond() + Config.getPvpTime()){
pvpdamagers.remove(damagerKey); pvpdamagers.remove(damagerKey);
} }
} }
@@ -54,14 +56,4 @@ public class Util {
damagersOfVictim.set(new NamespacedKey(Pvptoggle.pvptoggle, damagerUUID), PersistentDataType.LONG, Instant.now().getEpochSecond()); damagersOfVictim.set(new NamespacedKey(Pvptoggle.pvptoggle, damagerUUID), PersistentDataType.LONG, Instant.now().getEpochSecond());
victimPDC.set(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"), PersistentDataType.TAG_CONTAINER,damagersOfVictim); victimPDC.set(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"), PersistentDataType.TAG_CONTAINER,damagersOfVictim);
} }
public static void pdcTagContaineradd(Player p, NamespacedKey key, String s, Boolean value) {
PersistentDataContainer pdc = p.getPersistentDataContainer();
PersistentDataContainer pdctagcontainer = pdc.get(key, PersitentDataType.TAG_CONTAINER);
if(pdctagcontainer == null) {
pdc.tagcontainer = pdc.getAdapterContext().newPersistentDataContainer();
}
pdctagcontainer.set(new NamespacedKey(Pvptoggle.pvptoggle, s), PersistentDataType.BOOLEAN, value);
pdc.set(key,PersistentDataType.TAG_CONTAINER, pdctagcontainer);
}
} }