Search in sources :

Example 26 with Trade

use of com.earth2me.essentials.Trade in project Essentials by drtshock.

the class SignEnchant method onSignInteract.

@Override
protected boolean onSignInteract(ISign sign, User player, String username, IEssentials ess) throws SignException, ChargeException {
    final ItemStack search = sign.getLine(1).equals("*") || sign.getLine(1).equalsIgnoreCase("any") ? null : getItemStack(sign.getLine(1), 1, ess);
    final Trade charge = getTrade(sign, 3, ess);
    charge.isAffordableFor(player);
    final String[] enchantLevel = sign.getLine(2).split(":");
    if (enchantLevel.length != 2) {
        throw new SignException(tl("invalidSignLine", 3));
    }
    final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
    if (enchantment == null) {
        throw new SignException(tl("enchantmentNotFound"));
    }
    int level;
    try {
        level = Integer.parseInt(enchantLevel[1]);
    } catch (NumberFormatException ex) {
        level = enchantment.getMaxLevel();
    }
    final ItemStack playerHand = player.getBase().getItemInHand();
    if (playerHand == null || playerHand.getAmount() != 1 || (playerHand.containsEnchantment(enchantment) && playerHand.getEnchantmentLevel(enchantment) == level)) {
        throw new SignException(tl("missingItems", 1, sign.getLine(1)));
    }
    if (search != null && playerHand.getType() != search.getType()) {
        throw new SignException(tl("missingItems", 1, search.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ')));
    }
    final ItemStack toEnchant = playerHand;
    try {
        if (level == 0) {
            toEnchant.removeEnchantment(enchantment);
        } else {
            if (ess.getSettings().allowUnsafeEnchantments() && player.isAuthorized("essentials.signs.enchant.allowunsafe")) {
                toEnchant.addUnsafeEnchantment(enchantment, level);
            } else {
                toEnchant.addEnchantment(enchantment, level);
            }
        }
    } catch (Exception ex) {
        throw new SignException(ex.getMessage(), ex);
    }
    final String enchantmentName = enchantment.getName().toLowerCase(Locale.ENGLISH);
    if (level == 0) {
        player.sendMessage(tl("enchantmentRemoved", enchantmentName.replace('_', ' ')));
    } else {
        player.sendMessage(tl("enchantmentApplied", enchantmentName.replace('_', ' ')));
    }
    charge.charge(player);
    Trade.log("Sign", "Enchant", "Interact", username, charge, username, charge, sign.getBlock().getLocation(), ess);
    player.getBase().updateInventory();
    return true;
}
Also used : Trade(com.earth2me.essentials.Trade) ItemStack(org.bukkit.inventory.ItemStack) Enchantment(org.bukkit.enchantments.Enchantment) ChargeException(com.earth2me.essentials.ChargeException)

Example 27 with Trade

use of com.earth2me.essentials.Trade in project Essentials by drtshock.

the class SignFree method onSignInteract.

@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException {
    ItemStack itemStack = getItemStack(sign.getLine(1), 1, ess);
    itemStack = getItemMeta(itemStack, sign.getLine(2), ess);
    final ItemStack item = getItemMeta(itemStack, sign.getLine(3), ess);
    if (item.getType() == Material.AIR) {
        throw new SignException(tl("cantSpawnItem", "Air"));
    }
    item.setAmount(item.getType().getMaxStackSize());
    ItemMeta meta = item.getItemMeta();
    final String displayName = meta.hasDisplayName() ? meta.getDisplayName() : item.getType().toString();
    Inventory invent = ess.getServer().createInventory(player.getBase(), 36, displayName);
    for (int i = 0; i < 36; i++) {
        invent.addItem(item);
    }
    player.getBase().openInventory(invent);
    Trade.log("Sign", "Free", "Interact", username, null, username, new Trade(item, ess), sign.getBlock().getLocation(), ess);
    return true;
}
Also used : Trade(com.earth2me.essentials.Trade) ItemStack(org.bukkit.inventory.ItemStack) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Inventory(org.bukkit.inventory.Inventory)

Example 28 with Trade

use of com.earth2me.essentials.Trade in project Essentials by drtshock.

the class SignSpawnmob method onSignInteract.

@Override
protected boolean onSignInteract(ISign sign, User player, String username, IEssentials ess) throws SignException, ChargeException {
    final Trade charge = getTrade(sign, 3, ess);
    charge.isAffordableFor(player);
    try {
        List<String> mobParts = SpawnMob.mobParts(sign.getLine(2));
        List<String> mobData = SpawnMob.mobData(sign.getLine(2));
        SpawnMob.spawnmob(ess, ess.getServer(), player.getSource(), player, mobParts, mobData, Integer.parseInt(sign.getLine(1)));
    } catch (Exception ex) {
        throw new SignException(ex.getMessage(), ex);
    }
    charge.charge(player);
    Trade.log("Sign", "Spawnmob", "Interact", username, null, username, charge, sign.getBlock().getLocation(), ess);
    return true;
}
Also used : Trade(com.earth2me.essentials.Trade) ChargeException(com.earth2me.essentials.ChargeException)

Example 29 with Trade

use of com.earth2me.essentials.Trade in project Essentials by drtshock.

the class SignTime 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);
    charge.isAffordableFor(player);
    final String timeString = sign.getLine(1);
    long time = player.getWorld().getTime();
    time -= time % 24000;
    if ("§2Day".equalsIgnoreCase(timeString)) {
        player.getWorld().setTime(time + 24000);
        charge.charge(player);
        Trade.log("Sign", "TimeDay", "Interact", username, null, username, charge, sign.getBlock().getLocation(), ess);
        return true;
    }
    if ("§2Night".equalsIgnoreCase(timeString)) {
        player.getWorld().setTime(time + 37700);
        charge.charge(player);
        Trade.log("Sign", "TimeNight", "Interact", username, null, username, charge, sign.getBlock().getLocation(), ess);
        return true;
    }
    throw new SignException(tl("onlyDayNight"));
}
Also used : Trade(com.earth2me.essentials.Trade)

Example 30 with Trade

use of com.earth2me.essentials.Trade in project Essentials by drtshock.

the class SignTrade method onSignBreak.

@Override
protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, MaxMoneyException {
    final String signOwner = sign.getLine(3);
    final boolean isOwner = (signOwner.length() > 3 && signOwner.substring(2).equalsIgnoreCase(username));
    final boolean canBreak = isOwner ? true : player.isAuthorized("essentials.signs.trade.override");
    final boolean canCollect = isOwner ? true : player.isAuthorized("essentials.signs.trade.override.collect");
    if (canBreak) {
        try {
            final Trade stored1 = getTrade(sign, 1, AmountType.TOTAL, false, ess);
            final Trade stored2 = getTrade(sign, 2, AmountType.TOTAL, false, ess);
            if (!canCollect) {
                Trade.log("Sign", "Trade", "Destroy", signOwner, stored2, username, stored1, sign.getBlock().getLocation(), ess);
                return true;
            }
            final Map<Integer, ItemStack> withdraw1 = stored1.pay(player, OverflowType.RETURN);
            final Map<Integer, ItemStack> withdraw2 = stored2.pay(player, OverflowType.RETURN);
            if (withdraw1 == null && withdraw2 == null) {
                Trade.log("Sign", "Trade", "Break", signOwner, stored2, username, stored1, sign.getBlock().getLocation(), ess);
                return true;
            }
            setAmount(sign, 1, BigDecimal.valueOf(withdraw1 == null ? 0L : withdraw1.get(0).getAmount()), ess);
            Trade.log("Sign", "Trade", "Withdraw", signOwner, stored1, username, withdraw1 == null ? null : new Trade(withdraw1.get(0), ess), sign.getBlock().getLocation(), ess);
            setAmount(sign, 2, BigDecimal.valueOf(withdraw2 == null ? 0L : withdraw2.get(0).getAmount()), ess);
            Trade.log("Sign", "Trade", "Withdraw", signOwner, stored2, username, withdraw2 == null ? null : new Trade(withdraw2.get(0), ess), sign.getBlock().getLocation(), ess);
            sign.updateSign();
        } catch (SignException e) {
            if (player.isAuthorized("essentials.signs.trade.override")) {
                return true;
            }
            throw e;
        }
        return false;
    } else {
        return false;
    }
}
Also used : Trade(com.earth2me.essentials.Trade) ItemStack(org.bukkit.inventory.ItemStack)

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