package com.nicewuerfel.blockown.command; import com.nicewuerfel.blockown.Material; import com.nicewuerfel.blockown.Message; import com.nicewuerfel.blockown.Setting; import com.nicewuerfel.blockown.User; import com.nicewuerfel.blockown.database.Database; import com.nicewuerfel.blockown.protection.Protection; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.Collection; import java.util.Iterator; import java.util.Set; public class CE_List extends CommandExecutor { private static final String PARAM_PROTECTED = "protected"; private static final String PARAM_FRIENDS = "friends"; private static final String PARAM_LOCKED = "locked"; public CE_List(Setting setting, Database database, Protection protection) { super(setting, database, protection); } @Override public boolean onCommand(CommandSender sender, Command cmd, String cmdName, String[] args) { if (!isPlayer(sender)) { return true; } Player player = (Player) sender; if (args.length != 1) { return false; } User user = User.getInstance(player.getUniqueId()); Set<?> list; Message messageHead; if (args[0].equalsIgnoreCase(PARAM_FRIENDS)) { list = protection.getFriends(user); messageHead = Message.COMMAND_LIST_FRIENDS; } else if (args[0].equalsIgnoreCase(PARAM_LOCKED)) { list = protection.getLocks(user); messageHead = Message.COMMAND_LIST_LOCKED; } else if (args[0].equalsIgnoreCase(PARAM_PROTECTED)) { list = protection.getProtections(user); messageHead = Message.COMMAND_LIST_PROTECTED; } else { return false; } printList(user, player, messageHead, list); return true; } private void printList(User user, Player player, Message messageHead, Collection<?> collection) { Iterator<?> iterator = collection.iterator(); StringBuilder message = new StringBuilder(100); if (iterator.hasNext()) { message.append(messageHead).append(System.lineSeparator()).append(ChatColor.AQUA); } else { player.sendMessage(Message.COMMAND_LIST_EMPTY.getMessage()); return; } Object object; if (collection.contains(Material.ANY)) { message.append(Material.ANY.toString()).append(System.lineSeparator()); } else { while (iterator.hasNext()) { object = iterator.next(); if (object instanceof User) { message.append(((User) object).getName()); } else { message.append(object.toString()); } message.append(System.lineSeparator()); } } player.sendMessage(message.toString()); } }