Brigadier

This feature is exclusive to Java Edition.
 
Brigadier
Author(s)

Mojang Studios

Platform(s)

?

Written in

Java

Latest version

1.0.18

Release date

?

Size

?

License

MIT License

Source available

Yes

I'm so proud of that name! Brigadier is the name of the command engine that Minecraft uses.

Dinnerbone on Brigadier[1]

Brigadier is a command parser and dispatcher, designed and developed for Java Edition,[2] mainly maintained by Dinnerbone.[3] It is the first library used by Java Edition that Mojang has released under an open-source license.[4]

Usage

Brigadier is used for parsing and executing string commands.

Features

  • Define command nodes with argument or literal branches
  • Modify/fork command source in command contexts
  • Active inspection on command parsing[6]
  • Listing all possible commands from current command node[7]
  • Handle command result real-time on execution success/failure
  • Recursive command node redirection
    • /execute run redirects to the root node of the vanilla command dispatcher

Limitations and issues

Brigadier has various numbers of limitations while executing the command, such as the numeric limitations on integer data types such as /effect, /weather, and floating-point data types such as /time, making many integer values parsed in the commands inaccessible.

Minecraft argument types

The contents of this section are not supported by Mojang Studios or the Minecraft Wiki.

More general documentation on brigadier and its use can be found at the github repository, however this is information specifically on the argument types added and used in Minecraft. While basic implementation of commands may vary by mod loader, these argument types are mostly consistent. Your chosen mod loader probably has its own documentation for how to actually register commands using Brigadier.

Argument types
Class name Description Example
Commands.literal A fixed keyword that must be typed exactly. /datapack list
StringArgumentType.greedyString Will match the longest possible string of letters (only works at the very end of a command). /say all of this will be in the greedy string
StringArgumentType.word Will match the longest string of letters without spaces. /tag @s add oneword
StringArgumentType.string Will match the longest string of letters without spaces, unless surrounded by quotation marks. Similar to greedyString, but can have more arguments afterwards. /datapack enable "multiple words" last
BoolArgumentType.bool Can only be true or false. /gamerule keepInventory true
IntegerArgumentType.integer A Java int. Must be a whole number. This argument can optionally have a minimum value, or a minimum and maximum value. /scoreboard players set @s objective 100
LongArgumentType.longArg A Java long. Must be a whole number. Similar to int, but can store much larger numbers. This argument can optionally have a minimum value, or a minimum and maximum value. Not used in any commands
FloatArgumentType.floatArg A Java float (6 digits of precision). Can have decimals. This argument can optionally have a minimum value, or a minimum and maximum value. /playsound minecraft:ambient.cave master @s ~ ~ ~ 1.23456
DoubleArgumentType.doubleArg A Java double (15 digits of precision). Can have decimals. This argument can optionally have a minimum value, or a minimum and maximum value. /attribute @s minecraft:generic.movement_speed base set 12.345678912345

(See more about Java ints, longs, floats and doubles here)

History

October 25, 2014Dinnerbone mentions Brigadier in the comments on MC-10880.
July 27, 2017Dinnerbone discloses a non-obfuscated command parser library called "brigadier".
Java Edition
1.1317w45aCommands are now handled with Brigadier.
Minecraft introduces Brigadier as a dependency.
September 26, 2018Brigadier is open sourced under the MIT License.[8]
1.1419w08aNow allows single quotes for strings in commands.[9]

Version history

Version Date Changes
1.0.15 September 26, 2018[10]
  • Initial release
1.0.17 February 19, 2019[11]
  • Allow single quotes in strings
  • Added long argument
  • Implement calculation of suggestions for any text position
  • No longer depend on Guava
1.0.18 July 16, 2021[12]
  • Performance optimizations

Gallery


References

Navigation