use of com.earth2me.essentials.Trade in project Essentials by drtshock.
the class SignBuy method onSignInteract.
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException, MaxMoneyException {
Trade items = getTrade(sign, 1, 2, player, ess);
Trade charge = getTrade(sign, 3, ess);
// Check if the player is trying to buy in bulk.
if (ess.getSettings().isAllowBulkBuySell() && player.getBase().isSneaking()) {
ItemStack heldItem = player.getItemInHand();
if (items.getItemStack().isSimilar(heldItem)) {
int initialItemAmount = items.getItemStack().getAmount();
int newItemAmount = heldItem.getAmount();
ItemStack item = items.getItemStack();
item.setAmount(newItemAmount);
items = new Trade(item, ess);
BigDecimal chargeAmount = charge.getMoney();
BigDecimal pricePerSingleItem = chargeAmount.divide(new BigDecimal(initialItemAmount));
pricePerSingleItem = pricePerSingleItem.multiply(new BigDecimal(newItemAmount));
charge = new Trade(pricePerSingleItem, ess);
}
}
charge.isAffordableFor(player);
if (!items.pay(player)) {
//TODO: TL
throw new ChargeException("Inventory full");
}
charge.charge(player);
Trade.log("Sign", "Buy", "Interact", username, charge, username, items, sign.getBlock().getLocation(), ess);
return true;
}
use of com.earth2me.essentials.Trade in project Essentials by drtshock.
the class SignSell method onSignInteract.
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException, MaxMoneyException {
Trade charge = getTrade(sign, 1, 2, player, ess);
Trade money = getTrade(sign, 3, ess);
// Check if the player is trying to sell in bulk.
if (ess.getSettings().isAllowBulkBuySell() && player.getBase().isSneaking()) {
ItemStack heldItem = player.getItemInHand();
if (charge.getItemStack().isSimilar(heldItem)) {
int initialItemAmount = charge.getItemStack().getAmount();
int newItemAmount = heldItem.getAmount();
ItemStack item = charge.getItemStack();
item.setAmount(newItemAmount);
charge = new Trade(item, ess);
BigDecimal chargeAmount = money.getMoney();
BigDecimal pricePerSingleItem = chargeAmount.divide(new BigDecimal(initialItemAmount));
pricePerSingleItem = pricePerSingleItem.multiply(new BigDecimal(newItemAmount));
money = new Trade(pricePerSingleItem, ess);
}
}
charge.isAffordableFor(player);
money.pay(player, OverflowType.DROP);
charge.charge(player);
Trade.log("Sign", "Sell", "Interact", username, charge, username, money, sign.getBlock().getLocation(), ess);
return true;
}
use of com.earth2me.essentials.Trade in project Essentials by drtshock.
the class SignTrade method onSignCreate.
@Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException {
validateTrade(sign, 1, false, ess);
validateTrade(sign, 2, true, ess);
final Trade trade = getTrade(sign, 2, AmountType.ROUNDED, true, ess);
final Trade charge = getTrade(sign, 1, AmountType.ROUNDED, false, ess);
if (trade.getType() == charge.getType() && (trade.getType() != TradeType.ITEM || trade.getItemStack().isSimilar(charge.getItemStack()))) {
throw new SignException("You cannot trade for the same item type.");
}
trade.isAffordableFor(player);
sign.setLine(3, "ยง8" + username);
trade.charge(player);
Trade.log("Sign", "Trade", "Create", username, trade, username, null, sign.getBlock().getLocation(), ess);
return true;
}
use of com.earth2me.essentials.Trade in project Essentials by drtshock.
the class SignGameMode method onSignInteract.
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException {
final Trade charge = getTrade(sign, 2, ess);
final String mode = sign.getLine(1).trim();
if (mode.isEmpty()) {
throw new SignException(tl("invalidSignLine", 2));
}
charge.isAffordableFor(player);
performSetMode(mode.toLowerCase(Locale.ENGLISH), player.getBase());
player.sendMessage(tl("gameMode", tl(player.getBase().getGameMode().toString().toLowerCase(Locale.ENGLISH)), player.getDisplayName()));
Trade.log("Sign", "gameMode", "Interact", username, null, username, charge, sign.getBlock().getLocation(), ess);
charge.charge(player);
return true;
}
use of com.earth2me.essentials.Trade in project Essentials by drtshock.
the class SignHeal method onSignInteract.
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException {
if (player.getBase().getHealth() == 0) {
throw new SignException(tl("healDead"));
}
final Trade charge = getTrade(sign, 1, ess);
charge.isAffordableFor(player);
player.getBase().setHealth(20);
player.getBase().setFoodLevel(20);
player.getBase().setFireTicks(0);
player.sendMessage(tl("youAreHealed"));
charge.charge(player);
Trade.log("Sign", "Heal", "Interact", username, null, username, charge, sign.getBlock().getLocation(), ess);
return true;
}
Aggregations