diff --git a/src/main/java/com/graywolf336/jail/JailMain.java b/src/main/java/com/graywolf336/jail/JailMain.java index 92f6e42..ebe6b0e 100644 --- a/src/main/java/com/graywolf336/jail/JailMain.java +++ b/src/main/java/com/graywolf336/jail/JailMain.java @@ -204,11 +204,15 @@ public class JailMain extends JavaPlugin { getServer().getConsoleSender().sendMessage(Lang.PLUGINNOTLOADED.get()); }else { debug("Tab Complete Args (" + args.length + ") for '" + commandLabel + "': " + Util.getStringFromArray(", ", args)); - if(commandLabel.equalsIgnoreCase("jail") || commandLabel.equalsIgnoreCase("j")) { - return jh.parseTabComplete(jm, sender, args); - }else { - //cmdHand.handleCommand(jm, sender, command.getName().toLowerCase(), args); - //unjail,etc + try { + if(commandLabel.equalsIgnoreCase("jail") || commandLabel.equalsIgnoreCase("j")) { + return jh.parseTabComplete(jm, sender, args); + }else { + //cmdHand.handleCommand(jm, sender, command.getName().toLowerCase(), args); + //unjail,etc + } + }catch(Exception e) { + return Collections.emptyList(); } } diff --git a/src/main/java/com/graywolf336/jail/JailManager.java b/src/main/java/com/graywolf336/jail/JailManager.java index 0e29273..f91f5e4 100644 --- a/src/main/java/com/graywolf336/jail/JailManager.java +++ b/src/main/java/com/graywolf336/jail/JailManager.java @@ -1,8 +1,11 @@ package com.graywolf336.jail; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; +import java.util.List; import java.util.UUID; import org.bukkit.Location; @@ -80,6 +83,18 @@ public class JailManager { return toReturn; } + + /** Returns a List of the jail names. */ + public List getJailNamesAsList() { + List results = new ArrayList(); + + for(Jail j : this.jails.values()) + results.add(j.getName()); + + Collections.sort(results); + + return results; + } /** * Adds a jail to the collection of them. diff --git a/src/main/java/com/graywolf336/jail/command/Command.java b/src/main/java/com/graywolf336/jail/command/Command.java index d4dc847..c9021da 100644 --- a/src/main/java/com/graywolf336/jail/command/Command.java +++ b/src/main/java/com/graywolf336/jail/command/Command.java @@ -1,5 +1,7 @@ package com.graywolf336.jail.command; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -9,7 +11,7 @@ import com.graywolf336.jail.JailManager; * * @author graywolf336 * @since 3.0.0 - * @version 1.0.0 + * @version 1.1.0 */ public interface Command { /** @@ -28,4 +30,6 @@ public interface Command { * @return True if the method handled it in any way, false if we should send the usage message. */ public boolean execute(JailManager jm, CommandSender sender, String... args) throws Exception; + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception; } diff --git a/src/main/java/com/graywolf336/jail/command/JailHandler.java b/src/main/java/com/graywolf336/jail/command/JailHandler.java index 412a839..9d515c3 100644 --- a/src/main/java/com/graywolf336/jail/command/JailHandler.java +++ b/src/main/java/com/graywolf336/jail/command/JailHandler.java @@ -8,6 +8,7 @@ import java.util.Map.Entry; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailMain; import com.graywolf336.jail.JailManager; @@ -49,9 +50,10 @@ public class JailHandler { plugin.debug("Loaded " + commands.size() + " sub-commands of /jail."); } - public List parseTabComplete(JailManager jm, CommandSender sender, String[] args) { - if(args[0].equalsIgnoreCase("")) { + public List parseTabComplete(JailManager jm, CommandSender sender, String[] args) throws Exception { + if(args[0].equalsIgnoreCase("") || args.length == 1) { List results = new ArrayList(); + String arg0 = args[0].toLowerCase(); boolean hasJailPermission = false; for(Command c : commands.values()) { @@ -65,7 +67,10 @@ public class JailHandler { //Skip if the command requires a player and the sender isn't a player if(i.needsPlayer() && !(sender instanceof Player)) continue; - if(sender.hasPermission(i.permission())) { + //If the sender has permission to the command + //and the first argument (sub command) is empty OR + //the first argument matches the command or starts with the string + if(sender.hasPermission(i.permission()) && (arg0.equalsIgnoreCase("") || (arg0.toLowerCase().matches(i.pattern()) || i.pattern().startsWith(arg0)))) { results.add(i.pattern().split("\\|")[0]); } } @@ -74,11 +79,34 @@ public class JailHandler { Collections.sort(results); //Don't send out all the players if they don't have jail permission - if(hasJailPermission) - for(Player p : jm.getPlugin().getServer().getOnlinePlayers()) - results.add(p.getName()); + if(hasJailPermission) { + for(Player p : jm.getPlugin().getServer().getOnlinePlayers()) { + if(arg0.equalsIgnoreCase("") || StringUtil.startsWithIgnoreCase(p.getName(), arg0)) + results.add(p.getName()); + } + } return results; + }else { + String arg0 = args[0].toLowerCase(); + + for(Command c : commands.values()) { + CommandInfo i = c.getClass().getAnnotation(CommandInfo.class); + + //Skip if the command requires a player and the sender isn't a player + if(i.needsPlayer() && !(sender instanceof Player)) continue; + + //If the sender doesn't have permission, we won't send them further + if(!sender.hasPermission(i.permission())) continue; + + //Sender provided too many arguments which means there + //is nothing to tab complete + if(i.maxArgs() != -1 && i.maxArgs() < args.length - 1) continue; + + if(arg0.toLowerCase().matches(i.pattern())) { + return c.provideTabCompletions(jm, sender, args); + } + } } return Collections.emptyList(); diff --git a/src/main/java/com/graywolf336/jail/command/commands/HandCuffCommand.java b/src/main/java/com/graywolf336/jail/command/commands/HandCuffCommand.java index 8f5665e..7d10003 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/HandCuffCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/HandCuffCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.commands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -38,4 +41,9 @@ public class HandCuffCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/commands/ToggleJailDebugCommand.java b/src/main/java/com/graywolf336/jail/command/commands/ToggleJailDebugCommand.java index 65a77db..b9723d7 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/ToggleJailDebugCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/ToggleJailDebugCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.commands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -21,4 +24,9 @@ public class ToggleJailDebugCommand implements Command { sender.sendMessage("Jail debugging is now: " + (debug ? ChatColor.GREEN + "enabled" : ChatColor.RED + "disabled")); return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //No tab completion required for toggling debug command + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnHandCuffCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnHandCuffCommand.java index 88e1c59..95f50d7 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/UnHandCuffCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/UnHandCuffCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.commands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -32,4 +35,9 @@ public class UnHandCuffCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java index 70129b2..2ef4c66 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.commands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -60,4 +63,9 @@ public class UnJailCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java index d280deb..3b45b33 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.commands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -34,4 +37,9 @@ public class UnJailForceCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailCheckCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailCheckCommand.java index 4bd22f1..d65bd83 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailCheckCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailCheckCommand.java @@ -1,7 +1,12 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Prisoner; @@ -36,4 +41,19 @@ public class JailCheckCommand implements Command{ return true; } + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + List results = new ArrayList(); + + for(Prisoner p : jm.getAllPrisoners().values()) { + if(args.length == 2 && StringUtil.startsWithIgnoreCase(p.getLastKnownName(), args[1].toLowerCase())) { + results.add(p.getLastKnownName()); + }else { + results.add(p.getLastKnownName()); + } + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailClearCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailClearCommand.java index a840e33..4da2e1a 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailClearCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailClearCommand.java @@ -1,9 +1,15 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.ConfirmPlayer; +import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; import com.graywolf336.jail.enums.Confirmation; @@ -38,4 +44,21 @@ public class JailClearCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + List results = new ArrayList(); + + for(Jail j : jm.getJails()) { + if((args.length == 2 && StringUtil.startsWithIgnoreCase(j.getName(), args[1])) + || (args.length == 3 && StringUtil.startsWithIgnoreCase(j.getName(), args[2]))) { + results.add(j.getName()); + }else { + results.add(j.getName()); + } + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailCommand.java index 115a824..7c4212c 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailCommand.java @@ -1,6 +1,7 @@ package com.graywolf336.jail.command.subcommands; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -245,4 +246,9 @@ public class JailCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement (this'll take a while) + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailConfirmCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailConfirmCommand.java index 214e000..15d936b 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailConfirmCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailConfirmCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -88,4 +91,8 @@ public class JailConfirmCommand implements Command{ return true; } + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //confirming doesn't require any tab completing + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCellCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCellCommand.java index 183017c..70a59a1 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCellCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCellCommand.java @@ -1,8 +1,13 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Jail; @@ -63,4 +68,22 @@ public class JailCreateCellCommand implements Command { return true; } + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //We shouldn't provide when they want a cell name + if(args.length >= 3) return Collections.emptyList(); + + List results = new ArrayList(); + + for(Jail j : jm.getJails()) { + if(args.length == 2 && StringUtil.startsWithIgnoreCase(j.getName(), args[1])) { + results.add(j.getName()); + }else { + results.add(j.getName()); + } + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCommand.java index 8adfe30..46e2ca9 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailCreateCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -45,4 +48,9 @@ public class JailCreateCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //Creating a jail shouldn't provide tab completion + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellCommand.java index d0f99c5..da34112 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellCommand.java @@ -1,9 +1,16 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; +import com.graywolf336.jail.beans.Cell; import com.graywolf336.jail.beans.ConfirmPlayer; +import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; import com.graywolf336.jail.enums.Confirmation; @@ -28,4 +35,32 @@ public class JailDeleteCellCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + List results = new ArrayList(); + + switch(args.length) { + case 1: + results.addAll(jm.getJailNamesAsList()); + break; + case 2: + for(Jail j : jm.getJails()) + if(StringUtil.startsWithIgnoreCase(j.getName(), args[1])) + results.add(j.getName()); + break; + case 3: + if(jm.isValidJail(args[1])) { + Jail j = jm.getJail(args[1]); + + for(Cell c : j.getCells()) + if(StringUtil.startsWithIgnoreCase(c.getName(), args[2])) + results.add(c.getName()); + } + break; + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellsCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellsCommand.java index 352f429..a74e117 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellsCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCellsCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -28,4 +31,9 @@ public class JailDeleteCellsCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCommand.java index 09d35b3..6a7e239 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailDeleteCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -28,4 +31,9 @@ public class JailDeleteCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailHelpCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailHelpCommand.java index 932b787..50811a1 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailHelpCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailHelpCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -21,4 +24,9 @@ public class JailHelpCommand implements Command { sender.sendMessage(ChatColor.GREEN + "https://github.com/graywolf336/Jail/wiki/Commands"); return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailListCellsCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailListCellsCommand.java index cdd910a..30dd83e 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailListCellsCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailListCellsCommand.java @@ -1,7 +1,12 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Cell; @@ -51,4 +56,20 @@ public class JailListCellsCommand implements Command { sender.sendMessage(ChatColor.AQUA + "-------------------------"); return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + List results = new ArrayList(); + + for(Jail j : jm.getJails()) { + if(args.length == 2 && StringUtil.startsWithIgnoreCase(j.getName(), args[1])) { + results.add(j.getName()); + }else { + results.add(j.getName()); + } + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailListCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailListCommand.java index e71e1d4..c3d8280 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailListCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailListCommand.java @@ -1,9 +1,13 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.List; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Jail; @@ -61,4 +65,20 @@ public class JailListCommand implements Command { sender.sendMessage(ChatColor.AQUA + "-------------------------"); return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + List results = new ArrayList(); + + for(Jail j : jm.getJails()) { + if(args.length == 2 && StringUtil.startsWithIgnoreCase(j.getName(), args[1])) { + results.add(j.getName()); + }else { + results.add(j.getName()); + } + } + + Collections.sort(results); + + return results; + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailMuteCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailMuteCommand.java index f33dd72..e67c027 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailMuteCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailMuteCommand.java @@ -1,6 +1,12 @@ package com.graywolf336.jail.command.subcommands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.util.StringUtil; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.command.Command; @@ -35,4 +41,19 @@ public class JailMuteCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + switch(args.length) { + case 2: + List results = new ArrayList(); + for(Player p : jm.getPlugin().getServer().getOnlinePlayers()) + if(StringUtil.startsWithIgnoreCase(p.getName(), args[1].toLowerCase())) + results.add(p.getName()); + + Collections.sort(results); + return results; + default: + return Collections.emptyList(); + } + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailPayCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailPayCommand.java index 0cb45c4..e608406 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailPayCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailPayCommand.java @@ -1,5 +1,7 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; import java.util.concurrent.TimeUnit; import org.bukkit.ChatColor; @@ -206,4 +208,9 @@ public class JailPayCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailRecordCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailRecordCommand.java index 7621d6e..6d9bb8e 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailRecordCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailRecordCommand.java @@ -1,5 +1,6 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; import java.util.List; import org.bukkit.command.CommandSender; @@ -42,4 +43,9 @@ public class JailRecordCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailReloadCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailReloadCommand.java index ff1055a..60f4f4d 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailReloadCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailReloadCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -28,4 +31,9 @@ public class JailReloadCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //Reloading the plugin doesn't require tab completions + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailStatusCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailStatusCommand.java index 86dbc28..58b7181 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailStatusCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailStatusCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -35,4 +38,8 @@ public class JailStatusCommand implements Command{ return true; } + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //Checking your jail status doesn't require tab completion + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java index 6699151..e5cdf69 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -33,4 +36,9 @@ public class JailStickCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //Nothing to tab complete on jail stick + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailStopCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailStopCommand.java index 9a9fa71..9e6282b 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailStopCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailStopCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -37,4 +40,9 @@ public class JailStopCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //no tab completion required for stop command + return Collections.emptyList(); + } } \ No newline at end of file diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleInCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleInCommand.java index ecc6a09..ef93601 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleInCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleInCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -51,4 +54,9 @@ public class JailTeleInCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleOutCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleOutCommand.java index 2a30e89..2513201 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleOutCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailTeleOutCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -51,4 +54,9 @@ public class JailTeleOutCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailTimeCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailTimeCommand.java index 9a8241f..60e1e12 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailTimeCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailTimeCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -52,4 +55,9 @@ public class JailTimeCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferAllCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferAllCommand.java index d0c156e..8e45782 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferAllCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferAllCommand.java @@ -1,6 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; import java.util.HashSet; +import java.util.List; import org.bukkit.command.CommandSender; @@ -53,4 +55,9 @@ public class JailTransferAllCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferCommand.java index 528d3d9..1241447 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailTransferCommand.java @@ -1,6 +1,7 @@ package com.graywolf336.jail.command.subcommands; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -136,4 +137,9 @@ public class JailTransferCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailVersionCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailVersionCommand.java index b1b1619..7acae1b 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailVersionCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailVersionCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; @@ -23,4 +26,8 @@ public class JailVersionCommand implements Command { return true; } + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //no tab completion required for version command + return Collections.emptyList(); + } } diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailVoteCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailVoteCommand.java index 6f1a9c2..f8bdef2 100644 --- a/src/main/java/com/graywolf336/jail/command/subcommands/JailVoteCommand.java +++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailVoteCommand.java @@ -1,5 +1,8 @@ package com.graywolf336.jail.command.subcommands; +import java.util.Collections; +import java.util.List; + import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -97,4 +100,9 @@ public class JailVoteCommand implements Command { return true; } + + public List provideTabCompletions(JailManager jm, CommandSender sender, String... args) throws Exception { + //TODO implement + return Collections.emptyList(); + } }