“ |
|
„ | |
— 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
- All the commands available in Java Edition are actually the literal branches available for the root command nodes instead of the actual executed commands.[5]
- Modify/fork command source in command contexts
/execute as <target selector>
may modify the command source to be multiple when multiple entities are selected
- Active inspection on command parsing[6]
- Listing all possible commands from current command node[7]
- Handle command result real-time on execution success/failure
/execute store
can store the command result to block/entity NBT data or scoreboard
- 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.
Since 1.15, whenever the chat cursor is positioned at the start of a node after a whitespace character, command suggestion will say "Incorrect argument for command at position <position number>" instead of displaying the command suggestions, especially the command arguments that requires numbers or strings before parsing and the trailing spaces beyond the command argument list.[8]
History[]
October 25, 2014 | Dinnerbone mentions Brigadier in the comments on MC-10880. | ||||
---|---|---|---|---|---|
July 27, 2017 | Dinnerbone discloses a non-obfuscated command parser library called "brigadier". | ||||
Java Edition | |||||
1.13 | 17w45a | Commands are now handled with Brigadier. | |||
Minecraft introduces Brigadier as a dependency. | |||||
September 26, 2018 | Brigadier is open sourced under the MIT License.[9] | ||||
1.14 | 19w08a | Now allows single quotes for strings in commands.[10] |
Version history[]
Version | Date | Changes |
---|---|---|
1.0.15 | September 26, 2018[11] |
|
1.0.17 | February 19, 2019[12] |
|
1.0.18 | July 16, 2021[13] |
|
Gallery[]
The
/execute
command tree, which utilizes an overwhelming amount of the brigadier features.The
/tag
command tree, showing the difference between actual executed commands (red nodes) versus the first literal after the root (the "tag" box)The
/msg
command tree, showing that aliases have been implemented by brigadier's command node redirection functionality (dashed lines)
References[]
- ↑ "Programmers: Play with Minecraft's Inner Workings!" – Minecraft.net
- ↑ "Mojang/brigadier: Brigadier is a command parser & dispatcher, designed and developed for Minecraft: Java Edition." – GitHub.
- ↑ "Contributors to Mojang/brigadier" – GitHub.
- ↑ "We just pulled in our very first community contributed code into a Minecraft Java Edition official library. Woo! 🎉 Want to help out? The first library we've opened is our command engine - it's MIT licensed so you can freely use it in your own projects!" – @Dinnerbone (Nathan Adams) on X, September 26, 2018
- ↑ "Added copyright header, LICENSE, and README.md by Dinnerbone · Pull Request #8 · Mojang/brigadier" by boq – Mojang/brigadier – GitHub. "I'd argue that most people identify command by first literal after root, so that would make "command" a sub-tree and not just path leading to leaf node. /bikeshedding"
- ↑ "Inspecting a command" – Mojang/brigadier – GitHub.
- ↑ "Displaying usage info" – Mojang/brigadier – GitHub.
- ↑ MC-165562
- ↑ "Preparation for OSS :)" - Preparing for the open source software – Mojang/brigadier – GitHub
- ↑ "Allow single quote in strings by boq · Pull Request #52" – Mojang/brigadier – GitHub.
- ↑ "Release 1.0.15 · Mojang/brigadier" – GitHub.
- ↑ "Release 1.0.17 · Mojang/brigadier" – GitHub.
- ↑ "Release 1.0.18 · Mojang/brigadier" – GitHub.