mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
tiny adjustment
This commit is contained in:
@@ -19,9 +19,9 @@ public final class TogglePvp extends JavaPlugin {
|
|||||||
|
|
||||||
@Getter private static TogglePvp plugin;
|
@Getter private static TogglePvp plugin;
|
||||||
private ConfigCache configCache;
|
private ConfigCache configCache;
|
||||||
private PlayerManager playerManager;
|
protected PlayerManager playerManager;
|
||||||
private DatabaseSQLite sqLite;
|
protected DatabaseSQLite sqLite;
|
||||||
private SmartCache smartCache;
|
protected SmartCache smartCache;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|||||||
+11
-21
@@ -1,10 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.pets;
|
package eu.endermite.togglepvp.listeners.pets;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@@ -19,35 +16,28 @@ public class PetHitByExplosionListener implements Listener {
|
|||||||
* Cancels explosion damage for pets with pvp off that is caused by players
|
* Cancels explosion damage for pets with pvp off that is caused by players
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPetHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (!(event.getEntity() instanceof Tameable))
|
if (!(event.getEntity() instanceof Tameable))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION))
|
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Tameable victim = (Tameable) event.getEntity();
|
Tameable tameable = (Tameable) event.getEntity();
|
||||||
if (victim.getOwner() == null)
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
if (victim.getOwner().getUniqueId() == damageruuid) {
|
if (victim == damager)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (!smartCache.getPlayerData(damageruuid).isPvpEnabled()) {
|
else
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_attacker());
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damageruuid, victim.getOwner().getUniqueId());
|
|
||||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +1,36 @@
|
|||||||
package eu.endermite.togglepvp.listeners.pets;
|
package eu.endermite.togglepvp.listeners.pets;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Firework;
|
import org.bukkit.entity.Firework;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PetHitByFireworkListener implements Listener {
|
public class PetHitByFireworkListener implements Listener {
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPetFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) {
|
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) event.getEntity();
|
Tameable tameable = (Tameable) event.getEntity();
|
||||||
if (victim.getOwner() == null)
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
Firework firework = (Firework) event.getDamager();
|
Firework firework = (Firework) event.getDamager();
|
||||||
if (!(firework.getShooter() instanceof Player))
|
if (!(firework.getShooter() instanceof Player))
|
||||||
return;
|
return;
|
||||||
Player damager = (Player) firework.getShooter();
|
UUID damager = ((Player) firework.getShooter()).getUniqueId();
|
||||||
if (victim.getOwner() == damager)
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
if (victim == damager)
|
||||||
return;
|
return;
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvp.getPlugin().getConfigCache().getCannot_attack_pets_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvp.getPlugin().getConfigCache().getCannot_attack_pets_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-20
@@ -1,10 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.pets;
|
package eu.endermite.togglepvp.listeners.pets;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
@@ -13,6 +10,7 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PetHitBySplashPotionListener implements Listener {
|
public class PetHitBySplashPotionListener implements Listener {
|
||||||
@@ -22,7 +20,7 @@ public class PetHitBySplashPotionListener implements Listener {
|
|||||||
* it will have no effect on a pet of a player with pvp off
|
* it will have no effect on a pet of a player with pvp off
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onWolfHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
|
public void onPetHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
|
||||||
|
|
||||||
if (!(event.getEntity().getShooter() instanceof Player))
|
if (!(event.getEntity().getShooter() instanceof Player))
|
||||||
return;
|
return;
|
||||||
@@ -46,25 +44,21 @@ public class PetHitBySplashPotionListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
for (Entity entity : event.getAffectedEntities()) {
|
for (Entity entity : event.getAffectedEntities()) {
|
||||||
if (entity instanceof Tameable) {
|
if (entity instanceof Tameable) {
|
||||||
Player damager = (Player) event.getEntity().getShooter();
|
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
|
||||||
Tameable victim = (Tameable) entity;
|
Tameable tameable = (Tameable) entity;
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager)
|
|
||||||
|
if (tameable.getOwner() == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
|
||||||
|
|
||||||
if (!TogglePvp.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId())) {
|
if (victim == damager)
|
||||||
event.setIntensity(victim, 0);
|
return;
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
|
||||||
continue;
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
}
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
else
|
||||||
event.setIntensity(victim, 0);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
package eu.endermite.togglepvp.listeners.pets;
|
package eu.endermite.togglepvp.listeners.pets;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PetLeashListener implements Listener {
|
public class PetLeashListener implements Listener {
|
||||||
@@ -16,26 +14,20 @@ public class PetLeashListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) {
|
public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) {
|
||||||
if (event.getEntity() instanceof Tameable) {
|
if (event.getEntity() instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) event.getEntity();
|
Tameable tameable = (Tameable) event.getEntity();
|
||||||
if (victim.getOwner() == null)
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
if (victim.getOwner() == damager)
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
if (victim == damager)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
else
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ public class PetTargettingPetListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
||||||
|
|
||||||
boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled();
|
boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
|
|
||||||
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
||||||
if (damager instanceof Wolf) {
|
if (damager instanceof Wolf) {
|
||||||
Wolf wolf = (Wolf) damager;
|
Wolf wolf = (Wolf) damager;
|
||||||
|
|||||||
+10
-6
@@ -1,19 +1,22 @@
|
|||||||
package eu.endermite.togglepvp.listeners.pets;
|
package eu.endermite.togglepvp.listeners.pets;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PetTargettingPlayerListener implements Listener {
|
public class PetTargettingPlayerListener implements Listener {
|
||||||
/**
|
/**
|
||||||
* Stops pets with owners targetting players with pvp off
|
* Stops pets with owners targetting players with pvp off
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onWolfTarget(org.bukkit.event.entity.EntityTargetEvent event) {
|
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
|
||||||
if (!(event.getEntity() instanceof Tameable))
|
if (!(event.getEntity() instanceof Tameable))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -22,12 +25,13 @@ public class PetTargettingPlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getTarget() instanceof Player) {
|
if (event.getTarget() instanceof Player) {
|
||||||
boolean attackerPvPEnabled = TogglePvp.getPlugin().getSmartCache().getPlayerData(entity.getOwner().getUniqueId()).isPvpEnabled();
|
UUID damager = entity.getOwner().getUniqueId();
|
||||||
Player victim = (Player) event.getTarget();
|
UUID victim = event.getTarget().getUniqueId();
|
||||||
boolean victimPvpEnabled = TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled();
|
|
||||||
if (!attackerPvPEnabled || !victimPvpEnabled) {
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -11,11 +11,13 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerAttackPetListener implements Listener {
|
public class PlayerAttackPetListener implements Listener {
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerAttacktameable(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPlayerAttackPet(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
|
|
||||||
if (event.getDamager() instanceof Player && event.getEntity() instanceof Tameable) {
|
if (event.getDamager() instanceof Player && event.getEntity() instanceof Tameable) {
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
||||||
@@ -23,25 +25,25 @@ public class PlayerAttackPetListener implements Listener {
|
|||||||
if (tameable.getOwner() == null)
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Player damager = (Player) event.getDamager();
|
UUID damager = event.getDamager().getUniqueId();
|
||||||
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
|
||||||
if (damager.getUniqueId() == tameable.getOwner().getUniqueId())
|
if (damager == victim)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpState = TogglePvp.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpState = TogglePvp.getPlugin().getPlayerManager().getPlayerPvPState(damager);
|
||||||
|
|
||||||
if (!damagerPvpState) {
|
if (!damagerPvpState) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!smartCache.getPlayerData(tameable.getOwner().getUniqueId()).isPvpEnabled()) {
|
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), tameable.getOwner().getUniqueId());
|
CombatTimer.refreshPlayersCombatTime(damager);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-11
@@ -12,6 +12,8 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerHitPetWithProjectile implements Listener {
|
public class PlayerHitPetWithProjectile implements Listener {
|
||||||
|
|
||||||
@@ -19,30 +21,37 @@ public class PlayerHitPetWithProjectile implements Listener {
|
|||||||
* Cancels damage done by projectiles to pets of players with pvp off
|
* Cancels damage done by projectiles to pets of players with pvp off
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerHitWolfWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) {
|
if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) {
|
||||||
Projectile projectile = (Projectile) event.getDamager();
|
Projectile projectile = (Projectile) event.getDamager();
|
||||||
if (!(projectile.getShooter() instanceof Player))
|
if (!(projectile.getShooter() instanceof Player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Tameable victim = (Tameable) event.getEntity();
|
Tameable tameable = (Tameable) event.getEntity();
|
||||||
Player damager = (Player) projectile.getShooter();
|
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager)
|
if (tameable.getOwner() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
||||||
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
|
||||||
|
if (damager == victim)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
if (!smartCache.getPlayerData(damager).isPvpEnabled()) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.PlayerManager;
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
@@ -9,8 +9,7 @@ import org.bukkit.entity.Wolf;
|
|||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PetAttackPlayerListener implements Listener {
|
public class PetAttackPlayerListener implements Listener {
|
||||||
@@ -20,7 +19,7 @@ public class PetAttackPlayerListener implements Listener {
|
|||||||
* This is to fix any inconsistancy with pet behavior
|
* This is to fix any inconsistancy with pet behavior
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onWolfAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
|
|
||||||
if (!(event.getDamager() instanceof Tameable))
|
if (!(event.getDamager() instanceof Tameable))
|
||||||
return;
|
return;
|
||||||
@@ -28,16 +27,12 @@ public class PetAttackPlayerListener implements Listener {
|
|||||||
Tameable entity = (Tameable) event.getDamager();
|
Tameable entity = (Tameable) event.getDamager();
|
||||||
if (entity.getOwner() != null && event.getEntity() instanceof Player) {
|
if (entity.getOwner() != null && event.getEntity() instanceof Player) {
|
||||||
|
|
||||||
Player victim = (Player) event.getEntity();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
UUID damager = entity.getOwner().getUniqueId();
|
||||||
|
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
if (!playerManager.canDamage(damager, victim, false)) {
|
||||||
}
|
|
||||||
boolean damagerPvpEnabled = smartCache.getPlayerData(entity.getOwner().getUniqueId()).isPvpEnabled();
|
|
||||||
boolean victimPvpEnabled = smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled();
|
|
||||||
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
|
||||||
if (entity instanceof Wolf) {
|
if (entity instanceof Wolf) {
|
||||||
Wolf wolf = (Wolf) entity;
|
Wolf wolf = (Wolf) entity;
|
||||||
wolf.setAngry(false);
|
wolf.setAngry(false);
|
||||||
@@ -45,7 +40,7 @@ public class PetAttackPlayerListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CombatTimer.refreshPlayersCombatTime(entity.getOwner().getUniqueId(), victim.getUniqueId());
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerAttackListener implements Listener {
|
public class PlayerAttackListener implements Listener {
|
||||||
@@ -25,28 +21,13 @@ public class PlayerAttackListener implements Listener {
|
|||||||
Entity victimEntity = event.getEntity();
|
Entity victimEntity = event.getEntity();
|
||||||
|
|
||||||
if (damagerEntity instanceof Player && victimEntity instanceof Player) {
|
if (damagerEntity instanceof Player && victimEntity instanceof Player) {
|
||||||
Player damager = (Player) damagerEntity;
|
UUID damager = damagerEntity.getUniqueId();
|
||||||
Player victim = (Player) victimEntity;
|
UUID victim = victimEntity.getUniqueId();
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-28
@@ -1,10 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.EnderCrystal;
|
import org.bukkit.entity.EnderCrystal;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
@@ -16,8 +13,6 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
@@ -32,34 +27,18 @@ public class PlayerHitByExplosionListener implements Listener {
|
|||||||
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) {
|
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player victim = (Player) event.getEntity();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
try {
|
try {
|
||||||
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
if (victim.getUniqueId().equals(damageruuid))
|
if (victim.equals(damager))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) { }
|
||||||
if (!smartCache.getPlayerData(damageruuid).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_attacker());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damageruuid, victim.getUniqueId());
|
|
||||||
|
|
||||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-23
@@ -1,16 +1,13 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Firework;
|
import org.bukkit.entity.Firework;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerHitByFireworkListener implements Listener {
|
public class PlayerHitByFireworkListener implements Listener {
|
||||||
@@ -18,32 +15,18 @@ public class PlayerHitByFireworkListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player) {
|
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player) {
|
||||||
Player victim = (Player) event.getEntity();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
Firework firework = (Firework) event.getDamager();
|
Firework firework = (Firework) event.getDamager();
|
||||||
if (firework.getShooter() instanceof Player) {
|
if (firework.getShooter() instanceof Player) {
|
||||||
Player damager = (Player) firework.getShooter();
|
UUID damager = ((Player) firework.getShooter()).getUniqueId();
|
||||||
if (damager == victim) {
|
if (damager == victim) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvp.getPlugin().getConfigCache().getCannot_attack_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvp.getPlugin().getConfigCache().getCannot_attack_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-27
@@ -1,17 +1,13 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerHitByProjectileListener implements Listener {
|
public class PlayerHitByProjectileListener implements Listener {
|
||||||
@@ -25,33 +21,17 @@ public class PlayerHitByProjectileListener implements Listener {
|
|||||||
if (event.getEntity() instanceof Player && event.getDamager() instanceof Projectile) {
|
if (event.getEntity() instanceof Player && event.getDamager() instanceof Projectile) {
|
||||||
Projectile projectile = (Projectile) event.getDamager();
|
Projectile projectile = (Projectile) event.getDamager();
|
||||||
if (projectile.getShooter() instanceof Player) {
|
if (projectile.getShooter() instanceof Player) {
|
||||||
Player damager = (Player) projectile.getShooter();
|
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
||||||
Player victim = (Player) event.getEntity();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
|
|
||||||
// Ender pearls and other self-damage
|
// Ender pearls and other self-damage
|
||||||
if (damager == victim) {
|
if (damager == victim)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-25
@@ -1,20 +1,18 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerHitBySplashPotionListener implements Listener {
|
public class PlayerHitBySplashPotionListener implements Listener {
|
||||||
@@ -54,30 +52,16 @@ public class PlayerHitBySplashPotionListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
for (Entity entity : event.getAffectedEntities()) {
|
for (Entity entity : event.getAffectedEntities()) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
Player damager = (Player) event.getEntity().getShooter();
|
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
|
||||||
Player victim = (Player) entity;
|
UUID victim = entity.getUniqueId();
|
||||||
if (damager == victim)
|
if (damager == victim)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(victim.getUniqueId()).getLoginTimestamp()) {
|
} else {
|
||||||
event.setIntensity(victim, 0);
|
event.setIntensity((LivingEntity) entity, 0);
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setIntensity(victim, 0);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setIntensity(victim, 0);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-31
@@ -1,10 +1,8 @@
|
|||||||
package eu.endermite.togglepvp.listeners.unspecific;
|
package eu.endermite.togglepvp.listeners.unspecific;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.players.PlayerManager;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
@@ -13,6 +11,7 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
|
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class AreaEffectCloudApplyListener implements Listener {
|
public class AreaEffectCloudApplyListener implements Listener {
|
||||||
@@ -36,47 +35,37 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
potionEffectType.equals(PotionEffectType.SLOW) ||
|
potionEffectType.equals(PotionEffectType.SLOW) ||
|
||||||
potionEffectType.equals(PotionEffectType.WITHER)) {
|
potionEffectType.equals(PotionEffectType.WITHER)) {
|
||||||
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
|
||||||
|
|
||||||
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
||||||
Player damager = (Player) event.getEntity().getSource();
|
UUID damager = ((Player) event.getEntity().getSource()).getUniqueId();
|
||||||
while(it.hasNext()) {
|
while(it.hasNext()) {
|
||||||
LivingEntity entity = it.next();
|
LivingEntity entity = it.next();
|
||||||
if(entity instanceof Player) {
|
if(entity instanceof Player) {
|
||||||
|
|
||||||
Player victim = (Player) entity;
|
UUID victim = entity.getUniqueId();
|
||||||
if (damager == victim)
|
if (damager == victim)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
if (playerManager.canDamage(damager, victim, true))
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
it.remove();
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
} else if (entity instanceof Tameable) {
|
} else if (entity instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) entity;
|
Tameable tameable = (Tameable) entity;
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
|
||||||
return;
|
if (tameable.getOwner() == null)
|
||||||
}
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
it.remove();
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
it.remove();
|
if (victim == damager)
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
if (playerManager.canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
|
it.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-2
@@ -9,6 +9,7 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.weather.LightningStrikeEvent;
|
import org.bukkit.event.weather.LightningStrikeEvent;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listen for lightning strikes and tag the trident spawned ones.
|
* Listen for lightning strikes and tag the trident spawned ones.
|
||||||
@@ -24,8 +25,14 @@ public class EntityHitByLightningListener implements Listener {
|
|||||||
public void onPlayerLightningDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onPlayerLightningDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getDamager() instanceof LightningStrike && event.getDamager().getMetadata("TRIDENT").size() >= 1) {
|
if (event.getDamager() instanceof LightningStrike && event.getDamager().getMetadata("TRIDENT").size() >= 1) {
|
||||||
if (event.getEntity() instanceof Player) {
|
if (event.getEntity() instanceof Player) {
|
||||||
Player victim = (Player) event.getEntity();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
} else if (event.getEntity() instanceof Tameable) {
|
} else if (event.getEntity() instanceof Tameable) {
|
||||||
|
|||||||
@@ -1,62 +1,47 @@
|
|||||||
package eu.endermite.togglepvp.listeners.unspecific;
|
package eu.endermite.togglepvp.listeners.unspecific;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class FishingListener implements Listener {
|
public class FishingListener implements Listener {
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevents hooking players with disabled pvp with fishing rod
|
* Prevents hooking players with disabled pvp with fishing rod
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFish(org.bukkit.event.player.PlayerFishEvent event) {
|
public void onFish(org.bukkit.event.player.PlayerFishEvent event) {
|
||||||
if (event.getCaught() instanceof Player) {
|
if (event.getCaught() instanceof Player) {
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
Player victim = (Player) event.getCaught();
|
UUID victim = event.getCaught().getUniqueId();
|
||||||
if (damager == victim) {
|
if (damager == victim)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
} else if (event.getCaught() instanceof Tameable) {
|
} else if (event.getCaught() instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) event.getCaught();
|
Tameable tameable = (Tameable) event.getCaught();
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
|
if (damager == victim)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+51
-60
@@ -2,10 +2,8 @@ package eu.endermite.togglepvp.listeners.unspecific;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@@ -16,61 +14,60 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.util.BoundingBox;
|
import org.bukkit.util.BoundingBox;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class LavaDumpAndIgniteListener implements Listener {
|
public class LavaDumpAndIgniteListener implements Listener {
|
||||||
|
|
||||||
private ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevents dumping lava and pufferfish bucket near players with pvp off
|
* Prevents dumping lava and pufferfish bucket near players with pvp off
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) {
|
public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) {
|
||||||
|
|
||||||
if (!TogglePvp.getPlugin().getConfigCache().isLava_and_fire_stopper_enabled())
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
|
|
||||||
|
if (!config.isLava_and_fire_stopper_enabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getBucket().equals(Material.LAVA_BUCKET) || event.getBucket().equals(Material.PUFFERFISH_BUCKET)) {
|
if (event.getBucket().equals(Material.LAVA_BUCKET) || event.getBucket().equals(Material.PUFFERFISH_BUCKET)) {
|
||||||
Location location = event.getBlockClicked().getLocation();
|
Location location = event.getBlockClicked().getLocation();
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
double radius = config.getLava_and_fire_stopper_radius();
|
double radius = config.getLava_and_fire_stopper_radius();
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
|
||||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
Player victim = (Player) entity;
|
UUID victim = entity.getUniqueId();
|
||||||
if (victim != damager) {
|
if (victim != damager) {
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
|
||||||
} else if (entity instanceof Tameable) {
|
|
||||||
Tameable victim = (Tameable) entity;
|
|
||||||
if (victim.getOwner() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
if (!victimPvpEnabled) {
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
else
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
} else if (entity instanceof Tameable) {
|
||||||
|
Tameable tameable = (Tameable) entity;
|
||||||
|
if (tameable.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,49 +80,43 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) {
|
public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) {
|
||||||
|
|
||||||
if (!TogglePvp.getPlugin().getConfigCache().isLava_and_fire_stopper_enabled())
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
|
|
||||||
|
if (!config.isLava_and_fire_stopper_enabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getPlayer() == null)
|
if (event.getPlayer() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Location location = event.getBlock().getLocation();
|
Location location = event.getBlock().getLocation();
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
double radius = config.getLava_and_fire_stopper_radius();
|
double radius = config.getLava_and_fire_stopper_radius();
|
||||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
|
||||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
Player victim = (Player) entity;
|
UUID victim = entity.getUniqueId();
|
||||||
if (victim != damager) {
|
if (victim == damager)
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
continue;
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
}
|
|
||||||
} else if (entity instanceof Tameable) {
|
} else if (entity instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) entity;
|
Tameable tameable = (Tameable) entity;
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
if (tameable.getOwner() == null) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
|
if (victim == damager)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
@@ -21,6 +21,12 @@ public class LightningBlockIgniteListener implements Listener {
|
|||||||
for (Entity entity : lightningStrike.getNearbyEntities(2,2,2)) {
|
for (Entity entity : lightningStrike.getNearbyEntities(2,2,2)) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
Player victim = (Player) entity;
|
Player victim = (Player) entity;
|
||||||
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
|||||||
+19
-29
@@ -2,10 +2,8 @@ package eu.endermite.togglepvp.listeners.unspecific;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
|
||||||
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@@ -16,6 +14,8 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.util.BoundingBox;
|
import org.bukkit.util.BoundingBox;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlaceWitherRoseListener implements Listener {
|
public class PlaceWitherRoseListener implements Listener {
|
||||||
|
|
||||||
@@ -23,7 +23,6 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
|
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
|
||||||
|
|
||||||
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
|
||||||
|
|
||||||
if (!config.isLava_and_fire_stopper_enabled())
|
if (!config.isLava_and_fire_stopper_enabled())
|
||||||
return;
|
return;
|
||||||
@@ -34,38 +33,29 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
Player victim = (Player) entity;
|
UUID victim = entity.getUniqueId();
|
||||||
if (victim == damager)
|
if (victim == damager)
|
||||||
return;
|
return;
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
|
||||||
} else if (entity instanceof Tameable) {
|
} else if (entity instanceof Tameable) {
|
||||||
Tameable victim = (Tameable) entity;
|
Tameable tameable = (Tameable) entity;
|
||||||
Player damager = event.getPlayer();
|
UUID damager = event.getPlayer().getUniqueId();
|
||||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
if (tameable.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled()) {
|
UUID victim = tameable.getOwner().getUniqueId();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
if (victim == damager)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
else
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package eu.endermite.togglepvp.players;
|
package eu.endermite.togglepvp.players;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -46,7 +48,8 @@ public class PlayerManager {
|
|||||||
public void refreshPlayersCombatTime(UUID uuid) {
|
public void refreshPlayersCombatTime(UUID uuid) {
|
||||||
try {
|
try {
|
||||||
playerList.get(uuid).refreshCombatTime();
|
playerList.get(uuid).refreshCombatTime();
|
||||||
} catch (Exception ignored) { }
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerData getPlayer(UUID uuid) {
|
public PlayerData getPlayer(UUID uuid) {
|
||||||
@@ -75,4 +78,49 @@ public class PlayerManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage) {
|
||||||
|
return canDamage(attacker, victim, sendDenyMessage, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage, boolean checkVictimSpawnProtection) {
|
||||||
|
|
||||||
|
if (hasLoginProtection(attacker))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (checkVictimSpawnProtection && hasLoginProtection(victim))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
||||||
|
|
||||||
|
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
|
||||||
|
if (sendDenyMessage) {
|
||||||
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
|
PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
||||||
|
if (sendDenyMessage) {
|
||||||
|
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
|
||||||
|
PluginMessages.sendActionBar(victim, config.getCannot_attack_victim());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param uuid Player UUIDs
|
||||||
|
* @return true if any of the provided UUIDs has spawn protection
|
||||||
|
*/
|
||||||
|
public boolean hasLoginProtection(UUID... uuid) {
|
||||||
|
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
|
||||||
|
for (UUID checkedUuid : uuid) {
|
||||||
|
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(checkedUuid).getLoginTimestamp())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user