From bd75c53cdaeb7a58e276130d739a448bfefae73a Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Tue, 15 Dec 2015 14:26:30 -0800 Subject: [PATCH] Ensure survival players can get their carts back. Can only place if player has permission necessary to remove the cart. Also fixes "griefing" railways by adding too many carts and forcing the rail owner to come remove the extras. --- .../GriefPrevention/PlayerEventHandler.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index ba80310..62dbd96 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -1774,7 +1774,7 @@ class PlayerEventHandler implements Listener return; } - else if(clickedBlock != null && materialInHand == Material.BOAT) + else if(clickedBlock != null && materialInHand == Material.BOAT) { if(playerData == null) playerData = this.dataStore.getPlayerData(player.getUniqueId()); Claim claim = this.dataStore.getClaimAt(clickedBlock.getLocation(), false, playerData.lastClaim); @@ -1791,6 +1791,26 @@ class PlayerEventHandler implements Listener return; } + //survival world minecart placement requires container trust, which is the permission required to remove the minecart later + else if(clickedBlock != null && + (materialInHand == Material.MINECART || materialInHand == Material.POWERED_MINECART || materialInHand == Material.STORAGE_MINECART) && + !GriefPrevention.instance.creativeRulesApply(clickedBlock.getLocation())) + { + if(playerData == null) playerData = this.dataStore.getPlayerData(player.getUniqueId()); + Claim claim = this.dataStore.getClaimAt(clickedBlock.getLocation(), false, playerData.lastClaim); + if(claim != null) + { + String reason = claim.allowContainers(player); + if(reason != null) + { + GriefPrevention.sendMessage(player, TextMode.Err, reason); + event.setCancelled(true); + } + } + + return; + } + //if it's a spawn egg, minecart, or boat, and this is a creative world, apply special rules else if(clickedBlock != null && (materialInHand == Material.MINECART || materialInHand == Material.POWERED_MINECART || materialInHand == Material.STORAGE_MINECART || materialInHand == Material.BOAT) && GriefPrevention.instance.creativeRulesApply(clickedBlock.getLocation())) {