Interface Command.Builder
-
- All Superinterfaces:
Buildable.Builder<Command.Parameterized>,Builder<Command.Parameterized,Command.Builder>,ResettableBuilder<Command.Parameterized,Command.Builder>
- Enclosing interface:
- Command
public static interface Command.Builder extends Builder<Command.Parameterized,Command.Builder>
A high levelCommand.Builderfor creating aCommand.Parameterized.When creating a command, ensure that a
CommandExecutorand/or a child command is specified.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Command.BuilderaddChild(Command.Parameterized child, Iterable<String> keys)Adds aCommand.Parameterizedas a child to this command, under the supplied keys.default Command.BuilderaddChild(Command.Parameterized child, String... keys)Adds aCommand.Parameterizedas a top-level child to this command, using the supplied keys.default Command.BuilderaddChildren(Map<? extends Iterable<String>,? extends Command.Parameterized> children)Adds multipleCommand.Parameterizedas children to this command, under the supplied keys.Command.BuilderaddFlag(Flag flag)Adds a flag to this command.default Command.BuilderaddFlags(Iterable<Flag> flags)Adds multipleflagsto this command.default Command.BuilderaddFlags(Flag... flags)Adds multipleflagsto this command.Command.BuilderaddParameter(Parameter parameter)Adds a parameter for use when parsing arguments.default Command.BuilderaddParameters(Iterable<Parameter> parameters)Adds parameters to use when parsing arguments.default Command.BuilderaddParameters(Parameter... parameters)Adds parameters to use when parsing arguments.Command.Parameterizedbuild()Builds this command, creating aCommand.Parameterizedobject.Command.BuilderexecutionRequirements(@Nullable Predicate<CommandCause> executionRequirements)Sets a function that determines what is required of the providedCausebefore this command executes.Command.Builderexecutor(CommandExecutor executor)Provides the logic of the command.default Command.BuilderextendedDescription(@Nullable Component extendedDescription)Provides the description for this command.Command.BuilderextendedDescription(Function<CommandCause,Optional<Component>> extendedDescriptionFunction)Provides the description for this command, which is dependent on theCausethat requests it.Command.Builderpermission(@Nullable String permission)default Command.Builderpermission(PermissionDescription permission)default Command.BuildershortDescription(@Nullable Component description)Provides a simple description for this command, typically no more than one line.Command.BuildershortDescription(Function<CommandCause,Optional<Component>> descriptionFunction)Provides a simple description for this command, typically no more than one line, which is dependent on theCausethat requests it.Command.Builderterminal(boolean terminal)Sets whether this command is considered "terminal" in its own right, that is, can be executed on its own if no arguments are supplied when invoked, regardless of whether any suppliedParameters are mandatory.
-
-
-
Method Detail
-
addChild
default Command.Builder addChild(Command.Parameterized child, String... keys)
Adds aCommand.Parameterizedas a top-level child to this command, using the supplied keys. The keys are case insensitive.Children added here will be added to the beginning of the
Parameters. Note that if you wish to add a subcommand in the middle of the parameters, you can do so by creating aParameter.Subcommandand adding that as aaddParameter(Parameter)at the appropriate time.- Parameters:
child- TheCommandthat is a child.keys- The keys to register as a sub command.- Returns:
- This builder, for chaining
- Throws:
IllegalArgumentException- thrown if a child key is already in the builder, or there are no keys supplied
-
addChild
Command.Builder addChild(Command.Parameterized child, Iterable<String> keys)
Adds aCommand.Parameterizedas a child to this command, under the supplied keys. The keys are case insensitive.Children added here will be added to the beginning of the
Parameters. Note that if you wish to add a subcommand in the middle of the parameters, you can do so by creating aParameter.Subcommandand adding that as aaddParameter(Parameter)at the appropriate time.- Parameters:
child- TheCommandthat is a child.keys- The keys to register as a sub command.- Returns:
- This builder, for chaining
- Throws:
IllegalArgumentException- thrown if a child key is already in the builder
-
addChildren
default Command.Builder addChildren(Map<? extends Iterable<String>,? extends Command.Parameterized> children)
Adds multipleCommand.Parameterizedas children to this command, under the supplied keys. The keys are case insensitive.Children added here will be added to the beginning of the
Parameters. Note that if you wish to add a subcommand in the middle of the parameters, you can do so by creating aParameter.Subcommandand adding that as aaddParameter(Parameter)at the appropriate time.- Parameters:
children- TheMapthat contains a mapping of keys to their respectiveCommandchildren.- Returns:
- This builder, for chaining
- Throws:
IllegalArgumentException- thrown if a child key is already in the builder
-
addFlag
Command.Builder addFlag(Flag flag)
Adds a flag to this command. Flags are always the first arguments of a command. There are no set rules for the order of execution of flags (unlikeaddParameter(Parameter)), and all flags are considered optional.Duplicate keys and/or duplicate aliases may not be provided.
- Parameters:
flag- TheFlagto support- Returns:
- Ths builder, for chaining
-
addFlags
default Command.Builder addFlags(Flag... flags)
Adds multipleflagsto this command.- Parameters:
flags- The flags- Returns:
- This builder, for chaining
- See Also:
for more information about flags.
-
addFlags
default Command.Builder addFlags(Iterable<Flag> flags)
Adds multipleflagsto this command.- Parameters:
flags- The flags- Returns:
- This builder, for chaining
- See Also:
for more information about flags.
-
addParameter
Command.Builder addParameter(Parameter parameter)
Adds a parameter for use when parsing arguments. When executing a command, they will be executed in the order they are added to this builder.- Parameters:
parameter- The parameter to add to the parameter list- Returns:
- This builder, for chaining
-
addParameters
default Command.Builder addParameters(Parameter... parameters)
Adds parameters to use when parsing arguments. Parameters will be used in the order provided here.- Parameters:
parameters- TheParameters to use- Returns:
- This builder, for chaining
-
addParameters
default Command.Builder addParameters(Iterable<Parameter> parameters)
Adds parameters to use when parsing arguments. Parameters will be used in the order provided here.- Parameters:
parameters- TheParameters to use- Returns:
- This builder, for chaining
-
executor
Command.Builder executor(CommandExecutor executor)
Provides the logic of the command.This is only optional if child commands are specified. This will replace any previous executor that has been set.
- Parameters:
executor- TheCommandExecutorthat will run the command- Returns:
- This builder, for chaining
-
extendedDescription
Command.Builder extendedDescription(Function<CommandCause,Optional<Component>> extendedDescriptionFunction)
Provides the description for this command, which is dependent on theCausethat requests it.A one line summary should be provided to
shortDescription(Component)It is recommended to use the default text color and style. Sections with text actions (e.g. hyperlinks) should be underlined.
- Parameters:
extendedDescriptionFunction- A function that provides a relevant description based on the suppliedCause- Returns:
- This builder, for chaining
-
extendedDescription
default Command.Builder extendedDescription(@Nullable Component extendedDescription)
Provides the description for this command.A one line summary should be provided to
shortDescription(Component)- Parameters:
extendedDescription- The description to use, ornullfor no description.- Returns:
- This builder, for chaining
-
shortDescription
Command.Builder shortDescription(Function<CommandCause,Optional<Component>> descriptionFunction)
Provides a simple description for this command, typically no more than one line, which is dependent on theCausethat requests it.Fuller descriptions should be provided through
extendedDescription(Function)- Parameters:
descriptionFunction- A function that provides a relevant description based on the suppliedCause- Returns:
- This builder, for chaining
-
shortDescription
default Command.Builder shortDescription(@Nullable Component description)
Provides a simple description for this command, typically no more than one line.Fuller descriptions should be provided through
extendedDescription(Component)It is recommended to use the default text color and style. Sections with text actions (e.g. hyperlinks) should be underlined.
- Parameters:
description- The description to use, ornullfor no description- Returns:
- This builder, for chaining
-
permission
Command.Builder permission(@Nullable String permission)
The permission that the responsibleSubjectin the givenCauserequires to run this command, ornullif no permission is required. Calling this method will overwrite anything set viaexecutionRequirements(Predicate), or will replace the previous permission set by this method.Any permission checks set here will be performed during the
Command.canExecute(CommandCause).- Parameters:
permission- The permission that is required, ornullfor no permission- Returns:
- This builder, for chaining
-
permission
default Command.Builder permission(PermissionDescription permission)
The permission that the responsibleSubjectin the givenCauserequires to run this command.For more control over whether a command can be executed, use
executionRequirements(Predicate). However, note that setting a permission here will not override anything set inexecutionRequirements(Predicate), both will be checked during execution.Any permission checks set here will be performed during the
Command.canExecute(CommandCause).Calling this repeatedly will not add additional permission checks, instead replacing the permission check. If multiple permission checks are required, use
executionRequirements(Predicate).- Parameters:
permission- The description for the required permission.- Returns:
- This builder, for chaining
-
executionRequirements
Command.Builder executionRequirements(@Nullable Predicate<CommandCause> executionRequirements)
Sets a function that determines what is required of the providedCausebefore this command executes. Calling this method will overwrite anything set viapermission(String)or anything previously set via this method.Any requirements set here will be performed as part of
Command.canExecute(CommandCause).- Parameters:
executionRequirements- A function that sets the- Returns:
- This builder, for chaining
-
terminal
Command.Builder terminal(boolean terminal)
Sets whether this command is considered "terminal" in its own right, that is, can be executed on its own if no arguments are supplied when invoked, regardless of whether any suppliedParameters are mandatory.- Parameters:
terminal- Whether to mark this command as terminal- Returns:
- This builder, for chaining
- See Also:
Parameter.isTerminal(),Parameter.Value.Builder.terminal()
-
build
Command.Parameterized build()
Builds this command, creating aCommand.Parameterizedobject.To build the command, one of the following is required:
- A
CommandExecutoris provided usingexecutor(CommandExecutor) - At least one
Commandis set to be a child command usingaddChild(Parameterized, Iterable)oraddChildren(Map)
If these conditions are not fulfilled, an
IllegalStateExceptionwill be thrown.- Specified by:
buildin interfaceBuildable.Builder<Command.Parameterized>- Returns:
- The command, ready for registration
- Throws:
IllegalStateException- if the builder is not complete
- A
-
-