package tv.mineinthebox.essentials.commands; import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.PermissionKey; import tv.mineinthebox.essentials.instances.Modreq; import tv.mineinthebox.essentials.interfaces.CommandTemplate; import tv.mineinthebox.essentials.interfaces.XOfflinePlayer; import tv.mineinthebox.essentials.interfaces.XPlayer; public class CmdTpId extends CommandTemplate { private final xEssentials pl; public CmdTpId(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; } private List<String> getModreqs(String player, String id) { List<String> s = new ArrayList<String>(); if(pl.getManagers().getPlayerManager().isEssentialsPlayer(player)) { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(player); for(Modreq mod : off.getModreqs()) { String id2 = mod.getId()+""; if(id2.startsWith(id)) { s.add(id2); } } } return s; } public List<String> onTabComplete(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("tp-id")) { if(sender.hasPermission(PermissionKey.CMD_TP_ID.getPermission())) { if(args.length == 1) { return getPlayerByName(args[0]); } else if(args.length == 2) { return getModreqs(args[0], args[1]); } } } return null; } public boolean execute(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("tp-id")) { if(sender.hasPermission(PermissionKey.CMD_TP_ID.getPermission())) { if(args.length == 0) { showHelp(); } else if(args.length == 1) { if(args[0].equalsIgnoreCase("help")) { showHelp(); } } else if(args.length == 2) { if(sender instanceof Player) { Player p = (Player) sender; if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[0])) { if(pl.getManagers().getPlayerManager().isOnline(args[0])) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[0]); if(xp.hasModreqsOpen()) { if(isNumberic(args[1])) { int id = Integer.parseInt(args[1]); if(xp.isValidModreqId(id)) { Modreq mod = xp.getModreq(id); Location loc = mod.getModreqLocation(); p.teleport(loc, TeleportCause.COMMAND); sendMessage("teleporting to " + args[0] + " his modreq with id: " + id); } else { sendMessage("not a valid modreq id!"); } } else { sendMessage("the second argument needs to be a number!"); } } } else { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[0]); if(off.hasModreqsOpen()) { if(isNumberic(args[1])) { int id = Integer.parseInt(args[1]); if(off.isValidModreqId(id)) { Modreq mod = off.getModreq(id); Location loc = mod.getModreqLocation(); p.teleport(loc, TeleportCause.COMMAND); sendMessage("teleporting to " + args[0] + " his modreq with id: " + id); } else { sendMessage("not a valid modreq id!"); } } else { sendMessage("the second argument needs to be a number!"); } } } } else { sendMessage("this player has never played before!"); } } else { getWarning(WarningType.PLAYER_ONLY); } } } else { getWarning(WarningType.NO_PERMISSION); } } return false; } private boolean isNumberic(String s) { try { Integer num = Integer.parseInt(s); if(num != null) { return true; } } catch(NumberFormatException e) { return false; } return false; } @Override public void showHelp() { sender.sendMessage(ChatColor.GOLD + ".oO___[tp-id help]___Oo."); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/tp-id help " + ChatColor.WHITE + ": shows help"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/tp-id <player> <id> " + ChatColor.WHITE + ": teleport to the modreq location"); } }