diff options
author | KHobbits <rob@khobbits.co.uk> | 2014-06-21 21:47:33 +0100 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2014-06-21 21:47:33 +0100 |
commit | 2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3 (patch) | |
tree | 6f3441c631a0eb54514da716b6199f814bebb32e | |
parent | c74bff83948cada8fbbb3b9ebf52f8b9181011a6 (diff) | |
download | Essentials-2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3.tar Essentials-2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3.tar.gz Essentials-2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3.tar.lz Essentials-2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3.tar.xz Essentials-2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3.zip |
New permission: essentials.signs.trade.override.collect
People with this permission will collect the resources of other peoples trade signs broken with admin permissions (essentials.signs.trade.override).
-rw-r--r-- | Essentials/src/com/earth2me/essentials/signs/SignTrade.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 06a410775..59910cb4d 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -118,27 +118,39 @@ public class SignTrade extends EssentialsSign @Override protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, MaxMoneyException { - if ((sign.getLine(3).length() > 3 && sign.getLine(3).substring(2).equalsIgnoreCase(username)) - || player.isAuthorized("essentials.signs.trade.override")) + final String signOwner = sign.getLine(3); + + final boolean isOwner = (signOwner.length() > 3 && signOwner.substring(2).equalsIgnoreCase(username)); + final boolean canBreak = isOwner ? true : player.isAuthorized("essentials.signs.trade.override"); + final boolean canCollect = isOwner ? true : player.isAuthorized("essentials.signs.trade.override.collect"); + + if (canBreak) { try { final Trade stored1 = getTrade(sign, 1, AmountType.TOTAL, false, ess); final Trade stored2 = getTrade(sign, 2, AmountType.TOTAL, false, ess); - Map<Integer, ItemStack> withdraw1 = stored1.pay(player, OverflowType.RETURN); - Map<Integer, ItemStack> withdraw2 = stored2.pay(player, OverflowType.RETURN); + + if (!canCollect) + { + Trade.log("Sign", "Trade", "Destroy", signOwner, stored2, username, stored1, sign.getBlock().getLocation(), ess); + return true; + } + + final Map<Integer, ItemStack> withdraw1 = stored1.pay(player, OverflowType.RETURN); + final Map<Integer, ItemStack> withdraw2 = stored2.pay(player, OverflowType.RETURN); if (withdraw1 == null && withdraw2 == null) { - Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, sign.getBlock().getLocation(), ess); + Trade.log("Sign", "Trade", "Break", signOwner, stored2, username, stored1, sign.getBlock().getLocation(), ess); return true; } setAmount(sign, 1, BigDecimal.valueOf(withdraw1 == null ? 0L : withdraw1.get(0).getAmount()), ess); - Trade.log("Sign", "Trade", "Withdraw", username, stored1, username, withdraw1 == null ? null : new Trade(withdraw1.get(0), ess), sign.getBlock().getLocation(), ess); + Trade.log("Sign", "Trade", "Withdraw", signOwner, stored1, username, withdraw1 == null ? null : new Trade(withdraw1.get(0), ess), sign.getBlock().getLocation(), ess); setAmount(sign, 2, BigDecimal.valueOf(withdraw2 == null ? 0L : withdraw2.get(0).getAmount()), ess); - Trade.log("Sign", "Trade", "Withdraw", username, stored2, username, withdraw2 == null ? null : new Trade(withdraw2.get(0), ess), sign.getBlock().getLocation(), ess); + Trade.log("Sign", "Trade", "Withdraw", signOwner, stored2, username, withdraw2 == null ? null : new Trade(withdraw2.get(0), ess), sign.getBlock().getLocation(), ess); sign.updateSign(); } |