diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 3c9f5ff..1e08b7a 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -18,6 +18,7 @@ package me.ryanhamshire.GriefPrevention; +import com.destroystokyo.paper.event.block.TNTPrimeEvent; import me.ryanhamshire.GriefPrevention.events.ClaimInspectionEvent; import me.ryanhamshire.GriefPrevention.events.VisualizationEvent; import org.bukkit.BanList; @@ -40,6 +41,7 @@ import org.bukkit.block.data.Waterlogged; import org.bukkit.command.Command; import org.bukkit.entity.AbstractHorse; import org.bukkit.entity.Animals; +import org.bukkit.entity.Arrow; import org.bukkit.entity.Creature; import org.bukkit.entity.Donkey; import org.bukkit.entity.Entity; @@ -2326,4 +2328,23 @@ class PlayerEventHandler implements Listener return result; } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onTNTPrime(TNTPrimeEvent event) { + if(event.getReason() == TNTPrimeEvent.PrimeReason.PROJECTILE) { + Entity entity = event.getPrimerEntity(); + if(entity instanceof Arrow) { + Arrow arrow = (Arrow) entity; + if(arrow.getShooter() instanceof Player) { + Player player = (Player) arrow.getShooter(); + Claim claim = GriefPrevention.instance.dataStore.getClaimAt(event.getBlock().getLocation(), true, null); + if (claim != null) { + if (claim.allowAccess(player) != null) { + event.setCancelled(true); + } + } + } + } + } + } }