package tv.mineinthebox.essentials.commands; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import java.util.SortedMap; import java.util.TreeMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.PermissionKey; import tv.mineinthebox.essentials.events.customevents.PlayerTransactionEvent; import tv.mineinthebox.essentials.interfaces.CommandTemplate; import tv.mineinthebox.essentials.interfaces.XOfflinePlayer; import tv.mineinthebox.essentials.interfaces.XPlayer; public class CmdMoney extends CommandTemplate { private final xEssentials pl; public CmdMoney(xEssentials pl, Command cmd, CommandSender sender) { super(pl, cmd, sender); this.pl = pl; } private List<String> getPlayerByName(String p) { List<String> s = new ArrayList<String>(); for(XOfflinePlayer name : pl.getManagers().getPlayerManager().getOfflinePlayers()) { if(name.getName().toUpperCase().startsWith(p.toUpperCase())) { s.add(name.getName()); } } return s; } public List<String> onTabComplete(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("money")) { if(sender.hasPermission(PermissionKey.CMD_MONEY.getPermission())) { if(args.length == 2) { if(args[0].equalsIgnoreCase("clear") && sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { return getPlayerByName(args[1]); } else if(args[0].equalsIgnoreCase("pay")) { return getPlayerByName(args[1]); } else if(args[0].equalsIgnoreCase("give")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { return getPlayerByName(args[1]); } } else if(args[0].equalsIgnoreCase("set")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { return getPlayerByName(args[1]); } } else if(args[0].equalsIgnoreCase("remove")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { return getPlayerByName(args[1]); } } } } } return null; } public boolean execute(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("money")) { if(sender.hasPermission(PermissionKey.CMD_MONEY.getPermission())) { if(args.length == 0) { if(sender instanceof Player) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName()); sender.sendMessage(ChatColor.GOLD + ".oO___[your money amount]___Oo."); sender.sendMessage(ChatColor.GRAY + "your current amount is: " + ChatColor.GREEN + xp.getMoney() + pl.getConfiguration().getEconomyConfig().getCurency()); } else { getWarning(WarningType.PLAYER_ONLY); } } else if(args.length == 1) { if(args[0].equalsIgnoreCase("help")) { showHelp(); } else if(args[0].equalsIgnoreCase("top")) { SortedMap<Double, String> map = new TreeMap<Double, String>().descendingMap(); for(XOfflinePlayer off : pl.getManagers().getPlayerManager().getOfflinePlayers()) { if(off.hasMoney()) { map.put(off.getMoney(), off.getName()); } } Iterator<Entry<Double, String>> it = map.entrySet().iterator(); int i = 1; sender.sendMessage(ChatColor.GOLD + ".oO___[Money top]___Oo."); while(i < 11) { if(it.hasNext()) { Entry<Double, String> entry = (Entry<Double, String>) it.next(); sender.sendMessage(ChatColor.GREEN +""+ i + ": " + ChatColor.GRAY + entry.getValue() + ": " + ChatColor.GREEN + entry.getKey() + pl.getConfiguration().getEconomyConfig().getCurency()); i++; } else { break; } } } else if(args[0].equalsIgnoreCase("clear")) { if(sender instanceof Player) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName()); xp.clearMoney(); sendMessage("you successfully cleared your banks money!"); } else { getWarning(WarningType.NO_PERMISSION); } } else { getWarning(WarningType.PLAYER_ONLY); } } } else if(args.length == 2) { if(args[0].equalsIgnoreCase("clear")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) { if(pl.getManagers().getPlayerManager().isOnline(args[1])) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]); xp.clearMoney(); sendMessage("you successfully cleared "+ xp.getName() +" banks money!"); } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]); off.clearMoney(); sendMessage("you successfully cleared "+ off.getName() +" banks money!"); } } else { getWarning(WarningType.NEVER_PLAYED_BEFORE); } } else { getWarning(WarningType.NO_PERMISSION); } } } else if(args.length == 3) { if(args[0].equalsIgnoreCase("pay")) { if(sender instanceof Player) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName()); if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) { if(pl.getManagers().getPlayerManager().isOnline(args[1])) { XPlayer xpp = pl.getManagers().getPlayerManager().getPlayer(args[1]); try { Double money = Double.parseDouble(args[2]); if(xp.hasEnoughMoney(money)) { xp.payMoney(money, xpp); sendMessage("you have successfully paid " + xpp.getName() + " " + money + pl.getConfiguration().getEconomyConfig().getCurency()); sendMessageTo(xpp.getBukkitPlayer(), ChatColor.GREEN + sender.getName() + " has paid " + money + pl.getConfiguration().getEconomyConfig().getCurency() + " to you!"); Bukkit.getPluginManager().callEvent(new PlayerTransactionEvent(xp.getBukkitPlayer(), money, xpp.getName())); } else { sendMessage("you don't have enough money to pay this player!"); } } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]); try { Double money = Double.parseDouble(args[2]); if(xp.hasEnoughMoney(money)) { xp.payMoney(money, off); sendMessage("you have successfully paid " + off.getName() + " " + money + pl.getConfiguration().getEconomyConfig().getCurency()); Bukkit.getPluginManager().callEvent(new PlayerTransactionEvent(xp.getBukkitPlayer(), money, off.getName())); } else { sendMessage("you don't have enough money to pay this player!"); } } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } } else { getWarning(WarningType.NEVER_PLAYED_BEFORE); } } else { getWarning(WarningType.PLAYER_ONLY); } } else if(args[0].equalsIgnoreCase("give")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) { if(pl.getManagers().getPlayerManager().isOnline(args[1])) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]); try { Double money = Double.parseDouble(args[2]); xp.depositMoney(money); sendMessage("you successfully gave " + xp.getName() + " " + money + pl.getConfiguration().getEconomyConfig().getCurency()); sendMessageTo(xp.getBukkitPlayer(), sender.getName() + " has given you " + money + pl.getConfiguration().getEconomyConfig().getCurency()); } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]); try { Double money = Double.parseDouble(args[2]); off.depositMoney(money); sendMessage("you successfully gave " + off.getName() + " " + money + pl.getConfiguration().getEconomyConfig().getCurency()); } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } } else { getWarning(WarningType.NEVER_PLAYED_BEFORE); } } else { getWarning(WarningType.NO_PERMISSION); } } else if(args[0].equalsIgnoreCase("set")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) { if(pl.getManagers().getPlayerManager().isOnline(args[1])) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]); try { Double money = Double.parseDouble(args[2]); xp.clearMoney(); xp.depositMoney(money); sendMessage("you successfully reset the balance of player " + xp.getName() + " to " + money + pl.getConfiguration().getEconomyConfig().getCurency()); sendMessageTo(xp.getBukkitPlayer(), sender.getName() + " has reset your bank balance to " + money + pl.getConfiguration().getEconomyConfig().getCurency()); } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]); try { Double money = Double.parseDouble(args[2]); off.clearMoney(); off.depositMoney(money); sendMessage("you successfully reset the balance of player " + off.getName() + " to " + money + pl.getConfiguration().getEconomyConfig().getCurency()); } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } } else { getWarning(WarningType.NEVER_PLAYED_BEFORE); } } else { getWarning(WarningType.NO_PERMISSION); } } else if(args[0].equalsIgnoreCase("remove")) { if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) { if(pl.getManagers().getPlayerManager().isOnline(args[1])) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]); try { Double money = Double.parseDouble(args[2]); if(xp.hasEnoughMoney(money)) { xp.payMoney(money); sendMessage("you successfully withdrawed " + money + " from " + xp.getName() + " his bank!"); } else { sendMessage("you cannot withdraw more money which the player doesn't have!"); } } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]); try { Double money = Double.parseDouble(args[2]); if(off.hasEnoughMoney(money)) { off.payMoney(money); sendMessage("you successfully withdrawed " + money + " from " + off.getName() + " his bank!"); } else { sendMessage("you cannot withdraw more money which the player doesn't have!"); } } catch(NumberFormatException e) { sendMessage("invalid money usage on the third argument!"); } } } else { getWarning(WarningType.NEVER_PLAYED_BEFORE); } } else { getWarning(WarningType.NO_PERMISSION); } } } } else { getWarning(WarningType.NO_PERMISSION); } } return false; } @Override public void showHelp() { sender.sendMessage(ChatColor.GOLD + ".oO___[xEssentials economy help]___Oo."); sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/money " + ChatColor.WHITE + ": shows your money amount!"); sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/money help " + ChatColor.WHITE + ": shows help"); sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/money top " + ChatColor.WHITE + ": shows a list from 1 to 10 who has the most money"); sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/money pay <player> <amount> " + ChatColor.WHITE + ": pay money to a player"); if(sender.hasPermission(PermissionKey.IS_ADMIN.getPermission())) { sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/money clear " + ChatColor.WHITE + ": clears your bank acount!"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/money clear <player> " + ChatColor.WHITE + ": clears the bank acount of a specific player"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/money give <player> <amount> " + ChatColor.WHITE + ": give a player a amount of money"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/money set <player> <amount> " + ChatColor.WHITE + ": set the current amount of money, this act as a reset"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/money remove <player> <amount> " + ChatColor.WHITE + ": withdraw the players money"); } } }