package com.crossge.cceconomy.Commands; import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import com.crossge.cceconomy.*; public class CmdSell extends Cmd { BalChecks balc = new BalChecks(); Formatter form = new Formatter(); Materials mat = new Materials(); ArrayLists arl = new ArrayLists(); Prices pr = new Prices(); public CmdSell() { } public boolean commandUse(CommandSender sender, String[] args) { if (sender instanceof Player) { Player player = (Player) sender; if (args.length > 2 || args.length == 0) return false; PlayerInventory inventory = player.getInventory(); int amount = 0; String itemName = ""; String temp = ""; short data = 0; if(args.length == 2) { temp = args[0].replaceAll(":", " "); itemName = temp.split(" ")[0]; if(form.isLegal(itemName)) { itemName = mat.idToName(Integer.parseInt(itemName)); try { data = Short.parseShort(temp.split(" ")[1]); } catch(Exception e) { data = 0; } } if(!form.isLegal(args[1])) { if(!args[1].equalsIgnoreCase("all")) return false; amount = itemAmount(inventory, Material.matchMaterial(itemName)); } else amount = Integer.parseInt(args[1]); } else { itemName = Integer.toString(player.getItemInHand().getTypeId()); data = player.getItemInHand().getDurability(); if(form.isLegal(itemName)) itemName = mat.idToName(Integer.parseInt(itemName)); if(!form.isLegal(args[0])) { if(!args[0].equalsIgnoreCase("all")) return false; amount = itemAmount(inventory, Material.matchMaterial(mat.findItem(itemName))); } else amount = Integer.parseInt(args[0]); } itemName = mat.findItem(itemName); if(!mat.itemExists(itemName)) { player.sendMessage(arl.getMessages() + "That item does not exist"); return true; } double cost = 0.00; cost = pr.getCost(arl.getSellFile(), itemName, amount); if(cost == -1.00) { if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM")) itemName = itemName.replaceAll("_ITEM", ""); itemName = form.capFirst(itemName); player.sendMessage(arl.getMessages() + itemName + " cannot be sold to the server."); return true; } else { ItemStack itemstack = new ItemStack(Material.matchMaterial(itemName), amount, data); if(inventory.containsAtLeast(new ItemStack(Material.matchMaterial(itemName), 1, data), amount) ) { balc.addMoney(player.getName(), cost); inventory.removeItem(itemstack); if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM")) itemName = itemName.replaceAll("_ITEM", ""); itemName = form.capFirst(itemName); player.sendMessage(arl.getMessages() + "You sold " + Integer.toString(amount) + " " + itemName + "."); player.sendMessage(arl.getMoney() + "$" + form.roundTwoDecimals(cost) + arl.getMessages() + " was added to your acount."); } else { if(inventory.contains(Material.matchMaterial(itemName), amount) && mat.isTool(itemstack)) { if(sell(inventory,amount,Material.matchMaterial(itemName))) { if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM")) itemName = itemName.replaceAll("_ITEM", ""); itemName = form.capFirst(itemName); player.sendMessage(arl.getMessages() + "You sold " + Integer.toString(amount) + " of " + itemName + "."); player.sendMessage(arl.getMoney() + "$" + form.roundTwoDecimals(cost) + arl.getMessages() + " was added to your acount."); } else { if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM")) itemName = itemName.replaceAll("_ITEM", ""); itemName = form.capFirst(itemName); player.sendMessage(arl.getMessages() + "You do not have " + Integer.toString(amount) + " " + plural(itemName) + "."); } } else { if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM")) itemName = itemName.replaceAll("_ITEM", ""); itemName = form.capFirst(itemName); player.sendMessage(arl.getMessages() + "You do not have " + Integer.toString(amount) + " " + plural(itemName) + "."); } } return true; } } else { sender.sendMessage(arl.getMessages() + "Log in to use this command"); return true; } } private String plural(String s) { if(s.endsWith("s") || s.endsWith("S")) return s; return s + "s"; } private boolean sell(PlayerInventory inv, int cAmount, Material matType) { for(ItemStack s : inv.getContents()) { if(s == null) continue; if(cAmount > 0 && s.getType() == matType && s.getEnchantments().size() == 0) { inv.removeItem(new ItemStack(matType, 1, s.getDurability())); cAmount = cAmount - 1; sell(inv,cAmount,matType); } if(cAmount == 0) return true; } return false; } private int itemAmount(PlayerInventory inv, Material matType) { int amount = 0; for(ItemStack s : inv.getContents()) { if(s == null || s.getType() != matType) continue; if(s.getEnchantments().size() == 0) amount += s.getAmount(); } return amount; } }