From a2954e8795c17ef5bfea06022832a5d0da2b00a1 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sun, 28 Aug 2022 17:49:58 +0200 Subject: [PATCH] Apply build trust for entity containers. --- .../GriefPrevention/EntityEventHandler.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) 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) {