mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-14 10:34:41 +02:00
@@ -96,32 +96,38 @@ public class Trade
|
||||
}
|
||||
|
||||
public void pay(final IUser user)
|
||||
{
|
||||
try
|
||||
{
|
||||
pay(user, true);
|
||||
}
|
||||
catch (ChargeException ex)
|
||||
{
|
||||
//This should never ever get here... true above means items get dropped.
|
||||
user.sendMessage(ex.getMessage());
|
||||
}
|
||||
{
|
||||
pay(user, true);
|
||||
}
|
||||
|
||||
public void pay(final IUser user, final boolean dropItems) throws ChargeException
|
||||
public boolean pay(final IUser user, final boolean dropItems)
|
||||
{
|
||||
boolean success = true;
|
||||
if (getMoney() != null && getMoney() > 0)
|
||||
{
|
||||
user.giveMoney(getMoney());
|
||||
}
|
||||
if (getItemStack() != null)
|
||||
{
|
||||
user.giveItems(itemStack, dropItems);
|
||||
if (dropItems)
|
||||
{
|
||||
final Map<Integer, ItemStack> 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();
|
||||
}
|
||||
if (getExperience() != null)
|
||||
{
|
||||
SetExpFix.setTotalExperience(user, SetExpFix.getTotalExperience(user) + getExperience());
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
public void charge(final IUser user) throws ChargeException
|
||||
|
@@ -661,6 +661,7 @@ public class User extends UserBase implements IUser
|
||||
{
|
||||
sendMessage(_("InvFull"));
|
||||
}
|
||||
updateInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -678,6 +679,7 @@ public class User extends UserBase implements IUser
|
||||
{
|
||||
sendMessage(_("InvFull"));
|
||||
}
|
||||
updateInventory();
|
||||
}
|
||||
|
||||
private boolean giveItemStack(ItemStack itemStack, Boolean canSpew) throws ChargeException
|
||||
|
@@ -27,7 +27,10 @@ public class SignBuy extends EssentialsSign
|
||||
final Trade items = getTrade(sign, 1, 2, player, ess);
|
||||
final Trade charge = getTrade(sign, 3, ess);
|
||||
charge.isAffordableFor(player);
|
||||
items.pay(player, false);
|
||||
if (!items.pay(player, false))
|
||||
{
|
||||
throw new ChargeException("Inventory full");
|
||||
}
|
||||
charge.charge(player);
|
||||
Trade.log("Sign", "Buy", "Interact", username, charge, username, items, sign.getBlock().getLocation(), ess);
|
||||
return true;
|
||||
|
@@ -55,7 +55,10 @@ 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);
|
||||
trade.pay(player, false);
|
||||
if (!trade.pay(player, false))
|
||||
{
|
||||
throw new ChargeException("Full inventory");
|
||||
}
|
||||
substractAmount(sign, 2, trade, ess);
|
||||
addAmount(sign, 1, charge, ess);
|
||||
charge.charge(player);
|
||||
|
Reference in New Issue
Block a user