diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java b/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java index b1e33b4..a52aa05 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java @@ -89,6 +89,7 @@ import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause; import org.bukkit.event.hanging.HangingPlaceEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; +import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; @@ -1354,13 +1355,26 @@ public class EntityEventHandler implements Listener message += " " + GriefPrevention.instance.dataStore.getMessage(Messages.IgnoreClaimsAdvertisement); return message; }; - Supplier noContainersReason = claim.checkPermission(attacker, ClaimPermission.Inventory, event, override); - if (noContainersReason != null) + //for storage entities, apply container rules (this is a potential theft) + if (event.getVehicle() instanceof InventoryHolder) { - event.setCancelled(true); - GriefPrevention.sendMessage(attacker, TextMode.Err, noContainersReason.get()); + Supplier noContainersReason = claim.checkPermission(attacker, ClaimPermission.Build, event); + if (noContainersReason != null) + { + GriefPrevention.sendMessage(attacker, TextMode.Err, noContainersReason.get()); + event.setCancelled(true); + return; + } + } + else + { + Supplier noContainersReason = claim.checkPermission(attacker, ClaimPermission.Inventory, event, override); + if (noContainersReason != null) + { + event.setCancelled(true); + GriefPrevention.sendMessage(attacker, TextMode.Err, noContainersReason.get()); + } } - //cache claim for later if (playerData != null) {