From 14b53db85ab408ea302f18c31d4e46ef74469fd4 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 8 May 2011 22:45:10 +0000 Subject: [PATCH] [trunk] warp sign: Only charge the user, if he is authorized to use the sign. git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1377 e251c2fe-e539-e718-e476-b85c1f46cddb --- .../essentials/EssentialsPlayerListener.java | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index df6b013d1..c2975e3c6 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -454,44 +454,18 @@ public class EssentialsPlayerListener extends PlayerListener } if (sign.getLine(0).equals("§1[Warp]")) { - if (!sign.getLine(3).isEmpty()) - { - String[] l1 = sign.getLine(3).split("[ :-]+"); - boolean m1 = l1[0].matches("\\$[0-9]+"); - int q1 = Integer.parseInt(m1 ? l1[0].substring(1) : l1[0]); - if (q1 < 1) - { - throw new Exception("Quantities must be greater than 0."); - } - if (m1) - { - if (user.getMoney() < q1) - { - throw new Exception("You do not have sufficient funds."); - } - user.takeMoney(q1); - user.sendMessage("$" + q1 + " taken from your bank account."); - } - else - { - ItemStack i = ItemDb.get(l1[1], q1); - if (!InventoryWorkaround.containsItem(user.getInventory(), true, i)) - { - throw new Exception("You do not have " + q1 + "x " + l1[1] + "."); - } - InventoryWorkaround.removeItem(user.getInventory(), true, i); - user.updateInventory(); - } - } + if (!sign.getLine(2).isEmpty()) { if (sign.getLine(2).equals("§2Everyone")) { + chargeUserForWarp(sign, user); user.getTeleport().warp(sign.getLine(1), "warpsign"); return; } if (user.inGroup(sign.getLine(2))) { + chargeUserForWarp(sign, user); user.getTeleport().warp(sign.getLine(1), "warpsign"); return; } @@ -499,6 +473,7 @@ public class EssentialsPlayerListener extends PlayerListener if (user.isAuthorized("essentials.signs.warp.use") && (!ess.getSettings().getPerWarpPermission() || user.isAuthorized("essentials.warp." + sign.getLine(1)))) { + chargeUserForWarp(sign, user); user.getTeleport().warp(sign.getLine(1), "warpsign"); } return; @@ -509,6 +484,39 @@ public class EssentialsPlayerListener extends PlayerListener user.sendMessage("§cError: " + ex.getMessage()); } } + + private void chargeUserForWarp(Sign sign, User user) throws Exception + { + if (!sign.getLine(3).isEmpty()) + { + String[] l1 = sign.getLine(3).split("[ :-]+"); + boolean m1 = l1[0].matches("\\$[0-9]+"); + int q1 = Integer.parseInt(m1 ? l1[0].substring(1) : l1[0]); + if (q1 < 1) + { + throw new Exception("Quantities must be greater than 0."); + } + if (m1) + { + if (user.getMoney() < q1) + { + throw new Exception("You do not have sufficient funds."); + } + user.takeMoney(q1); + user.sendMessage("$" + q1 + " taken from your bank account."); + } + else + { + ItemStack i = ItemDb.get(l1[1], q1); + if (!InventoryWorkaround.containsItem(user.getInventory(), true, i)) + { + throw new Exception("You do not have " + q1 + "x " + l1[1] + "."); + } + InventoryWorkaround.removeItem(user.getInventory(), true, i); + user.updateInventory(); + } + } + } @Override public void onPlayerEggThrow(PlayerEggThrowEvent event)