package benkralex.pvptoggle; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import java.time.Instant; public class Util { public static boolean canPvP(Player damager, Player victim){ PersistentDataContainer damagerPDC=damager.getPersistentDataContainer(); PersistentDataContainer victimPDC=victim.getPersistentDataContainer(); boolean ultradamager = damagerPDC.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN, false); boolean ultravictim = victimPDC.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "ultra"),PersistentDataType.BOOLEAN, false); boolean toggle = damagerPDC.getOrDefault(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"),PersistentDataType.BOOLEAN, false); return !toggle || checkPvPData(damager, victim) || !ultradamager || !ultravictim; } public static boolean checkPvPData(Player damager, Player victim){ String victimUUID=victim.getUniqueId().toString(); PersistentDataContainer damagerPDC=damager.getPersistentDataContainer(); PersistentDataContainer damagersOfDamager=damagerPDC.get(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"), PersistentDataType.TAG_CONTAINER); if (damagersOfDamager!=null) { delOldData(damagersOfDamager); return damagersOfDamager.has(new NamespacedKey(Pvptoggle.pvptoggle, victimUUID), PersistentDataType.LONG); } else { return false; } } public static void delOldData(PersistentDataContainer pvpdamagers){ for(NamespacedKey damagerKey:pvpdamagers.getKeys()){ if(pvpdamagers.get(damagerKey,PersistentDataType.LONG)>= Instant.now().getEpochSecond() + Config.getPvpTime()){ pvpdamagers.remove(damagerKey); } } } public static void savePvPData(Player damager, Player victim){ PersistentDataContainer victimPDC=victim.getPersistentDataContainer(); String damagerUUID=damager.getUniqueId().toString(); PersistentDataContainer damagersOfVictim=victimPDC.get(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"), PersistentDataType.TAG_CONTAINER); if(damagersOfVictim == null) { damagersOfVictim = victimPDC.getAdapterContext().newPersistentDataContainer(); } damagersOfVictim.set(new NamespacedKey(Pvptoggle.pvptoggle, damagerUUID), PersistentDataType.LONG, Instant.now().getEpochSecond()); victimPDC.set(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"), PersistentDataType.TAG_CONTAINER,damagersOfVictim); } }