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());
}
}