package com.leontg77.uhc.cmds; import static com.leontg77.uhc.Main.plugin; import java.io.File; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import com.leontg77.uhc.Main; import com.leontg77.uhc.User; import com.leontg77.uhc.User.Rank; import com.leontg77.uhc.utils.NameUtils; import com.leontg77.uhc.utils.PlayerUtils; /** * Rank command class. * * @author LeonTG77 */ public class RankCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (!sender.hasPermission("uhc.rank")) { sender.sendMessage(Main.NO_PERM_MSG); return true; } if (args.length < 2) { sender.sendMessage(Main.PREFIX + "Usage: /rank <player> <newrank>"); return true; } Rank rank; try { rank = Rank.valueOf(args[1].toUpperCase()); } catch (Exception e) { sender.sendMessage(Main.PREFIX + args[1] + " is not a vaild rank."); return true; } Player target = Bukkit.getServer().getPlayer(args[0]); OfflinePlayer offline = PlayerUtils.getOfflinePlayer(args[0]); if (target == null) { File folder = new File(plugin.getDataFolder() + File.separator + "users" + File.separator); boolean found = false; if (folder.exists()) { for (File file : folder.listFiles()) { if (file.getName().substring(0, file.getName().length() - 4).equals(offline.getUniqueId().toString())) { found = true; break; } } } if (!found) { sender.sendMessage(Main.PREFIX + args[0] + " has never joined this server."); return true; } PlayerUtils.broadcast(Main.PREFIX + "�6" + offline.getName() + " �7has been given �a" + NameUtils.fixString(rank.name(), false) + " �7rank."); User.get(offline).setRank(rank); return true; } PlayerUtils.broadcast(Main.PREFIX + "�6" + target.getName() + " �7has been given �a" + NameUtils.fixString(rank.name(), false) + " �7rank."); User.get(target).setRank(rank); return true; } @Override public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { if (!sender.hasPermission("uhc.rank")) { return null; } ArrayList<String> toReturn = new ArrayList<String>(); if (args.length == 1) { if (args[0].equals("")) { for (Player online : PlayerUtils.getPlayers()) { toReturn.add(online.getName()); } } else { for (Player online : PlayerUtils.getPlayers()) { if (online.getName().toLowerCase().startsWith(args[0].toLowerCase())) { toReturn.add(online.getName()); } } } } if (args.length == 2) { if (args[1].equals("")) { for (Rank rank : Rank.values()) { toReturn.add(rank.name().toLowerCase()); } } else { for (Rank rank : Rank.values()) { if (rank.name().toLowerCase().startsWith(args[1].toLowerCase())) { toReturn.add(rank.name().toLowerCase()); } } } } return toReturn; } }