mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-11 21:06:55 +00:00
wolves are people too
This commit is contained in:
@@ -4,9 +4,9 @@ import eu.endermite.togglepvp.commands.MainCommand;
|
|||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.listeners.player.*;
|
import eu.endermite.togglepvp.listeners.player.*;
|
||||||
import eu.endermite.togglepvp.listeners.player.WolfAttackPlayerListener;
|
import eu.endermite.togglepvp.listeners.player.WolfAttackPlayerListener;
|
||||||
import eu.endermite.togglepvp.listeners.player.WolfTargettingPlayerListener;
|
import eu.endermite.togglepvp.listeners.wolf.WolfTargettingPlayerListener;
|
||||||
import eu.endermite.togglepvp.listeners.wolf.PlayerAttackWolfListener;
|
import eu.endermite.togglepvp.listeners.unspecific.*;
|
||||||
import eu.endermite.togglepvp.listeners.wolf.PlayerHitWolfWithProjectile;
|
import eu.endermite.togglepvp.listeners.wolf.*;
|
||||||
import eu.endermite.togglepvp.players.PlayerManager;
|
import eu.endermite.togglepvp.players.PlayerManager;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
import eu.endermite.togglepvp.util.DatabaseSQLite;
|
import eu.endermite.togglepvp.util.DatabaseSQLite;
|
||||||
@@ -41,18 +41,21 @@ public final class TogglePvP extends JavaPlugin {
|
|||||||
getServer().getPluginManager().registerEvents(new PlayerHitByProjectileListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByProjectileListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new AreaEffectCloudApplyListener(), this);
|
getServer().getPluginManager().registerEvents(new AreaEffectCloudApplyListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitBySplashPotionListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitBySplashPotionListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByLightningListener(), this);
|
getServer().getPluginManager().registerEvents(new EntityHitByLightningListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new LightningBlockIgniteListener(), this);
|
getServer().getPluginManager().registerEvents(new LightningBlockIgniteListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByFireworkListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByFireworkListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new FishingListener(), this);
|
getServer().getPluginManager().registerEvents(new FishingListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new LavaDumpAndIgniteListener(), this);
|
getServer().getPluginManager().registerEvents(new LavaDumpAndIgniteListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerPlaceWitherRoseListener(), this);
|
getServer().getPluginManager().registerEvents(new PlaceWitherRoseListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByExplosionListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByExplosionListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new WolfTargettingPlayerListener(), this);
|
getServer().getPluginManager().registerEvents(new WolfTargettingPlayerListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new WolfAttackPlayerListener(), this);
|
getServer().getPluginManager().registerEvents(new WolfAttackPlayerListener(), this);
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new PlayerAttackWolfListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerAttackWolfListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitWolfWithProjectile(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitWolfWithProjectile(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new WolfHitBySplashPotionListener(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new WolfHitByFireworkListener(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new WolfTargettingWolfListener(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new WolfHitByExplosionListener(), this);
|
||||||
|
|
||||||
Objects.requireNonNull(getCommand("pvp")).setExecutor(new MainCommand());
|
Objects.requireNonNull(getCommand("pvp")).setExecutor(new MainCommand());
|
||||||
Objects.requireNonNull(getCommand("pvp")).setTabCompleter(new MainCommand());
|
Objects.requireNonNull(getCommand("pvp")).setTabCompleter(new MainCommand());
|
||||||
|
|||||||
+8
-2
@@ -1,6 +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.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;
|
||||||
@@ -19,13 +20,18 @@ public class PlayerHitByFireworkListener implements Listener {
|
|||||||
if (damager == victim) {
|
if (damager == victim) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_attacker());
|
||||||
|
return;
|
||||||
|
}
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_victim());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-5
@@ -37,10 +37,8 @@ public class PlayerHitBySplashPotionListener implements Listener {
|
|||||||
harmful = true;
|
harmful = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!harmful)
|
if (!harmful)
|
||||||
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();
|
Player damager = (Player) event.getEntity().getShooter();
|
||||||
@@ -62,8 +60,5 @@ public class PlayerHitBySplashPotionListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-2
@@ -1,10 +1,12 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
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.PluginMessages;
|
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.Wolf;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
|
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
|
||||||
@@ -34,10 +36,11 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
potionEffectType.equals(PotionEffectType.WITHER)) {
|
potionEffectType.equals(PotionEffectType.WITHER)) {
|
||||||
|
|
||||||
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
||||||
|
Player damager = (Player) event.getEntity().getSource();
|
||||||
while(it.hasNext()) {
|
while(it.hasNext()) {
|
||||||
LivingEntity entity = it.next();
|
LivingEntity entity = it.next();
|
||||||
if(entity instanceof Player) {
|
if(entity instanceof Player) {
|
||||||
Player damager = (Player) event.getEntity().getSource();
|
|
||||||
Player victim = (Player) entity;
|
Player victim = (Player) entity;
|
||||||
if (damager == victim)
|
if (damager == victim)
|
||||||
continue;
|
continue;
|
||||||
@@ -54,6 +57,23 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
}
|
}
|
||||||
|
} else if (entity instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) entity;
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
it.remove();
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
it.remove();
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
-3
@@ -1,8 +1,10 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.unspecific;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
import org.bukkit.entity.LightningStrike;
|
import org.bukkit.entity.LightningStrike;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
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;
|
||||||
@@ -13,19 +15,27 @@ import org.bukkit.metadata.FixedMetadataValue;
|
|||||||
* Listen for lightning strikes and tag the trident spawned ones.
|
* Listen for lightning strikes and tag the trident spawned ones.
|
||||||
* Idea from aasmus' PvPToggle plugin
|
* Idea from aasmus' PvPToggle plugin
|
||||||
*/
|
*/
|
||||||
public class PlayerHitByLightningListener implements Listener {
|
public class EntityHitByLightningListener implements Listener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancels damage from lightning strike caused by channeling for players with pvp off
|
* Cancels damage from lightning strike caused by channeling for players with pvp off
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
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 && event.getEntity() instanceof Player) {
|
if (event.getDamager() instanceof LightningStrike && event.getDamager().getMetadata("TRIDENT").size() >= 1) {
|
||||||
|
if (event.getEntity() instanceof Player) {
|
||||||
Player victim = (Player) event.getEntity();
|
Player victim = (Player) event.getEntity();
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
} else if (event.getEntity() instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+23
-5
@@ -1,15 +1,19 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
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.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
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;
|
||||||
|
|
||||||
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
|
||||||
*/
|
*/
|
||||||
@@ -18,19 +22,33 @@ public class FishingListener implements Listener {
|
|||||||
if (event.getCaught() instanceof Player) {
|
if (event.getCaught() instanceof Player) {
|
||||||
Player damager = event.getPlayer();
|
Player damager = event.getPlayer();
|
||||||
Player victim = (Player) event.getCaught();
|
Player victim = (Player) event.getCaught();
|
||||||
|
|
||||||
if (damager == victim) {
|
if (damager == victim) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
}
|
||||||
|
} else if (event.getCaught() instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) event.getCaught();
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player damager = event.getPlayer();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
+22
-1
@@ -1,13 +1,15 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
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.PluginMessages;
|
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;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
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;
|
||||||
@@ -48,6 +50,25 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (entity instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) entity;
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+14
-4
@@ -1,9 +1,11 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.unspecific;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LightningStrike;
|
import org.bukkit.entity.LightningStrike;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
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;
|
||||||
@@ -21,9 +23,17 @@ 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 player = (Player) entity;
|
Player victim = (Player) entity;
|
||||||
|
if (!TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId())) {
|
||||||
if (!TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(player.getUniqueId())) {
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (entity instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) entity;
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
+22
-2
@@ -1,19 +1,21 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
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.PluginMessages;
|
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;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
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 org.bukkit.util.BoundingBox;
|
import org.bukkit.util.BoundingBox;
|
||||||
|
|
||||||
public class PlayerPlaceWitherRoseListener implements Listener {
|
public class PlaceWitherRoseListener implements Listener {
|
||||||
|
|
||||||
private ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
private ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
|
||||||
@@ -47,6 +49,24 @@ public class PlayerPlaceWitherRoseListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (entity instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) entity;
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player damager = event.getPlayer();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package eu.endermite.togglepvp.listeners.wolf;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Wolf;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class WolfHitByExplosionListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancels explosion damage for wolves with pvp off that is caused by players
|
||||||
|
*/
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
|
if (event.getEntity() instanceof Wolf) {
|
||||||
|
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_attacker());
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package eu.endermite.togglepvp.listeners.wolf;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
|
import org.bukkit.entity.Firework;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Wolf;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
public class WolfHitByFireworkListener implements Listener {
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
|
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Wolf) {
|
||||||
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Firework firework = (Firework) event.getDamager();
|
||||||
|
if (firework.getShooter() instanceof Player) {
|
||||||
|
Player damager = (Player) firework.getShooter();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getOwner().getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_pets_attacker());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_pets_victim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+70
@@ -0,0 +1,70 @@
|
|||||||
|
package eu.endermite.togglepvp.listeners.wolf;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Wolf;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
public class WolfHitBySplashPotionListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If thrown potion applies negative effects and it's thrown by a player
|
||||||
|
* it will have no effect on a pet of a player with pvp off
|
||||||
|
*/
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onWolfHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
|
||||||
|
|
||||||
|
if (!(event.getEntity().getShooter() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
boolean harmful = false;
|
||||||
|
|
||||||
|
for (PotionEffect effect : event.getPotion().getEffects()) {
|
||||||
|
if (effect.getType().equals(PotionEffectType.BLINDNESS) ||
|
||||||
|
effect.getType().equals(PotionEffectType.CONFUSION) ||
|
||||||
|
effect.getType().equals(PotionEffectType.HARM) ||
|
||||||
|
effect.getType().equals(PotionEffectType.HUNGER) ||
|
||||||
|
effect.getType().equals(PotionEffectType.POISON) ||
|
||||||
|
effect.getType().equals(PotionEffectType.SLOW_DIGGING) ||
|
||||||
|
effect.getType().equals(PotionEffectType.WEAKNESS) ||
|
||||||
|
effect.getType().equals(PotionEffectType.SLOW) ||
|
||||||
|
effect.getType().equals(PotionEffectType.WITHER)) {
|
||||||
|
harmful = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!harmful)
|
||||||
|
return;
|
||||||
|
for (Entity entity : event.getAffectedEntities()) {
|
||||||
|
if (entity instanceof Wolf) {
|
||||||
|
Player damager = (Player) event.getEntity().getShooter();
|
||||||
|
Wolf victim = (Wolf) entity;
|
||||||
|
|
||||||
|
if (victim.getOwner() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
event.setIntensity(victim, 0);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
event.setIntensity(victim, 0);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+1
-14
@@ -1,4 +1,4 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.wolf;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
@@ -10,7 +10,6 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
public class WolfTargettingPlayerListener implements Listener {
|
public class WolfTargettingPlayerListener implements Listener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops wolves with owners targetting players with pvp off
|
* Stops wolves with owners targetting players with pvp off
|
||||||
*/
|
*/
|
||||||
@@ -20,7 +19,6 @@ public class WolfTargettingPlayerListener implements Listener {
|
|||||||
Wolf wolf = (Wolf) event.getEntity();
|
Wolf wolf = (Wolf) event.getEntity();
|
||||||
if (wolf.getOwner() != null) {
|
if (wolf.getOwner() != null) {
|
||||||
if (event.getTarget() instanceof Player) {
|
if (event.getTarget() instanceof Player) {
|
||||||
|
|
||||||
boolean attackerPvPEnabled = (boolean) SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).get("pvpenabled");
|
boolean attackerPvPEnabled = (boolean) SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
Player victim = (Player) event.getTarget();
|
Player victim = (Player) event.getTarget();
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
@@ -29,17 +27,6 @@ public class WolfTargettingPlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (event.getEntity() instanceof Fox) {
|
|
||||||
Fox fox = (Fox) event.getEntity();
|
|
||||||
if (fox.getFirstTrustedPlayer() != null) {
|
|
||||||
if (event.getTarget() instanceof Player) {
|
|
||||||
Player victim = (Player) event.getTarget();
|
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
|
||||||
if (!victimPvpEnabled) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user