package xyz.etztech.mixtape.commands; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.TextComponent; 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.entity.Player; import xyz.etztech.mixtape.Alias; import xyz.etztech.mixtape.Mixtape; public class CommandMixtape implements CommandExecutor { Mixtape plugin; public CommandMixtape(Mixtape plugin) { this.plugin = plugin; plugin.getCommand("mixtape").setExecutor(this); } @Override public boolean onCommand(CommandSender sender, Command command, String base, String[] args) { boolean hasAdmin = sender.hasPermission("alias.admin"); if (args.length == 0) { sender.sendMessage(ChatColor.GOLD + "===== Mixtape ====="); sender.sendMessage(ChatColor.YELLOW + "/mixtape reload"); sender.sendMessage(ChatColor.YELLOW + "/mixtape list" + (hasAdmin ? " []" : "")); sender.sendMessage(ChatColor.YELLOW + "/mixtape delete "); if (hasAdmin) { sender.sendMessage(ChatColor.YELLOW + "/mixtape purge []"); } } else { if ("list".equalsIgnoreCase(args[0])) { if (sender instanceof Player) { list(sender, args.length == 2 ? args[1] : null); } else { sender.sendMessage(ChatColor.RED + "Console can only use global aliases defined in the config."); } } else if ("delete".equalsIgnoreCase(args[0])) { if (sender instanceof Player) { if (args.length > 1) { delete(sender, args[1]); } } else { sender.sendMessage(ChatColor.RED + "Console can only use global aliases defined in the config."); } } if (hasAdmin) { if ("reload".equalsIgnoreCase(args[0])) { plugin.reloadConfig(); sender.sendMessage(ChatColor.GREEN + "Mixtape Reloaded."); } else if ("purge".equalsIgnoreCase(args[0])) { if (args.length > 1) { Player player = Bukkit.getPlayerExact(args[1]); if (player != null) { Mixtape.getDatabase().purge(player.getUniqueId().toString()); sender.sendMessage(ChatColor.GREEN + "Purged all of " + player.getName() + "'s aliases."); } else { sender.sendMessage(ChatColor.RED + "No player found."); } } else { for (OfflinePlayer offline : Bukkit.getBannedPlayers()) { Mixtape.getDatabase().purge(offline.getUniqueId().toString()); } sender.sendMessage(ChatColor.GREEN + "Purged all banned players' aliases."); } } } } return true; } private void list(CommandSender sender, String username) { if (username == null || !sender.hasPermission("mixtape.list.other")) { username = sender.getName(); } Player player = Bukkit.getPlayer(username); if (player != null) { StringBuilder message = new StringBuilder(); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); message.append(" Aliases for ").append(username).append(" "); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); message.append("\n"); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); message.append(" Type "); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); message.append(" Alias "); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); message.append(" Command "); message.append(ChatColor.GOLD).append("|").append(ChatColor.YELLOW); for (Alias alias : Mixtape.getDatabase().getAliases(player.getUniqueId().toString())) { message.append("\n"); message.append(ChatColor.GOLD).append("| ").append(ChatColor.YELLOW); message.append(alias.getType().name()); message.append(ChatColor.GOLD).append(" | ").append(ChatColor.YELLOW); message.append(alias.getFrom()); message.append(ChatColor.GOLD).append(" | ").append(ChatColor.YELLOW); message.append(alias.getTo()); message.append(ChatColor.GOLD).append(" |").append(ChatColor.YELLOW); } sender.sendMessage(message.toString()); } else { sender.sendMessage(ChatColor.RED + "No aliases found for " + username + ". Are they online?"); } } private void delete(CommandSender sender, String from) { Player player = (Player) sender; int id = Mixtape.getDatabase().exists(player.getUniqueId().toString(), from); if (id > 0) { Mixtape.getDatabase().delete(id); player.sendMessage(ChatColor.RED + "Deleted alias for '" + from + "'"); } else { player.sendMessage(ChatColor.RED + "No alias found for '" + from + "'"); } } }