From 74b63a6f2dc6834fc7d9b8d96e94a64b747f981b Mon Sep 17 00:00:00 2001 From: GunfighterJ Date: Mon, 28 Jan 2013 22:30:00 -0600 Subject: [PATCH] Ignore itemmeta on sell --- .../essentials/commands/Commandsell.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java index ec3262958..a70b1e3cc 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java @@ -43,7 +43,7 @@ public class Commandsell extends EssentialsCommand } try { - totalWorth += sellItem(user, stack, args, true); + totalWorth += sellItem(user, stack, args, true); } catch (Exception e) { @@ -164,11 +164,23 @@ public class Commandsell extends EssentialsCommand } //TODO: Prices for Enchantments - final ItemStack ris = is.clone(); - ris.setAmount(amount); - user.getInventory().removeItem(ris); + ItemStack[] pinv = user.getInventory().getContents(); + int itemIndex = -1; + for (int i = 0; i < pinv.length; i++) + { + if (pinv[i] != null) + { + if (pinv[i].getType() == is.getType() && pinv[i].getDurability() == is.getDurability()) + { + itemIndex = i; + break; + } + } + } + pinv[itemIndex].setAmount(pinv[itemIndex].getAmount() - amount); + user.getInventory().setContents(pinv); user.updateInventory(); - Trade.log("Command", "Sell", "Item", user.getName(), new Trade(ris, ess), user.getName(), new Trade(worth * amount, ess), user.getLocation(), ess); + Trade.log("Command", "Sell", "Item", user.getName(), new Trade(pinv[itemIndex], ess), user.getName(), new Trade(worth * amount, ess), user.getLocation(), ess); user.giveMoney(worth * amount); user.sendMessage(_("itemSold", Util.displayCurrency(worth * amount, ess), amount, is.getType().toString().toLowerCase(Locale.ENGLISH), Util.displayCurrency(worth, ess))); logger.log(Level.INFO, _("itemSoldConsole", user.getDisplayName(), is.getType().toString().toLowerCase(Locale.ENGLISH), Util.displayCurrency(worth * amount, ess), amount, Util.displayCurrency(worth, ess)));