Brigadier
ナビゲーションに移動
検索に移動
この項目はJava Edition限定の要素です。
Brigadier
| 製作 | |
|---|---|
| プラットフォーム |
? |
| 開発言語 | |
| 最新バージョン | |
| リリース日 |
? |
| サイズ |
? |
| ライセンス |
MIT License |
| ソースコードの入手 |
{
"title": "Brigadier",
"rows": [
{
"field": "(link to File:Mojang Studios logo.svg article, displayed as x20px|link=Mojang Studios) (link to Mojang Studios article, displayed as Mojang Studios)",
"label": "製作"
},
{
"field": "?",
"label": "プラットフォーム"
},
{
"field": "(link to wikipedia:Java (programming language) article, displayed as Java)",
"label": "開発言語"
},
{
"field": "[https://github.com/Mojang/brigadier/releases/latest 1.0.18]",
"label": "最新バージョン"
},
{
"field": "?",
"label": "リリース日"
},
{
"field": "?",
"label": "サイズ"
},
{
"field": "MIT License",
"label": "ライセンス"
},
{
"field": "[https://github.com/mojang/brigadier/ 可]",
"label": "<span style=\"white-space:normal\">ソースコードの入手</span>"
}
],
"invimages": [],
"images": []
}

私はこの名前をとても誇りに思っています!BrigadierはMinecraftが使用するコマンドエンジンの名前です。
Brigadierは、Java Edition向けにデザインされ開発されたコマンドパーサ及びディスパッチャーであり[2]、主にDinnerboneによって管理されている[3]。これはMojangがオープンソースライセンス下で公開したものの中で初めてJava Editionで使用されたライブラリである[4]。
Brigadierは文字列として入力されたコマンドを解釈し、実行するために使用される。
- コマンドノードを引数やリテラルのブランチとして定義する
- Java Editionで利用可能な全てのコマンドは、実際に実行されるコマンドではなくルートコマンドノードで利用可能なリテラルブランチとなる。[5]
- コマンドの文脈に合わせて、コマンドソースを変更・分岐する
/execute as <target selector>は複数のエンティティが選択された場合、複数のコマンドソースを変更する
- コマンド解釈での動的検査[6]
- 現在のコマンドノードから続く可能性のある全てのコマンドの列挙[7]
- 実行が成功/失敗した時のコマンドの実行結果のリアルタイム処理
- 再帰的コマンドノードのリダイレクト
/execute runはバニラのコマンドディスパッチャーのルートノードにリダイレクトする
Brigadierには、/effectや/weatherにおける整数データ型や/timeにおける浮動小数点数データ型といった数値制限のように、コマンドの実行時にいくつかの制約があるため、コマンド内で解析される多くの整数値にはアクセスできない場合がある。
この節の内容は、Mojang StudiosまたはMinecraft Wikiのサポート対象外です。
Brigadierとその使用方法に関するより一般的なドキュメントはGithubのリポジトリ上にあるが、これはもっぱらMinecraftによって追加され使用される引数の型についての情報である。コマンドの基本的な実装はModローダーによって様々かもしれないが、引数の型についてはほぼ一貫性が維持されている。使用するModローダーには、Brigadierを使用してコマンドを追加する方法に関する独自のドキュメントが用意されている場合もあるだろう。
| クラス名 | 説明 | 使用例 | |
|---|---|---|---|
Commands.literal
|
正確に入力されるべき定型のキーワード。 | /datapack list
|
|
StringArgumentType.greedyString
|
可能な限り長い文字列に一致する(コマンドの最末尾でのみ有効)。 | /say all of this will be in the greedy string
|
|
StringArgumentType.word
|
スペースの無い、最も長い文字列に一致する。 | /tag @s add oneword
|
|
StringArgumentType.string
|
クォーテーションによって囲われていない場合、スペースの無い最も長い文字列に一致する。greedyStringと似ているが、引数を後から追加できる。
|
/datapack enable "multiple words" last
|
|
BoolArgumentType.bool
|
trueおよびfalseのみ。
|
/gamerule keepInventory true
|
|
IntegerArgumentType.integer
|
Javaのintに同じ。整数でなければならない。引数に最小値か、「最小値と最大値」を指定できる。
|
/scoreboard players set @s objective 100
|
|
LongArgumentType.longArg
|
Javaのlongに同じ。整数でなければならない。intと類似しているが、より大きな数を格納できる。引数に最小値か、「最小値と最大値」を指定できる。
|
どのコマンドにも使用されていない | |
FloatArgumentType.floatArg
|
Javaのfloatに同じ(有効数字6桁)。 小数点数が利用可能。引数に最小値か、「最小値と最大値」を指定できる。
|
/playsound minecraft:ambient.cave.master @s ~ ~ ~ 1.23456
|
|
DoubleArgumentType.doubleArg
|
Javaのdoubleに同じ(有効数字15桁)。小数点数が利用可能。引数に最小値か、「最小値と最大値」を指定できる。
|
/playsound minecraft:ambient.cave.master @s ~ ~ ~ 12.345678912345
|
(Javaのint、long、float及びdoubleについては、ここを参照されたし)
| 2014年10月25日 | DinnerboneがMC-10880のコメントでBrigadierに言及した。 | ||||||
|---|---|---|---|---|---|---|---|
| 2017年7月27日 | Dinnerboneが「Brigadier」という暗号化されていないコマンドパーサライブラリを発表した。 | ||||||
| Java Edition | |||||||
| 1.13 | 17w45a | コマンドがBrigadierによって処理されるようになった。 | |||||
| MinecraftがBrigadierを依存関係に組み込んだ。 | |||||||
| 2018年9月26日 | BrigadierがMITライセンスの下でオープンソース化された。[8] | ||||||
| 1.14 | 19w08a | コマンドにおいて、シングルクォーテーションで文字列を表せるようになった。[9] | |||||
| バージョン | 日付 | 変更点 |
|---|---|---|
| 1.0.15 | 2018年9月26日[10] |
|
| 1.0.17 | 2019年2月19日[11] |
|
| 1.0.18 | 2021年7月16日[12] |
|
-
Brigadierの機能をふんだんに活用した、
/executeのコマンドツリー。 -
実際に実行されるコマンド(赤色のノード)と、ルート(「tag」のボックス)直後の最初のリテラルとの違いを表した
/tagのコマンドツリー。 -
Brigadierのコマンドノードリダイレクト機能(破線)によって実装されたエイリアスを表した
/msgのコマンドツリー。
- ↑ 「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
- ↑ 「Added copyright header, LICENSE, and README.md by Dinnerbone · Pull Request #8 · Mojang/brigadier」 – 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
- ↑ "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