First stab at tab complete of jail commands, #77
Right now, the first option of the jail command completes and checks for proper permission and all that good stuff. Good way to get started with commands but that's all that has been completed right now. Plan is that the command interface will get a tabComplete method which all the classes that implement it will handle. Then if a tabComplete happens on that command we'll let the command handle it, so the command handlers don't get cluttered.
This commit is contained in:
parent
ea50ecea6b
commit
d3d4572ca4
@ -1,5 +1,7 @@
|
|||||||
package com.graywolf336.jail;
|
package com.graywolf336.jail;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -196,6 +198,23 @@ public class JailMain extends JavaPlugin {
|
|||||||
return true;//Always return true here, that way we can handle the help and command usage ourself.
|
return true;//Always return true here, that way we can handle the help and command usage ourself.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String commandLabel, String[] args) {
|
||||||
|
if(jh == null || cmdHand == null) {
|
||||||
|
sender.sendMessage(Lang.PLUGINNOTLOADED.get());
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadEverything() throws Exception {
|
public void reloadEverything() throws Exception {
|
||||||
//Reload the configuration file
|
//Reload the configuration file
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
|
@ -91,6 +91,28 @@ public class Util {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getStringFromArray(String separator, String... list) {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
for(String s : list) {
|
||||||
|
if(result.length() != 0) result.append(separator);
|
||||||
|
result.append(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getStringFromList(String separator, List<String> list) {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
for(String s : list) {
|
||||||
|
if(result.length() != 0) result.append(separator);
|
||||||
|
result.append(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns a colorful message from the color codes. */
|
/** Returns a colorful message from the color codes. */
|
||||||
public static String getColorfulMessage(String message) {
|
public static String getColorfulMessage(String message) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.graywolf336.jail.command;
|
package com.graywolf336.jail.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@ -47,6 +48,41 @@ public class JailHandler {
|
|||||||
|
|
||||||
plugin.debug("Loaded " + commands.size() + " sub-commands of /jail.");
|
plugin.debug("Loaded " + commands.size() + " sub-commands of /jail.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> parseTabComplete(JailManager jm, CommandSender sender, String[] args) {
|
||||||
|
if(args[0].equalsIgnoreCase("")) {
|
||||||
|
List<String> results = new ArrayList<String>();
|
||||||
|
boolean hasJailPermission = false;
|
||||||
|
|
||||||
|
for(Command c : commands.values()) {
|
||||||
|
CommandInfo i = c.getClass().getAnnotation(CommandInfo.class);
|
||||||
|
//Skip the jail subcommand instance, since it is unique
|
||||||
|
if(i.pattern().equalsIgnoreCase("jail|j")) {
|
||||||
|
hasJailPermission = sender.hasPermission(i.permission());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//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())) {
|
||||||
|
results.add(i.pattern().split("\\|")[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sort the results before adding the player names
|
||||||
|
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());
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the given command and checks that the command is in valid form.
|
* Handles the given command and checks that the command is in valid form.
|
||||||
|
@ -13,7 +13,7 @@ import com.graywolf336.jail.command.CommandInfo;
|
|||||||
maxArgs = 2,
|
maxArgs = 2,
|
||||||
minimumArgs = 1,
|
minimumArgs = 1,
|
||||||
needsPlayer = true,
|
needsPlayer = true,
|
||||||
pattern = "createcell|createcells|cellcreate|cellscreate|cc",
|
pattern = "createcells|createcell|cellcreate|cellscreate|cc",
|
||||||
permission = "jail.command.jailcreatecells",
|
permission = "jail.command.jailcreatecells",
|
||||||
usage = "/jail createcell [jail] (cellname)"
|
usage = "/jail createcell [jail] (cellname)"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +13,7 @@ import com.graywolf336.jail.enums.Lang;
|
|||||||
maxArgs = 2,
|
maxArgs = 2,
|
||||||
minimumArgs = 1,
|
minimumArgs = 1,
|
||||||
needsPlayer = false,
|
needsPlayer = false,
|
||||||
pattern = "telein|teleportin",
|
pattern = "teleportin|telein",
|
||||||
permission = "jail.command.jailtelein",
|
permission = "jail.command.jailtelein",
|
||||||
usage = "/jail telein [jail] (name)"
|
usage = "/jail telein [jail] (name)"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +13,7 @@ import com.graywolf336.jail.enums.Lang;
|
|||||||
maxArgs = 2,
|
maxArgs = 2,
|
||||||
minimumArgs = 1,
|
minimumArgs = 1,
|
||||||
needsPlayer = false,
|
needsPlayer = false,
|
||||||
pattern = "teleout|teleportout",
|
pattern = "teleportout|teleout",
|
||||||
permission = "jail.command.jailteleout",
|
permission = "jail.command.jailteleout",
|
||||||
usage = "/jail teleout [jail] (name)"
|
usage = "/jail teleout [jail] (name)"
|
||||||
)
|
)
|
||||||
|
@ -15,7 +15,7 @@ import com.graywolf336.jail.enums.Lang;
|
|||||||
maxArgs = 2,
|
maxArgs = 2,
|
||||||
minimumArgs = 2,
|
minimumArgs = 2,
|
||||||
needsPlayer = false,
|
needsPlayer = false,
|
||||||
pattern = "transferall|transall",
|
pattern = "transferall|transall|ta",
|
||||||
permission = "jail.command.jailtransferall",
|
permission = "jail.command.jailtransferall",
|
||||||
usage = "/jail transferall [current] [target]"
|
usage = "/jail transferall [current] [target]"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user