summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2014-06-21 21:47:33 +0100
committerKHobbits <rob@khobbits.co.uk>2014-06-21 21:47:33 +0100
commit2e7042a7b4c4d90b0a9ce2052bc25725e53db1b3 (patch)
tree6f3441c631a0eb54514da716b6199f814bebb32e
parentc74bff83948cada8fbbb3b9ebf52f8b9181011a6 (diff)
downloadEssentials-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.java26
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();
}