package regalowl.hyperconomy; import java.util.ArrayList; import java.util.SortedMap; import java.util.TreeMap; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class Topitems { Topitems(String args[], Player player, CommandSender sender, String playerecon) { HyperConomy hc = HyperConomy.hc; LanguageFile L = hc.getLanguageFile(); HyperEconomy he = hc.getEconomyManager().getEconomy(playerecon); EconomyManager em = hc.getEconomyManager(); try { boolean requireShop = hc.gYH().gFC("config").getBoolean("config.limit-info-commands-to-shops"); if (args.length > 1) { sender.sendMessage(L.get("TOPITEMS_INVALID")); return; } Shop s = null; if (player != null) { if (em.inAnyShop(player)) { s = em.getShop(player); } if (requireShop && em.getShop(player) == null && !player.hasPermission("hyperconomy.admin")) { sender.sendMessage(L.get("REQUIRE_SHOP_FOR_INFO")); return; } } int page; if (args.length == 0) { page = 1; } else { page = Integer.parseInt(args[0]); } SortedMap<Double, HyperObject> itemstocks = new TreeMap<Double, HyperObject>(); ArrayList<HyperObject> objects = null; if (s != null) { objects = he.getHyperObjects(s); } else { objects = he.getHyperObjects(); } for (HyperObject ho:objects) { boolean stocked = false; if (ho.getStock() > 0.0) {stocked = true;} boolean banned = false; boolean allowed = false; if (s != null) { banned = s.isBanned(ho); if (ho instanceof PlayerShopObject) { if (s instanceof PlayerShop) { PlayerShop ps = (PlayerShop)s; allowed = ps.isAllowed(em.getHyperPlayer(player)); } } if ((!banned && stocked) || (allowed && stocked)) { double samount = ho.getStock(); while (itemstocks.containsKey(samount)) { samount = samount + .0000001; } itemstocks.put(samount, ho); } } else { double samount = ho.getStock(); if (samount > 0) { while (itemstocks.containsKey(samount)) { samount = samount + .0000001; } itemstocks.put(samount, ho); } } } int numberpage = page * 10; int count = 0; int le = itemstocks.size(); double maxpages = le / 10; maxpages = Math.ceil(maxpages); int maxpi = (int) maxpages + 1; sender.sendMessage(L.f(L.get("PAGE_NUMBER"), page, maxpi)); try { while (count < numberpage) { double lk = itemstocks.lastKey(); if (count > ((page * 10) - 11)) { HyperObject ho = itemstocks.get(lk); if (ho instanceof PlayerShopObject) { PlayerShopObject pso = (PlayerShopObject)ho; sender.sendMessage(L.applyColor("&f"+pso.getDisplayName() + ": &a" + hc.gCF().twoDecimals(pso.getStock()) + " &f(&e" + pso.getStatus().toString() + "&f)" )); } else { sender.sendMessage(ChatColor.WHITE + ho.getDisplayName() + ChatColor.WHITE + ": " + ChatColor.AQUA + "" + hc.gCF().twoDecimals(ho.getStock())); } } itemstocks.remove(lk); count++; } } catch (Exception e) { sender.sendMessage(L.get("YOU_HAVE_REACHED_THE_END")); } } catch (Exception e) { sender.sendMessage(L.get("TOPITEMS_INVALID")); } } }