package regalowl.hyperconomy;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class Ymladditem implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender == null) {return true;}
Player player = null;
if (sender instanceof Player) {
player = (Player)sender;
} else {
return true;
}
HyperConomy hc = HyperConomy.hc;
LanguageFile L = hc.getLanguageFile();
EconomyManager em = hc.getEconomyManager();
try {
String displayName = "";
if (args.length >= 1) {
displayName = args[0];
if (displayName.equalsIgnoreCase("all")) {
addAll(player);
player.sendMessage(L.get("INVENTORY_ADDED"));
return true;
}
if (displayName.equalsIgnoreCase("help")) {
player.sendMessage(L.get("YMLADDITEM_INVALID"));
return true;
}
}
double value = 10.0;
int median = 0;
if (args.length >= 2) {
value = Double.parseDouble(args[1]);
}
if (value >= 100000) {
median = 10;
} else if (value >= 10000) {
median = 100;
} else if (value >= 1000) {
median = 500;
} else if (value >= 100) {
median = 1000;
} else if (value >= 50) {
median = 5000;
} else if (value >= 1) {
median = 10000;
} else {
median = 25000;
}
if (args.length >= 3) {
median = Integer.parseInt(args[2]);
}
if (player.getItemInHand().getType() == Material.AIR) {
player.sendMessage(L.get("AIR_CANT_BE_TRADED"));
return true;
}
HyperEconomy econ = em.getHyperPlayer(player.getName()).getHyperEconomy();
HyperObject ho = econ.getHyperObject(player.getItemInHand());
if (ho != null) {
player.sendMessage(L.get("ALREADY_IN_DATABASE"));
return true;
}
ItemStack stack = player.getItemInHand();
HyperItemStack his = new HyperItemStack(stack);
String name = stack.getType() + "_" + his.getDamageValue();
if (econ.objectTest(name) || name.equalsIgnoreCase("")) {
name = generateName(stack);
}
FileConfiguration objects = hc.gYH().gFC("objects");
objects.set(name + ".information.type", "item");
objects.set(name + ".information.material", stack.getType().toString());
String aliases = displayName.replace("_", "") + ",";
int data = his.getDamageValue();
objects.set(name + ".information.data", data);
objects.set(name + ".value", value);
objects.set(name + ".price.static", false);
objects.set(name + ".price.staticprice", value*2);
objects.set(name + ".stock.stock", 0);
objects.set(name + ".stock.median", median);
objects.set(name + ".initiation.initiation", true);
objects.set(name + ".initiation.startprice", value*2);
objects.set(name + ".name.display", displayName);
objects.set(name + ".name.aliases", aliases);
player.sendMessage(L.get("ITEM_ADDED"));
return true;
} catch (Exception e) {
e.printStackTrace();
player.sendMessage(L.get("YMLADDITEM_INVALID"));
return true;
}
}
private void addItem(ItemStack stack, Player player) {
if (stack == null || player == null) {return;}
HyperConomy hc = HyperConomy.hc;
EconomyManager em = hc.getEconomyManager();
if (stack.getType() == Material.AIR) {return;}
String displayName = generateName(stack);
HyperItemStack his = new HyperItemStack(stack);
String name = stack.getType() + "_" + his.getDamageValue();
String aliases = displayName.replace("_", "") + ",";
double value = 10.0;
int median = 10000;
double startprice = 20.0;
int data = his.getDamageValue();
HyperEconomy econ = em.getHyperPlayer(player.getName()).getHyperEconomy();
HyperObject ho = econ.getHyperObject(stack);
if (ho != null) {return;}
FileConfiguration objects = hc.gYH().gFC("objects");
objects.set(name + ".information.type", "item");
objects.set(name + ".information.material", player.getItemInHand().getType().toString());
objects.set(name + ".information.data", data);
objects.set(name + ".value", value);
objects.set(name + ".price.static", false);
objects.set(name + ".price.staticprice", startprice);
objects.set(name + ".stock.stock", 0);
objects.set(name + ".stock.median", median);
objects.set(name + ".initiation.initiation", true);
objects.set(name + ".initiation.startprice", startprice);
objects.set(name + ".name.display", displayName);
objects.set(name + ".name.aliases", aliases);
}
private String generateName(ItemStack stack) {
String name = stack.getData().toString().toLowerCase();
if (name.contains("(")) {
name = name.substring(0, name.lastIndexOf("(")).replace("_", "").replace(" ", "");
} else {
name = name.replace("_", "").replace(" ", "");
}
if (nameInUse(name)) {
return generateGenericName();
}
return name;
}
private String generateGenericName() {
String name = "object1";
int counter = 1;
while (nameInUse(name)) {
name = "object" + counter;
counter++;
}
return name;
}
private boolean nameInUse(String name) {
if (HyperConomy.hc.gYH().gFC("objects").isSet(name)) {
return true;
} else {
return false;
}
}
private void addAll(Player p) {
Inventory inventory = p.getInventory();
for (int slot = 0; slot < inventory.getSize(); slot++) {
ItemStack stack = inventory.getItem(slot);
addItem(stack, p);
}
}
}