1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Smart tab completion

This commit is contained in:
Akash Aggarwal 2017-11-01 14:59:05 +05:30
parent ed6ba8ca67
commit 9a288debd6

View File

@ -15,11 +15,11 @@ public class SlimefunTabCompleter implements TabCompleter {
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 1) { if (args.length == 1) {
return SlimefunCommand.tabs; return createReturnList(SlimefunCommand.tabs, args[0]);
} }
else if (args.length == 3) { else if (args.length == 3) {
if (args[0].equalsIgnoreCase("give")) { if (args[0].equalsIgnoreCase("give")) {
return Slimefun.listIDs(); return createReturnList(Slimefun.listIDs(), args[2]);
} }
else if (args[0].equalsIgnoreCase("research")) { else if (args[0].equalsIgnoreCase("research")) {
List<String> researches = new ArrayList<String>(); List<String> researches = new ArrayList<String>();
@ -27,7 +27,7 @@ public class SlimefunTabCompleter implements TabCompleter {
researches.add(res.getName().toUpperCase().replace(" ", "_")); researches.add(res.getName().toUpperCase().replace(" ", "_"));
} }
researches.add("all"); researches.add("all");
return researches; return createReturnList(researches, args[2]);
} }
else { else {
return null; return null;
@ -38,4 +38,22 @@ public class SlimefunTabCompleter implements TabCompleter {
} }
} }
/***
* Returns a sublist from a given list containing items that start with the given string if string is not empty
* @param list The list to process
* @param string The typed string
* @return Sublist if string is not empty
*/
private List<String> createReturnList(List<String> list, String string) {
if (string.equals("")) return list;
List<String> returnList = new ArrayList<>();
for (String item : list) {
if (item.toLowerCase().startsWith(string.toLowerCase())) {
returnList.add(item);
}
}
return returnList;
}
} }