package org.buckit.commands.warp; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashSet; import org.buckit.Config; import org.buckit.datasource.type.WarpsDataSource; import org.buckit.model.Warp; import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class ListWarpsCommand extends Command { private final WarpsDataSource datasource; public ListWarpsCommand(String name, Server server){ super(name); this.datasource = server.getDataSourceManager().getWarpsDataSource(); this.description = "Gives a list of all the warps."; if(Config.WARPS_GROUPS_ENABLED) this.usageMessage = "Usage: /listwarps <group name>"; else this.usageMessage = "Usage: /listwarps"; this.accessname = "buckit.warps.listwarps"; this.setAliases(Arrays.asList("warplist", "warps")); } @Override public boolean execute(CommandSender sender, String currentAlias, String[] args) { String group = Config.WARPS_DEFAULT_GROUP_NAME; if(args.length > 0 && Config.WARPS_GROUPS_ENABLED) group = args[0].toLowerCase(); int accesslevel = Config.DEFAULT_ACCESS_LEVEL; if(sender instanceof Player) accesslevel = ((Player)sender).getAccessLevel().getId(); else accesslevel = Integer.MAX_VALUE; //some1 is bound to try this out ..... if(group.equalsIgnoreCase("all") && !Config.WARPS_DEFAULT_GROUP_NAME.equals("all")){ Collection<Warp> warps = datasource.getAllWarps(); String str = ""; for(Warp w : warps) if(accesslevel >= w.getMinAccessLevel()) str += "[" + w.getGroup() + "]" + w.getName() + ", "; str = str.substring(0, str.length() - 2); sender.sendMessage("List of all warps:"); sender.sendMessage(str); }else if(group.equals("groups") && !Config.WARPS_DEFAULT_GROUP_NAME.equals("groups")){ Collection<String> groups = new LinkedHashSet<String>(); for(Warp warp : datasource.getAllWarps()) if(!groups.contains(warp.getGroup()) && !warp.getGroup().equals(Config.WARPS_DEFAULT_GROUP_NAME)) groups.add(warp.getGroup()); String message = ""; for(String str : groups) { message += str + ", "; } if(groups.size() < 1) { sender.sendMessage("No groups found."); } else { sender.sendMessage("List of availeble groups:"); sender.sendMessage(message.substring(0,message.length()-2)); } }else{ Collection<Warp> warps = datasource.getWarps(group); String str = ""; Collection<String> names = new LinkedHashSet<String>(); for(Warp w : warps) if(accesslevel >= w.getMinAccessLevel()) names.add(w.getName()); for(String name : names) str += name + ", "; if(str.length() == 0) str = "No warps are available."; else str = str.substring(0, str.length() - 2); sender.sendMessage(Config.DEFAULT_INFO_COLOR + "List of available warps " + (!Config.WARPS_DEFAULT_GROUP_NAME.equals(group) ? " in group " + group : "" ) + ":"); sender.sendMessage(str); } return true; } }