diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java index 78e97e6..e85517c 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java @@ -3,6 +3,7 @@ package me.youhavetrouble.preventstabby.listeners.pets; import me.youhavetrouble.preventstabby.PreventStabby; import me.youhavetrouble.preventstabby.players.SmartCache; import me.youhavetrouble.preventstabby.util.PreventStabbyListener; +import me.youhavetrouble.preventstabby.util.PvpState; import me.youhavetrouble.preventstabby.util.Util; import org.bukkit.entity.Entity; import org.bukkit.entity.Tameable; @@ -14,8 +15,12 @@ import org.bukkit.event.Listener; @PreventStabbyListener public class PetTargettingMountListener implements Listener { + /** + * TODO - this needs to pass canDamage() in the future, for now it just checks forced pvp state directly + */ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onWolfAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) { + if (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState() == PvpState.ENABLED) return; if (!(event.getDamager() instanceof Tameable) || event.getEntity().getPassengers().isEmpty()) return; Tameable damager = (Tameable) event.getDamager(); Entity victim = event.getEntity(); diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java index 2954528..abe4c05 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java @@ -1,7 +1,9 @@ package me.youhavetrouble.preventstabby.listeners.pets; import me.youhavetrouble.preventstabby.PreventStabby; +import me.youhavetrouble.preventstabby.config.ConfigCache; import me.youhavetrouble.preventstabby.players.SmartCache; +import me.youhavetrouble.preventstabby.util.CombatTimer; import me.youhavetrouble.preventstabby.util.PreventStabbyListener; import org.bukkit.entity.Tameable; import org.bukkit.entity.Wolf; @@ -14,23 +16,21 @@ public class PetTargettingPetListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onWolfAttackWolf(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getDamager() instanceof Tameable && event.getEntity() instanceof Tameable) { - Tameable damager = (Tameable) event.getDamager(); - Tameable victim = (Tameable) event.getEntity(); - if (damager.getOwner() == null || victim.getOwner() == null) return; + if (!(event.getDamager() instanceof Tameable) || !(event.getEntity() instanceof Tameable)) return; + Tameable damager = (Tameable) event.getDamager(); + Tameable victim = (Tameable) event.getEntity(); + if (damager.getOwner() == null || victim.getOwner() == null) return; + + if (!PreventStabby.getPlugin().getPlayerManager() + .canDamage( + damager.getUniqueId(), + victim.getUniqueId(), + false, + false + )) + event.setCancelled(true); - SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); - boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled(); - boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled(); - if (!victimPvpEnabled || !damagerPvpEnabled) { - if (damager instanceof Wolf) { - Wolf wolf = (Wolf) damager; - wolf.setAngry(false); - } - event.setCancelled(true); - } - } } } diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java index e9fd088..89026e8 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java @@ -18,37 +18,36 @@ import java.util.UUID; @PreventStabbyListener public class PlayerHitPetWithProjectileListener implements Listener { - /** + /** * Cancels damage done by projectiles to pets of players with pvp off */ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) { - Projectile projectile = (Projectile) event.getDamager(); - if (!(projectile.getShooter() instanceof Player)) return; - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; + if (!(event.getEntity() instanceof Tameable) || !(event.getDamager() instanceof Projectile)) return; + Projectile projectile = (Projectile) event.getDamager(); + if (!(projectile.getShooter() instanceof Player)) return; + Tameable tameable = (Tameable) event.getEntity(); + if (tameable.getOwner() == null) return; - UUID damager = ((Player) projectile.getShooter()).getUniqueId(); - UUID victim = tameable.getOwner().getUniqueId(); + UUID damager = ((Player) projectile.getShooter()).getUniqueId(); + UUID victim = tameable.getOwner().getUniqueId(); - if (damager.equals(victim)) return; + if (damager.equals(victim)) return; - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); + ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - if (!smartCache.getPlayerData(damager).isPvpEnabled()) { - PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker()); - event.setCancelled(true); - return; - } - if (!smartCache.getPlayerData(victim).isPvpEnabled()) { - PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim()); - event.setCancelled(true); - return; - } + if (PreventStabby.getPlugin().getPlayerManager() + .canDamage( + damager, + victim, + config.getCannot_attack_pets_attacker(), + config.getCannot_attack_pets_victim(), + false + )) CombatTimer.refreshPlayersCombatTime(damager); + else + event.setCancelled(true); + - } } }