summaryrefslogtreecommitdiffstats
path: root/Essentials/src/com/earth2me/essentials/Trade.java
diff options
context:
space:
mode:
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/Trade.java')
-rw-r--r--Essentials/src/com/earth2me/essentials/Trade.java49
1 files changed, 32 insertions, 17 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java
index 45c3d49a3..8c082be3e 100644
--- a/Essentials/src/com/earth2me/essentials/Trade.java
+++ b/Essentials/src/com/earth2me/essentials/Trade.java
@@ -18,22 +18,22 @@ public class Trade
private final transient Double money;
private final transient ItemStack itemStack;
private final transient IEssentials ess;
-
+
public Trade(final String command, final IEssentials ess)
{
this(command, null, null, ess);
}
-
+
public Trade(final double money, final IEssentials ess)
{
this(null, money, null, ess);
}
-
+
public Trade(final ItemStack items, final IEssentials ess)
{
this(null, null, items, ess);
}
-
+
private Trade(final String command, final Double money, final ItemStack item, final IEssentials ess)
{
this.command = command;
@@ -41,7 +41,7 @@ public class Trade
this.itemStack = item;
this.ess = ess;
}
-
+
public void isAffordableFor(final IUser user) throws ChargeException
{
final double mon = user.getMoney();
@@ -52,13 +52,13 @@ public class Trade
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
-
+
if (getItemStack() != null
&& !InventoryWorkaround.containsItem(user.getInventory(), true, itemStack))
{
throw new ChargeException(Util.format("missingItems", getItemStack().getAmount(), getItemStack().getType().toString().toLowerCase().replace("_", " ")));
}
-
+
if (command != null && !command.isEmpty()
&& !user.isAuthorized("essentials.nocommandcost.all")
&& !user.isAuthorized("essentials.nocommandcost." + command)
@@ -69,24 +69,38 @@ public class Trade
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
}
-
+
public void pay(final IUser user)
{
+ pay(user, true);
+ }
+
+ public boolean pay(final IUser user, final boolean dropItems)
+ {
+ boolean success = true;
if (getMoney() != null && getMoney() > 0)
{
user.giveMoney(getMoney());
}
if (getItemStack() != null)
{
- final Map<Integer, ItemStack> leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack());
- for (ItemStack itemStack : leftOver.values())
+ if (dropItems)
+ {
+ final Map<Integer, ItemStack> leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack());
+ for (ItemStack itemStack : leftOver.values())
+ {
+ InventoryWorkaround.dropItem(user.getLocation(), itemStack);
+ }
+ }
+ else
{
- InventoryWorkaround.dropItem(user.getLocation(), itemStack);
+ success = InventoryWorkaround.addAllItems(user.getInventory(), true, getItemStack());
}
user.updateInventory();
}
+ return success;
}
-
+
public void charge(final IUser user) throws ChargeException
{
if (getMoney() != null)
@@ -120,18 +134,18 @@ public class Trade
user.takeMoney(cost);
}
}
-
+
public Double getMoney()
{
return money;
}
-
+
public ItemStack getItemStack()
{
return itemStack;
}
private static FileWriter fw = null;
-
+
public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, Location loc, IEssentials ess)
{
if (!ess.getSettings().isEcoLogEnabled())
@@ -225,10 +239,11 @@ public class Trade
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
}
-
+
public static void closeLog()
{
- if (fw != null) {
+ if (fw != null)
+ {
try
{
fw.close();