Search in sources :

Example 1 with DispatcherCommand

use of org.cubeengine.butler.DispatcherCommand in project core by CubeEngine.

the class HelpCommand method execute.

@Override
public boolean execute(CommandInvocation invocation) {
    if (!(invocation.getCommandSource() instanceof CommandSource)) {
        return false;
    }
    CommandDescriptor descriptor = helpTarget.getDescriptor();
    CommandSource sender = (CommandSource) invocation.getCommandSource();
    TextFormat formatGray = NONE.color(GRAY);
    i18n.send(sender, formatGray, "Description: {input}", i18n.translate(sender, MessageType.NONE, descriptor.getDescription()).toPlain());
    List<String> labels = new ArrayList<>(invocation.getLabels());
    if (labels.isEmpty()) {
        labels.add("");
    }
    if ("?".equals(labels.get(labels.size() - 1))) {
        labels.remove(labels.size() - 1);
    }
    i18n.send(sender, formatGray, "Usage: {input}", descriptor.getUsage(invocation, labels.toArray(new String[labels.size()])));
    sender.sendMessage(Text.of());
    if (helpTarget instanceof DispatcherCommand) {
        Set<CommandBase> commands = helpTarget.getCommands();
        if (!commands.isEmpty() && (commands.size() != 1 || // is Empty ignoring HelpCommand
        !(commands.iterator().next() instanceof HelpCommand))) {
            i18n.send(sender, NEUTRAL, "The following sub-commands are available:");
            sender.sendMessage(Text.of());
            commands.stream().filter(command -> !(command instanceof HelpCommand || command instanceof AliasCommand && commands.contains(((AliasCommand) command).getTarget()))).filter(command -> !(command.getDescriptor() instanceof CubeCommandDescriptor && ((CubeCommandDescriptor) command.getDescriptor()).isCheckPerm() && !sender.hasPermission(((CubeCommandDescriptor) command.getDescriptor()).getPermission().getName()))).forEach(command -> sender.sendMessage(Text.of(YELLOW, command.getDescriptor().getName()).toBuilder().onClick(TextActions.runCommand("/" + (String.join(" ", labels) + " " + command.getDescriptor().getName()).trim() + " ?")).append(Text.of(WHITE, ": ", GRAY, i18n.translate(sender, TextFormat.NONE, command.getDescriptor().getDescription()))).build()));
            sender.sendMessage(Text.of());
        } else if (helpTarget instanceof ParametricContainerCommand) {
            i18n.send(sender, MessageType.NEGATIVE, "No actions are available");
            sender.sendMessage(Text.of());
        }
    }
    /*
        if (descriptor instanceof CubeDescriptor)
        {
            sender.sendTranslated(GRAY, "Detailed help: {input#link:color=INDIGO}", "http://engine.cubeisland.de/c/" + ((CubeDescriptor)descriptor).getModule().getInformation().getName().toLowerCase() + "/" + StringUtils.implode("/", labels));
        }
        */
    return true;
}
Also used : TextActions(org.spongepowered.api.text.action.TextActions) I18n(org.cubeengine.libcube.service.i18n.I18n) CommandSource(org.spongepowered.api.command.CommandSource) CommandBase(org.cubeengine.butler.CommandBase) MessageType(org.cubeengine.libcube.service.i18n.formatter.MessageType) Set(java.util.Set) NEUTRAL(org.cubeengine.libcube.service.i18n.formatter.MessageType.NEUTRAL) Dispatcher(org.cubeengine.butler.Dispatcher) SimpleCommandDescriptor(org.cubeengine.butler.SimpleCommandDescriptor) CommandInvocation(org.cubeengine.butler.CommandInvocation) ArrayList(java.util.ArrayList) CommandDescriptor(org.cubeengine.butler.CommandDescriptor) List(java.util.List) NONE(org.cubeengine.libcube.service.i18n.formatter.MessageType.NONE) Text(org.spongepowered.api.text.Text) TextFormat(org.spongepowered.api.text.format.TextFormat) AliasCommand(org.cubeengine.butler.alias.AliasCommand) DispatcherCommand(org.cubeengine.butler.DispatcherCommand) TextColors(org.spongepowered.api.text.format.TextColors) ParametricContainerCommand(org.cubeengine.butler.parametric.ParametricContainerCommand) ArrayList(java.util.ArrayList) CommandSource(org.spongepowered.api.command.CommandSource) SimpleCommandDescriptor(org.cubeengine.butler.SimpleCommandDescriptor) CommandDescriptor(org.cubeengine.butler.CommandDescriptor) AliasCommand(org.cubeengine.butler.alias.AliasCommand) CommandBase(org.cubeengine.butler.CommandBase) TextFormat(org.spongepowered.api.text.format.TextFormat) ParametricContainerCommand(org.cubeengine.butler.parametric.ParametricContainerCommand) DispatcherCommand(org.cubeengine.butler.DispatcherCommand)

Aggregations

ArrayList (java.util.ArrayList)1 List (java.util.List)1 Set (java.util.Set)1 CommandBase (org.cubeengine.butler.CommandBase)1 CommandDescriptor (org.cubeengine.butler.CommandDescriptor)1 CommandInvocation (org.cubeengine.butler.CommandInvocation)1 Dispatcher (org.cubeengine.butler.Dispatcher)1 DispatcherCommand (org.cubeengine.butler.DispatcherCommand)1 SimpleCommandDescriptor (org.cubeengine.butler.SimpleCommandDescriptor)1 AliasCommand (org.cubeengine.butler.alias.AliasCommand)1 ParametricContainerCommand (org.cubeengine.butler.parametric.ParametricContainerCommand)1 I18n (org.cubeengine.libcube.service.i18n.I18n)1 MessageType (org.cubeengine.libcube.service.i18n.formatter.MessageType)1 NEUTRAL (org.cubeengine.libcube.service.i18n.formatter.MessageType.NEUTRAL)1 NONE (org.cubeengine.libcube.service.i18n.formatter.MessageType.NONE)1 CommandSource (org.spongepowered.api.command.CommandSource)1 Text (org.spongepowered.api.text.Text)1 TextActions (org.spongepowered.api.text.action.TextActions)1 TextColors (org.spongepowered.api.text.format.TextColors)1 TextFormat (org.spongepowered.api.text.format.TextFormat)1