From 9a288debd693403bdd1cebca14b483dd009815a2 Mon Sep 17 00:00:00 2001 From: Akash Aggarwal Date: Wed, 1 Nov 2017 14:59:05 +0530 Subject: [PATCH] Smart tab completion --- .../Commands/SlimefunTabCompleter.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Commands/SlimefunTabCompleter.java b/src/me/mrCookieSlime/Slimefun/Commands/SlimefunTabCompleter.java index 3d1bb3dab..d9aff970a 100644 --- a/src/me/mrCookieSlime/Slimefun/Commands/SlimefunTabCompleter.java +++ b/src/me/mrCookieSlime/Slimefun/Commands/SlimefunTabCompleter.java @@ -15,11 +15,11 @@ public class SlimefunTabCompleter implements TabCompleter { @Override public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 1) { - return SlimefunCommand.tabs; + return createReturnList(SlimefunCommand.tabs, args[0]); } else if (args.length == 3) { if (args[0].equalsIgnoreCase("give")) { - return Slimefun.listIDs(); + return createReturnList(Slimefun.listIDs(), args[2]); } else if (args[0].equalsIgnoreCase("research")) { List researches = new ArrayList(); @@ -27,7 +27,7 @@ public class SlimefunTabCompleter implements TabCompleter { researches.add(res.getName().toUpperCase().replace(" ", "_")); } researches.add("all"); - return researches; + return createReturnList(researches, args[2]); } else { 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 createReturnList(List list, String string) { + if (string.equals("")) return list; + + List returnList = new ArrayList<>(); + for (String item : list) { + if (item.toLowerCase().startsWith(string.toLowerCase())) { + returnList.add(item); + } + } + return returnList; + } }