package nmt.minecraft.Regicide.IO; import java.io.File; import java.util.ArrayList; import java.util.List; import nmt.minecraft.Regicide.RegicidePlugin; import nmt.minecraft.Regicide.Game.RegicideGame; import nmt.minecraft.Regicide.Game.Player.RPlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; public class RegicideTabCompleter implements TabCompleter{ @Override public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) { if(cmd.getName().equalsIgnoreCase("regicide")){ List<String> list=new ArrayList<String>(); if(args.length == 1){ List<String> tmpList; tmpList = RegicideCommands.getCommandList();//get the list of commands //only put the ones that start with the given if(args[0].isEmpty()){ return tmpList; } for(String tmpString : tmpList){ String incomplete = args[0].toLowerCase(); if(startsWithIgnoreCase(tmpString,incomplete)){ list.add(tmpString); } } }else if(args.length == 2 && !args[0].equalsIgnoreCase("register")){ list = new ArrayList<String>(); for(RegicideGame game : RegicidePlugin.regicidePlugin.getGames()){ //should only match games started with what's already been typed in if(args[1].isEmpty() || startsWithIgnoreCase(game.getName(),args[1])){ list.add(game.getName()); } } }else if(args.length == 3 && args[0].equalsIgnoreCase("kick")){ //regicide kick [game] [player] for(RegicideGame game : RegicidePlugin.regicidePlugin.getGames()){ if(game.getName().equalsIgnoreCase(args[1])){ //get a list of the players in the game for(RPlayer player : game.getPlayers()){ if(args[2].isEmpty() || startsWithIgnoreCase(player.getPlayer().getName(), args[2])){ list.add(player.getPlayer().getName()); } } } } }else if(args.length == 3 && (args[0].equalsIgnoreCase("loadconfig") || args[0].equalsIgnoreCase("saveconfig"))){ //regicide loadconfig [game] [file] //get a list of files File tmp = RegicidePlugin.regicidePlugin.getDataFolder(); if(tmp.exists()){ File[] fileList= tmp.listFiles(); fileList = fileList[0].listFiles();//TODO really should change this to be better for(int i=0; i<fileList.length; i++){ if(args[2].isEmpty() || startsWithIgnoreCase(fileList[i].getName(),args[2])){ list.add(fileList[i].getName()); } } } } return list; } return null; } private static boolean startsWithIgnoreCase(String string1, String string2){ string1 = string1.toLowerCase(); string2 = string2.toLowerCase(); return string1.startsWith(string2); } }