From b11964dac44ca99af9d9286b2ab37ef395b11b22 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 3 Apr 2011 12:02:33 +0000 Subject: [PATCH] [trunk] Warp signs 4th line: charge money or items git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1097 e251c2fe-e539-e718-e476-b85c1f46cddb --- .../essentials/EssentialsBlockListener.java | 9 +++++++ .../essentials/EssentialsPlayerListener.java | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java index 286fd996c..ac00d5eab 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java @@ -121,6 +121,15 @@ public class EssentialsBlockListener extends BlockListener { event.setLine(0, "§4[Warp]"); if (user.isAuthorized("essentials.signs.warp.create")) { + if (!event.getLine(3).isEmpty()) + { + String[] l1 = event.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) ItemDb.get(l1[1]); + event.setLine(3, (m1 ? "$" + q1 : q1 + " " + l1[1])); + } if (event.getLine(1).isEmpty()) { event.setLine(1, "§dWarp name here!"); return; diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 69732523c..6ffd8aef9 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -344,6 +344,31 @@ 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((CraftInventory)user.getInventory(), true, i)) { + throw new Exception("You do not have " + q1 + "x " + l1[1] + "."); + } + InventoryWorkaround.removeItem((CraftInventory)user.getInventory(), true, i); + user.updateInventory(); + } + } if (!sign.getLine(2).isEmpty()) { if (sign.getLine(2).equals("§2Free")) { user.teleportCooldown();