mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
pvp off players get immunity to directly caused explosions
This commit is contained in:
+7
-8
@@ -17,6 +17,9 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
|
|
||||||
private ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
private ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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) {
|
||||||
|
|
||||||
@@ -48,9 +51,11 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevents setting blocks on fire near players with pvp off
|
||||||
|
*/
|
||||||
@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) {
|
||||||
|
|
||||||
@@ -82,11 +87,5 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+47
-7
@@ -6,9 +6,12 @@ import eu.endermite.togglepvp.util.PluginMessages;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
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.TNTPrimed;
|
||||||
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.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -16,17 +19,18 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class PlayerHitByExplosionListener implements Listener {
|
public class PlayerHitByExplosionListener implements Listener {
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
||||||
public void onPlayerHitEnderCrystal(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
|
||||||
if (event.getEntity() instanceof EnderCrystal && event.getDamager() instanceof Player) {
|
|
||||||
EnderCrystal enderCrystal = (EnderCrystal) event.getEntity();
|
|
||||||
enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvP.getPlugin(), event.getDamager().getUniqueId().toString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancels explosion damage for players 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 onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getEntity() instanceof Player) {
|
if (event.getEntity() instanceof Player) {
|
||||||
|
|
||||||
|
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Player victim = (Player) event.getEntity();
|
Player victim = (Player) event.getEntity();
|
||||||
try {
|
try {
|
||||||
UUID playeruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
UUID playeruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
@@ -46,7 +50,43 @@ public class PlayerHitByExplosionListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tags ender crystal with exploder uuid
|
||||||
|
*/
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onPlayerHitEnderCrystal(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
|
if (event.getEntity() instanceof EnderCrystal) {
|
||||||
|
EnderCrystal enderCrystal = (EnderCrystal) event.getEntity();
|
||||||
|
if (event.getDamager() instanceof Player) {
|
||||||
|
enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvP.getPlugin(), event.getDamager().getUniqueId().toString()));
|
||||||
|
} else if (event.getDamager() instanceof Projectile) {
|
||||||
|
Projectile projectile = (Projectile) event.getDamager();
|
||||||
|
if (projectile.getShooter() instanceof Player) {
|
||||||
|
Player damager = (Player) projectile.getShooter();
|
||||||
|
enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvP.getPlugin(), damager.getUniqueId().toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onPlayerPrimedTnt(org.bukkit.event.entity.ExplosionPrimeEvent event) {
|
||||||
|
if (event.getEntity() instanceof TNTPrimed) {
|
||||||
|
TNTPrimed tntPrimed = (TNTPrimed) event.getEntity();
|
||||||
|
if (tntPrimed.getSource() instanceof Player) {
|
||||||
|
Player damager = (Player) tntPrimed.getSource();
|
||||||
|
tntPrimed.setMetadata("PLAYEREXPLODED",new FixedMetadataValue( TogglePvP.getPlugin(), damager.getUniqueId().toString()));
|
||||||
|
} else if (tntPrimed.getSource() instanceof TNTPrimed) {
|
||||||
|
try {
|
||||||
|
TNTPrimed sourceTnt = (TNTPrimed) tntPrimed.getSource();
|
||||||
|
String damagerUuid = sourceTnt.getMetadata("PLAYEREXPLODED").get(0).asString();
|
||||||
|
tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue( TogglePvP.getPlugin(), damagerUuid));
|
||||||
}catch (NullPointerException ignored) {}
|
}catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user