88import com .sk89q .worldguard .protection .flags .*;
99import com .sk89q .worldguard .protection .regions .RegionContainer ;
1010import com .sk89q .worldguard .protection .regions .RegionQuery ;
11+ import org .bukkit .Material ;
1112import org .bukkit .Statistic ;
1213import org .bukkit .block .Block ;
1314import org .bukkit .block .data .type .TNT ;
1718import org .bukkit .event .EventPriority ;
1819import org .bukkit .event .Listener ;
1920import org .bukkit .event .player .PlayerInteractEvent ;
21+ import org .bukkit .inventory .ItemStack ;
2022import parallelmc .parallelutils .Parallelutils ;
2123import parallelmc .parallelutils .modules .parallelflags .CustomFlagRegistry ;
2224
@@ -29,15 +31,22 @@ public class ParallelFlagsInteractListener implements Listener {
2931 @ EventHandler (priority = EventPriority .HIGHEST )
3032 public void onPlayerInteract (PlayerInteractEvent event ) {
3133 Block block = event .getClickedBlock ();
34+ ItemStack item = event .getItem ();
3235
33- if (block == null ) return ;
36+ if (block == null && item == null ) return ;
3437
3538 if (container == null ) {
3639 container = WorldGuard .getInstance ().getPlatform ().getRegionContainer ();
3740 }
3841
3942 RegionQuery query = container .createQuery ();
40- ApplicableRegionSet set = query .getApplicableRegions (BukkitAdapter .adapt (block .getLocation ()));
43+ ApplicableRegionSet set ;
44+ if (block != null ) {
45+ set = query .getApplicableRegions (BukkitAdapter .adapt (block .getLocation ()));
46+ }
47+ else {
48+ set = query .getApplicableRegions (BukkitAdapter .adapt (event .getPlayer ().getLocation ()));
49+ }
4150 if (set .isVirtual ()) return ;
4251
4352 LocalPlayer localPlayer = WorldGuardPlugin .inst ().wrapPlayer (event .getPlayer ());
@@ -49,7 +58,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {
4958
5059 if (trapdoorsFlag != null ) {
5160
52- if (block .getBlockData () instanceof TrapDoor ) {
61+ if (block != null && block .getBlockData () instanceof TrapDoor ) {
5362 StateFlag .State state = set .queryState (localPlayer , trapdoorsFlag );
5463
5564 if (state == StateFlag .State .DENY ) {
@@ -62,7 +71,8 @@ public void onPlayerInteract(PlayerInteractEvent event) {
6271 IntegerFlag tntFlag = registry .getIntegerFlag ("tnt-disallow-time" );
6372
6473 if (tntFlag != null ) {
65- if (block .getBlockData () instanceof TNT ) {
74+ if ((block != null && block .getBlockData () instanceof TNT ) ||
75+ (item != null && item .getType ().equals (Material .TNT_MINECART ))) {
6676 Integer val = set .queryValue (localPlayer , tntFlag ); // In hours
6777
6878 if (val != null ) {
0 commit comments