Search in sources :

Example 6 with Trade

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;
}
Also used : Trade(com.earth2me.essentials.Trade) ItemStack(org.bukkit.inventory.ItemStack) ChargeException(com.earth2me.essentials.ChargeException) BigDecimal(java.math.BigDecimal)

Example 7 with Trade

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;
}
Also used : Trade(com.earth2me.essentials.Trade) ItemStack(org.bukkit.inventory.ItemStack) BigDecimal(java.math.BigDecimal)

Example 8 with Trade

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;
}
Also used : Trade(com.earth2me.essentials.Trade)

Example 9 with Trade

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;
}
Also used : Trade(com.earth2me.essentials.Trade)

Example 10 with Trade

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;
}
Also used : Trade(com.earth2me.essentials.Trade)

Aggregations

Trade (com.earth2me.essentials.Trade)43 ItemStack (org.bukkit.inventory.ItemStack)13 ChargeException (com.earth2me.essentials.ChargeException)10 BigDecimal (java.math.BigDecimal)9 Location (org.bukkit.Location)9 User (com.earth2me.essentials.User)7 NoChargeException (com.earth2me.essentials.commands.NoChargeException)2 MaxMoneyException (net.ess3.api.MaxMoneyException)2 Kit (com.earth2me.essentials.Kit)1 Mob (com.earth2me.essentials.Mob)1 Teleport (com.earth2me.essentials.Teleport)1 Commandrepair (com.earth2me.essentials.commands.Commandrepair)1 NotEnoughArgumentsException (com.earth2me.essentials.commands.NotEnoughArgumentsException)1 IText (com.earth2me.essentials.textreader.IText)1 KeywordReplacer (com.earth2me.essentials.textreader.KeywordReplacer)1 TextInput (com.earth2me.essentials.textreader.TextInput)1 TextPager (com.earth2me.essentials.textreader.TextPager)1 IOException (java.io.IOException)1 List (java.util.List)1 World (org.bukkit.World)1