mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2025-03-10 22:03:57 +01:00
Added search to help command! Thanks @AkiTensai!
This commit is contained in:
parent
b9e9a65022
commit
dbdc6d91d2
@ -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;
|
||||
|
@ -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>
|
Loading…
Reference in New Issue
Block a user