package com.crossge.cceconomy.Commands;
import java.util.HashMap;
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 CmdBuy extends Cmd
{
Formatter form = new Formatter();
BalChecks balc = new BalChecks();
ArrayLists arl = new ArrayLists();
Materials mat = new Materials();
Prices pr = new Prices();
public CmdBuy()
{
}
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();
String balance = balc.bal(player.getName());
double intbal = Double.parseDouble(balance);
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]))
return false;
amount = Integer.parseInt(args[1]);
}
else
{
itemName = Integer.toString(player.getItemInHand().getTypeId());
if(form.isLegal(itemName))
itemName = mat.idToName(Integer.parseInt(itemName));
if(!form.isLegal(args[0]))
return false;
data = player.getItemInHand().getDurability();
amount = Integer.parseInt(args[0]);
}
itemName = mat.findItem(itemName);
if(!mat.itemExists(itemName))
{
player.sendMessage(arl.getMessages() + "That item does not exist");
return true;
}
itemName = itemName.toUpperCase();
double cost = 0.00;
cost = pr.getCost(arl.getBuyFile(), itemName, amount);
if(cost == -1.00)
{
if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM"))
itemName = itemName.replaceAll("_ITEM", "");
itemName = form.capFirst(itemName);
player.sendMessage(arl.getMessages() + plural(itemName) + " cannot be bought from the server.");
return true;
}
else
{
if (intbal < cost)
{
player.sendMessage(arl.getMessages() + "You dont have enough money to buy that item.");
return true;
}
ItemStack itemstack = new ItemStack(Material.matchMaterial(mat.findItem(itemName)), amount, data);
HashMap<Integer, ItemStack> noFit = inventory.addItem(itemstack);
if(!noFit.isEmpty())
{
amount = amount - noFit.get(0).getAmount();
cost = pr.getCost(arl.getBuyFile(), itemName, amount);
player.sendMessage(arl.getMessages() + "You do not have enough inventory space to buy that much of that item,"
+ " buying the amount you have inventory space for.");
}
balc.removeMoney(player.getName(), cost);
if(!itemName.equalsIgnoreCase("NETHER_BRICK_ITEM"))
itemName = itemName.replaceAll("_ITEM", "");
itemName = form.capFirst(itemName);
player.sendMessage(arl.getMessages() + "You bought " + Integer.toString(amount) + " of " + plural(itemName) + ".");
player.sendMessage(arl.getMoney() + "$" + form.roundTwoDecimals(cost) + arl.getMessages() + " was removed from your acount.");
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";
}
}