Added search to help command! Thanks @AkiTensai!

This commit is contained in:
Eric Stokes 2011-08-01 19:51:57 -06:00
parent b9e9a65022
commit dbdc6d91d2
2 changed files with 70 additions and 5 deletions

View File

@ -3,6 +3,7 @@ package com.onarandombox.MultiverseCore.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@ -18,11 +19,14 @@ public class HelpCommand extends MultiverseCommand {
public HelpCommand(MultiverseCore plugin) {
super(plugin);
this.setName("Get Help with Multiverse");
this.setCommandUsage("/mv " + ChatColor.GOLD + "[PAGE #]");
this.setArgRange(0, 1);
this.setCommandUsage("/mv " + ChatColor.GOLD + "[FILTER] [PAGE #]");
this.setArgRange(0, 2);
this.addKey("mv");
this.addKey("mvh");
this.addKey("mvhelp");
this.addKey("mv help");
this.addKey("mvsearch");
this.addKey("mv search");
this.setPermission("multiverse.help", "Displays a nice help menu.", PermissionDefault.TRUE);
}
@ -30,16 +34,38 @@ public class HelpCommand extends MultiverseCommand {
public void runCommand(CommandSender sender, List<String> args) {
sender.sendMessage(ChatColor.AQUA + "====[ Multiverse Help ]====");
int page = 1;
if (args.size() == 1) {
String filter = "";
if (args.size() == 0)
{
filter = "";
page = 1;
} else if (args.size() == 1) {
try {
page = Integer.parseInt(args.get(0));
} catch (NumberFormatException e) {
} catch (NumberFormatException ex) {
filter = args.get(0);
page = 1;
}
} else if (args.size() == 2) {
filter = args.get(0);
try {
page = Integer.parseInt(args.get(1));
} catch (NumberFormatException ex) {
page = 1;
}
}
List<Command> availableCommands = new ArrayList<Command>(this.plugin.getCommandHandler().getCommands(sender));
if (filter.length() > 0) {
availableCommands = this.getFilteredCommands(availableCommands, filter);
if (availableCommands.size() == 0) {
sender.sendMessage(ChatColor.RED + "Sorry... " + ChatColor.WHITE + "No commands matched your filter: " + ChatColor.AQUA + filter);
return;
}
}
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.AQUA + " Add a '" + ChatColor.DARK_PURPLE + "?" + ChatColor.AQUA + "' after a command to see more about it.");
@ -62,6 +88,33 @@ public class HelpCommand extends MultiverseCommand {
}
private List<Command> getFilteredCommands(List<Command> availableCommands, String filter) {
List<Command> filtered = new ArrayList<Command>();
Pattern regex = Pattern.compile("regex", Pattern.CASE_INSENSITIVE);
for (Command c : availableCommands) {
if (stitchThisString(c.getKeys()).matches("(?i).*" + filter + ".*")) {
filtered.add(c);
} else if (c.getCommandName().matches("(?i).*" + filter + ".*")) {
filtered.add(c);
} else if (c.getCommandDesc().matches("(?i).*" + filter + ".*")) {
filtered.add(c);
}else if (c.getCommandUsage().matches("(?i).*" + filter + ".*")) {
filtered.add(c);
}
}
return filtered;
}
private String stitchThisString(List<String> list) {
String returnstr = "";
for (String s : list) {
returnstr += s + " ";
}
return returnstr;
}
private void showPage(int page, CommandSender sender, List<Command> cmds) {
int start = (page - 1) * CMDS_PER_PAGE;
int end = start + CMDS_PER_PAGE;

View File

@ -167,6 +167,18 @@ commands:
usage: |
/<command>
mvco:
description: Prints out version invo.
usage: |
/<command>
mvh:
description: Prints out version invo.
usage: |
/<command>
mvsearch:
description: Prints out version invo.
usage: |
/<command>
mvhelp:
description: Prints out version invo.
usage: |
/<command>