CommandAPI 9.3.0
An API for the command UI introduced in Minecraft 1.13
com.mojang.brigadier.tree.CommandNode< S > Class Template Referenceabstract

The abstract base for the command tree, just representing a single command node. More...

+ Inheritance diagram for com.mojang.brigadier.tree.CommandNode< S >:

Public Member Functions

Command< S > getCommand ()
 Returns the command to execute when executing this command node. More...
 
Collection< CommandNode< S > > getChildren ()
 Returns all child command nodes. More...
 
CommandNode< S > getChild (final String name)
 Returns a child with the given getName. More...
 
CommandNode< S > getRedirect ()
 Returns the command node to redirect to. More...
 
RedirectModifier< S > getRedirectModifier ()
 Returns the redirect modifier to apply when redirecting. More...
 
boolean canUse (final S source)
 Checks whether the given command source can use this command node. More...
 
void addChild (final CommandNode< S > node)
 Adds a new child node to this command node. More...
 
void findAmbiguities (final AmbiguityConsumer< S > consumer)
 Tries to find ambiguities in the children of this command node and recurses down. More...
 
boolean equals (final Object o)
 
int hashCode ()
 
Predicate< S > getRequirement ()
 Returns the requirement for this command node, that is used by canUse(Object). More...
 
abstract String getName ()
 Returns the name of this command node. More...
 
abstract String getUsageText ()
 Returns some usage text for this command node. More...
 
abstract void parse (StringReader reader, CommandContextBuilder< S > contextBuilder) throws CommandSyntaxException
 Tries to parse the command given by the reader and stores the results in the contextBuilder. More...
 
abstract CompletableFuture< SuggestionslistSuggestions (CommandContext< S > context, SuggestionsBuilder builder) throws CommandSyntaxException
 Lists suggestions for this command node, given the context and uses the passed SuggestionsBuilder to build them. More...
 
abstract ArgumentBuilder< S, ?> createBuilder ()
 Creates a builder for this command node. More...
 
Collection<? extends CommandNode< S > > getRelevantNodes (final StringReader input)
 Returns all relevant command nodes for the input, so all nodes that are probably able to parse the input. More...
 
int compareTo (final CommandNode< S > o)
 
boolean isFork ()
 Checks whether this command node forks. More...
 
abstract Collection< String > getExamples ()
 Returns example usages for this command node, which are used to find ambiguities. More...
 

Protected Member Functions

 CommandNode (final Command< S > command, final Predicate< S > requirement, final CommandNode< S > redirect, final RedirectModifier< S > modifier, final boolean forks)
 
abstract boolean isValidInput (final String input)
 Checks if the given input is valid for this command node, i.e. More...
 
abstract String getSortedKey ()
 Returns a key for this command node, that is used for ordering the command nodes. More...
 

Detailed Description

The abstract base for the command tree, just representing a single command node.

Parameters
<S>the type of the command source

Member Function Documentation

◆ addChild()

void com.mojang.brigadier.tree.CommandNode< S >.addChild ( final CommandNode< S >  node)

Adds a new child node to this command node.


This will replace a command node with the same name, but there exist some bugs and some design decisions are not final as of now. Subsequently the exact behaviour in this case is not mandated. For a more detailed post about the problems, read this github issue.


You are not allowed to add children to commands with a getRedirect() target!

Parameters
nodethe child command node to add
Exceptions
UnsupportedOperationExceptionif you try to add a RootCommandNode to any other command node

◆ canUse()

boolean com.mojang.brigadier.tree.CommandNode< S >.canUse ( final S  source)

Checks whether the given command source can use this command node.

This just checks the getRequirement() predicate, which could e.g. check for permissions.

Parameters
sourcethe command source to check for
Returns
true if the given command source can use this command node

◆ createBuilder()

abstract ArgumentBuilder< S, ?> com.mojang.brigadier.tree.CommandNode< S >.createBuilder ( )
abstract

Creates a builder for this command node.

Returns
a builder for this command node

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ findAmbiguities()

void com.mojang.brigadier.tree.CommandNode< S >.findAmbiguities ( final AmbiguityConsumer< S >  consumer)

Tries to find ambiguities in the children of this command node and recurses down.

This can be used to detect whether multiple paths could be taken with a single input, which is not an ideal state for parsing commands. See CommandDispatcher#findAmbiguities for more information.

Parameters
consumerthe AmbiguityConsumer to call when ambiguities are found

◆ getChild()

CommandNode< S > com.mojang.brigadier.tree.CommandNode< S >.getChild ( final String  name)

Returns a child with the given getName.

Parameters
namethe name of the child command node
Returns
the child with that name or null if not found

◆ getChildren()

Collection< CommandNode< S > > com.mojang.brigadier.tree.CommandNode< S >.getChildren ( )

Returns all child command nodes.

Returns
all child command nodes

◆ getCommand()

Returns the command to execute when executing this command node.

Returns
the command to execute when executing this command node or null if not set

◆ getExamples()

abstract Collection< String > com.mojang.brigadier.tree.CommandNode< S >.getExamples ( )
abstract

Returns example usages for this command node, which are used to find ambiguities.

Returns
some example usages for this command node, which are used to find ambiguities
See also
findAmbiguities

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ getName()

abstract String com.mojang.brigadier.tree.CommandNode< S >.getName ( )
abstract

Returns the name of this command node.

Returns
the name of this command node

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ getRedirect()

Returns the command node to redirect to.

Returns
the command node to redirect to or null if none

◆ getRedirectModifier()

RedirectModifier< S > com.mojang.brigadier.tree.CommandNode< S >.getRedirectModifier ( )

Returns the redirect modifier to apply when redirecting.

Returns
the redirect modifier to apply when redirecting or null if none

◆ getRelevantNodes()

Collection<? extends CommandNode< S > > com.mojang.brigadier.tree.CommandNode< S >.getRelevantNodes ( final StringReader  input)

Returns all relevant command nodes for the input, so all nodes that are probably able to parse the input.

Parameters
inputthe input to check for
Returns
all relevant command nodes for the input, so all nodes that are probably able to parse the input

◆ getRequirement()

Predicate< S > com.mojang.brigadier.tree.CommandNode< S >.getRequirement ( )

Returns the requirement for this command node, that is used by canUse(Object).

Returns
the requirement for this command node, that is used by canUse(Object)

◆ getSortedKey()

abstract String com.mojang.brigadier.tree.CommandNode< S >.getSortedKey ( )
abstractprotected

Returns a key for this command node, that is used for ordering the command nodes.

Returns
a key for this command node, that is used for ordering command nodes

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ getUsageText()

abstract String com.mojang.brigadier.tree.CommandNode< S >.getUsageText ( )
abstract

Returns some usage text for this command node.

Returns
some usage text for this command node

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ isFork()

boolean com.mojang.brigadier.tree.CommandNode< S >.isFork ( )

Checks whether this command node forks.

See CommandDispatcher#execute(ParseResults) for an explanation of what it does.

Returns
true if this command node forks

◆ isValidInput()

abstract boolean com.mojang.brigadier.tree.CommandNode< S >.isValidInput ( final String  input)
abstractprotected

Checks if the given input is valid for this command node, i.e.

if it is what the command expects.

This is used to find ambiguities.

Parameters
inputthe input to check
Returns
true if the given input is valid
See also
findAmbiguities

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ listSuggestions()

abstract CompletableFuture< Suggestions > com.mojang.brigadier.tree.CommandNode< S >.listSuggestions ( CommandContext< S >  context,
SuggestionsBuilder  builder 
) throws CommandSyntaxException
abstract

Lists suggestions for this command node, given the context and uses the passed SuggestionsBuilder to build them.

Parameters
contextthe CommandContext to use for finding suggestions
builderthe suggestions builder
Returns
a completable future that might complete sometime in the future, as finding suggestions could involve I/O or other slow things
Exceptions
CommandSyntaxExceptionif the command is not well formed

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.

◆ parse()

abstract void com.mojang.brigadier.tree.CommandNode< S >.parse ( StringReader  reader,
CommandContextBuilder< S >  contextBuilder 
) throws CommandSyntaxException
abstract

Tries to parse the command given by the reader and stores the results in the contextBuilder.

Parameters
readerthe reader to read from
contextBuilderthe context builder to store the results in
Exceptions
CommandSyntaxExceptionif the input was malformed

Reimplemented in com.mojang.brigadier.tree.ArgumentCommandNode< S, T >, com.mojang.brigadier.tree.LiteralCommandNode< S >, and com.mojang.brigadier.tree.RootCommandNode< S >.