From 897571db7d838f0f2ff86cfb40b59fd0349f4974 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Wed, 4 Jan 2012 18:34:37 +0000 Subject: Possible sign refactor? --- Essentials/src/com/earth2me/essentials/Trade.java | 30 +++++++++------------- .../src/com/earth2me/essentials/api/IUser.java | 5 ++-- .../src/com/earth2me/essentials/user/User.java | 12 ++++++--- .../src/com/earth2me/essentials/signs/SignBuy.java | 5 +--- .../com/earth2me/essentials/signs/SignTrade.java | 5 +--- 5 files changed, 26 insertions(+), 31 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index f92a1d504..bcfd35d35 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -96,38 +96,32 @@ public class Trade } public void pay(final IUser user) - { - pay(user, true); + { + try + { + pay(user, true); + } + catch (ChargeException ex) + { + //This should never ever get here... true above means items get dropped. + user.sendMessage(ex.getMessage()); + } } - public boolean pay(final IUser user, final boolean dropItems) + public void pay(final IUser user, final boolean dropItems) throws ChargeException { - boolean success = true; if (getMoney() != null && getMoney() > 0) { user.giveMoney(getMoney()); } if (getItemStack() != null) { - if (dropItems) - { - final Map leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack()); - for (ItemStack itemStack : leftOver.values()) - { - InventoryWorkaround.dropItem(user.getLocation(), itemStack); - } - } - else - { - success = InventoryWorkaround.addAllItems(user.getInventory(), true, getItemStack()); - } - user.updateInventory(); + user.giveItems(itemStack, dropItems); } if (getExperience() != null) { SetExpFix.setTotalExperience(user, SetExpFix.getTotalExperience(user) + getExperience()); } - return success; } public void charge(final IUser user) throws ChargeException diff --git a/Essentials/src/com/earth2me/essentials/api/IUser.java b/Essentials/src/com/earth2me/essentials/api/IUser.java index 7217c3989..52f936fb7 100644 --- a/Essentials/src/com/earth2me/essentials/api/IUser.java +++ b/Essentials/src/com/earth2me/essentials/api/IUser.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.api; +import com.earth2me.essentials.ChargeException; import com.earth2me.essentials.storage.IStorageObjectHolder; import com.earth2me.essentials.user.CooldownException; import com.earth2me.essentials.user.UserData; @@ -30,9 +31,9 @@ public interface IUser extends Player, IStorageObjectHolder, IReload, void giveMoney(double value, CommandSender initiator); - void giveItems(ItemStack itemStack, Boolean canSpew); + void giveItems(ItemStack itemStack, Boolean canSpew) throws ChargeException; - void giveItems(List itemStacks, Boolean canSpew); + void giveItems(List itemStacks, Boolean canSpew) throws ChargeException; void setMoney(double value); diff --git a/Essentials/src/com/earth2me/essentials/user/User.java b/Essentials/src/com/earth2me/essentials/user/User.java index 54092d6ef..1d209df18 100644 --- a/Essentials/src/com/earth2me/essentials/user/User.java +++ b/Essentials/src/com/earth2me/essentials/user/User.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.user; +import com.earth2me.essentials.ChargeException; import com.earth2me.essentials.Console; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.Teleport; @@ -654,7 +655,7 @@ public class User extends UserBase implements IUser } @Override - public void giveItems(ItemStack itemStack, Boolean canSpew) + public void giveItems(ItemStack itemStack, Boolean canSpew) throws ChargeException { if (giveItemStack(itemStack, canSpew)) { @@ -663,7 +664,7 @@ public class User extends UserBase implements IUser } @Override - public void giveItems(List itemStacks, Boolean canSpew) + public void giveItems(List itemStacks, Boolean canSpew) throws ChargeException { boolean spew = false; for (ItemStack itemStack : itemStacks) @@ -679,7 +680,7 @@ public class User extends UserBase implements IUser } } - private boolean giveItemStack(ItemStack itemStack, Boolean canSpew) + private boolean giveItemStack(ItemStack itemStack, Boolean canSpew) throws ChargeException { boolean spew = false; @@ -710,6 +711,11 @@ public class User extends UserBase implements IUser spew = true; } } + else { + if (!overfilled.isEmpty()) { + throw new ChargeException("Inventory full"); + } + } return spew; } } diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignBuy.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignBuy.java index fd84bd0f3..628ed64c1 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/SignBuy.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignBuy.java @@ -27,10 +27,7 @@ public class SignBuy extends EssentialsSign final Trade items = getTrade(sign, 1, 2, player, ess); final Trade charge = getTrade(sign, 3, ess); charge.isAffordableFor(player); - if (!items.pay(player, false)) - { - throw new ChargeException("Inventory full"); - } + items.pay(player, false); charge.charge(player); Trade.log("Sign", "Buy", "Interact", username, charge, username, items, sign.getBlock().getLocation(), ess); return true; diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignTrade.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignTrade.java index 04db5511c..df913eced 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/SignTrade.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignTrade.java @@ -55,10 +55,7 @@ public class SignTrade extends EssentialsSign final Trade charge = getTrade(sign, 1, false, false, ess); final Trade trade = getTrade(sign, 2, false, true, ess); charge.isAffordableFor(player); - if (!trade.pay(player, false)) - { - throw new ChargeException("Full inventory"); - } + trade.pay(player, false); substractAmount(sign, 2, trade, ess); addAmount(sign, 1, charge, ess); charge.charge(player); -- cgit v1.2.3