マイクラのコマンドで作る「最強」について考える【前編】

この記事は、[Minecraft Command Advent Calendar 2024](https://qiita.com/advent-calendar/2024/mccmd) 一日目の記事です。

# はじめに：この記事について
「<font color=magenta>**コマンド**</font>」、Minecraftをプレイしている方なら何らかの形で耳にしたことのある言葉でしょう。しかし、そのコマンドが実際のところ、どういったものなのかを探しても、込み入った内容まで解説されているものは限られます。
そのため、コマンドに対する認識は非常に曖昧で「なんでもできるような何か」と捉えられていることが多いと思います。特に、インターネット上のコンテンツでよく目にするのは「最強」「チート」の言葉かと。

「<font color=limegreen>最強の剣はどう出すのだろう</font>」「<font color=limegreen>チート武器はどう作るのだろう</font>」

実際にこのような疑問を抱いた方もいるのではないでしょうか。コマンド自体もそうですが、どうすればいいのか、という手順は追えても、その手順の仕組み、実際に何をしているのかまでは分からずに終わることがしばしばあるのではないでしょうか。
この記事は「<font color=limegreen>超・初心者向け</font>」を銘打ち、コマンドの基礎の基礎をこの「最強の剣」の作り方とともに、ひとつひとつ順を追って解説していきます。

# 0. 前提
まず大前提として、この記事は<font color=red>**Minecraft Java Editionのバージョン1.21.3および1.21.4向け**</font>に書いています。

この意味が100%理解できる、環境設定はばっちり、という方は[次の項目](#1-コマンドの基本)まで飛ばしていただいてかまいません。

普通にMinecraftを遊ぶ場合はエディションやバージョンを気にする必要はさしてありません。特に、エディションは気にしない方も結構いると思います。ですが、コマンド観点からでは非常に重要な要素なので、Minecraftのエディションとその違いについて軽く説明します。

### JavaとBedrock
Minecraftの名前を持つゲームは、Java EditionとBedrock Edition、いわゆる統合版の**二種類**が存在します。
この二つのエディションは、ゲームプレイの観点からはほとんど変わらず、ゲーム画面を見ただけでは見分けづらいです。しかし、内部的な作りは<font color=red>**根底から完全な別物**</font>であり、様々な仕様が違います。特に、コマンドの実行やその周りの処理が大きく異なります。そのため、Java Editionのコマンドは統合版でそのままでは使えず、逆もまたできません。
しかし、実際のゲームプレイは大方同じであるため、この二つのMinecraftが混同され、話がすれ違ったり、通じなかったりすることがしばしば起こります。
この記事に限らず、Minecraftの技術的な話題において、使うエディションで生じる違いがあることは覚えておくと良いでしょう。

### 見分け方
ここで、手元にあるMinecraftのエディションを簡単に区別する方法を紹介します。二つのエディションのタイトル画面を比較してみましょう。

![560px-Java_Edition_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/38c92bb6-70fd-d842-c9a4-c11ffadea3aa.png)
![760px-Bedrock_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/65b3ea9c-e94b-baaa-ede0-e7ac2468f0fc.png)
(出展：Minecraft Wiki - [Java Edition](https://minecraft.wiki/w/Java_Edition), [Bedrock Edition](https://minecraft.wiki/w/Bedrock_Edition))

上がJava版、下が統合版です。一目見て違いが分かりますね。特に、Java版はタイトルにも"Java Edition"と書かれていることが分かると思います。この記事で取り扱うエディションはJava版なので、Minecraftを起動して上側の画面が表示されれば正しい環境です。

### ゲームのバージョン
また、ゲームのバージョンは1.21.3に設定してください。他のバージョンでは、例え同じエディションでも、コマンドの記述方法や挙動が完全に異なったりするので、このバージョンのMinecraftを使用することを強く推奨します。

::: note alert
### <font color=lightcoral>「非バニラ環境」</font>
MODやサーバープラグインは、Minecraftの内部処理に関与してることが多く、それによりコマンドの挙動も変わるおそれがあります。ゲームに直接的な変化をもたらさない、OptiFine等の軽量化MODは導入していても大丈夫かと思うかもしれませんが、そのようなことはなく、他のMODと同等にリスクがあります。コマンドで何かしらの開発をする場合は、**完全にバニラ環境のMinecraft**を使用するようにしましょう。
:::

次に、ワールドの設定をしていきましょう。コマンドは、できることが多く、場合によってはワールドに不可逆的な影響を与えてしまう可能性があります。そのため、コマンドでものを作るときは、新しく専用のワールドを作ることをおすすめします。その際に、「<font color=limegreen>コマンドの許可</font>」はオンにしておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/0a696709-15a2-4576-8eb9-f04c3723f052.png)

前置きが長くなりましたが、ここからMinecraftのコマンドの基礎と、「最強の剣」の作り方について考えていきます。

# 1. コマンドの基本
### 「コマンド」とは？
Minecraftのコマンドは、本来ゲームの挙動を確かめるためのツールみたいなものです。"<font color=magenta>Command</font>"を直訳すると、「<font color=magenta>命令</font>」です。要はMinecraftに対し、<font color=limegreen>色々な操作をすることを命令する手段</font>というわけです。
好きな状態のアイテムを取得し、好きな状態のモブを召喚し、自由に組み合わせて少ない労力と時間でMinecraftの様々な現象を再現して検証することができます。
この機能を使い、ゲームを上手く操作すれば、カスタムアイテムやミニゲーム等、本来のMinecraftには無い内容を追加して遊ぶことができるのです。

### コマンドの構造
そんな命令は基本的に、「<font color=orange>誰が</font>」「<font color=green>どこで</font>」「<font color=skyblue>誰もしくは何に</font>」「<font color=darkkhaki>何を</font>」「<font color=gray>する</font>」の形で書かれます。それを踏まえて、次のコマンドを見てみましょう。
```
/give @s minecraft:netherite_sword 1
```
ネザライトの剣を与えるコマンドです。チャット欄に入力し、そのまま送信することで実行すると、インベントリにネザライトの剣が一つ追加されるはずです。
この例で、コマンドの基本の構造を見ていきましょう。
この場合は、「<font color=orange>自分が</font>」「<font color=green>その場で</font>」「<font color=skyblue>自分に</font>」「<font color=darkkhaki>ネザライトの剣を一つ</font>」「<font color=gray>与える</font>」コマンドとなっています。これらの要素をひとつひとつ、詳しく説明していきます。

#### 「<font color=gray>する</font>」－　コマンドの種類
基本的に、```/``` のすぐ後に書かれるコマンドの名前が「<font color=gray>全体でおおまかに何をするか</font>」、を決めます。この場合は```give```、つまりアイテムを誰かに与えます。どのアイテムなのか、個数はいくらなのか、といったものはここでは指定せず、ただ「<font color=gray>アイテムを与える</font>」という合図になっています。

#### 「<font color=skyblue>誰に</font>」－　ターゲットセレクター
続く<font color=skyblue>```@s```</font>は、「<font color=skyblue>誰に</font>」に該当する部分です。<font color=skyblue>```@```</font>から始まるコマンドの要素は、「ターゲットセレクター」といい、コマンドで指定される「<font color=skyblue>誰に</font>」や「<font color=skyblue>誰を</font>」を管理する中心となります。ここで使われている<font color=akyblue>```@s```</font>は、「コマンドを実行した者」が対象であり、必然的に自分にアイテムが与えられます。また、多くの場合は、ターゲットセレクターの代わりにプレイヤーのユーザー名を直接入力することもできます。

#### 「<font color=orange>誰が</font>」「<font color=green>どこで</font>」－　実行者と実行位置
先の項目でも触れた、「<font color=orange>コマンドを実行した者</font>」と「<font color=green>コマンドを実行した場所</font>」の要素です。コマンドは直接実行位置や実行者の入力をせずとも、実行時に必ずそれらを参照します。

実行者が変わると、<font color=skyblue>```@s```</font>のような対象との関係性が変化し、結果もそれにしたがって変わります。例にある```/give```コマンドを他のプレイヤーが実行した場合、アイテムは「<font color=skyblue>コマンドを実行したそのプレイヤー自身</font>」に渡され、自分自身には何も起こりません。

実行位置に関しては、```/give```の実行に居場所が影響しないので話が少しややこしくなってしまっていますが、<font color=skyblue>実行者</font>の時と同じ要領で、実行された座標を基点に、位置関係を参照する処理をするコマンドがあると考えていただくと、その役割が分かると思います。

#### 「<font color=darkkhaki>何を</font>」－　コマンド独自のパラメーター
最後は、コマンドのミソとなるパラメーターです。コマンドの最初に決めた、「<font color=gray>すること</font>」に、具体的に「<font color=darkkhaki>何を</font>」するかを指定し、ゲームへの命令を完成させます。```/give```は、アイテムの種類と個数、二つのこのタイプのパラメーターを持っています。つまり、「<font color=darkkhaki>ネザライトの剣一つを</font>」は、「<font color=darkkhaki>ネザライトの剣を</font>」「<font color=gold>一つ</font>」に分けられ、実際のコマンドでも分けて入力します。
このコマンドごとのパラメーターは、```/give```の場合は二つでしたが、コマンドによっては一つも無かったり、五つ必要だったりと、さまざまです。

### 名前空間とID
ここまで見ての通り、コマンドの記述は全て英単語で構成されています。Minecraftやコマンドに限らず、コンピューターにおける基本の言語は英語なので、それに沿ってコマンドも英語で構成されています。なので、<font color=darkkhaki>```minecraft:netherite_sword```</font>も日本語やローマ字ではなく、<font color=limegreen>半角の英語で入力する必要があります</font>。また、スペースはコマンドの要素を区切るために使っているので、元のアイテム名が二単語以上からなっている場合、代わりに```_```（アンダーバー）を使います。
ところで、アイテムを指定する際、```minecraft:```とあります。これは「**名前空間**」といい、ゲームの要素が誰に定義された、つまり誰に作られたものであるかを宣言する印です。```minecraft:netherite_sword```は「Minecraftが作ったネザライトの剣」ということになります。この「名前空間+英語のアイテム名」を、一般的には**ID**と呼びます。

:::note info
...と、ここまでコマンドの基本構造を解説しました。こう見ると、かなり複雑な印象を受けますが、上記のことは今すぐ完全に理解したり、覚えたりする必要はありません。ぼんやりと頭の隅に置いておいてください。
:::

### アイテムを強くする
今のコマンドで与えられた肝心のアイテムはただのネザライトの剣。これでは到底「最強」や「チート」とは称せないでしょう。もう一つ、コマンドを使って剣を強くします。
さきほど出したネザライトの剣を手に持ち、以下のコマンドを実行してみましょう。

``` :enchantコマンド
/enchant @s minecraft:sharpness 5
```
```/give```の時と同じ要領ですね。「<font color=orange>自身が</font>」「<font color=green>その場で</font>」「<font color=skyblue>自身に</font>」「<font color=darkkhaki>ダメージ増加Vを</font>」「<font color=gray>付与する</font>」コマンドです。ここでも、ダメージ増加のエンチャントは英名の"sharpness"がIDに使われています。

### 法外なダメージ
これで剣のダメージが上がりましたが、「最強」を名乗るくらいなので、普通のサバイバルでも見受けられるレベル5なんて言わず、もっと大きいレベルも試してみましょう。

``` :ダメージ増加999
/enchant @s minecraft:sharpness 999
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/d34501dc-2c27-6f15-71f0-4f0a63a74c95.png)

...何やら赤いメッセージが表示されますね。```/enchant```は<font color=salmon>エンチャント台で付与できるエンチャントの最大レベルまで</font>しか付与できません。コマンドといえど、できないことはあります。```/enchant```に限らず、このような制限があることは少なくありません。そういう場合には、コマンドは実行されず、赤い<font color=salmon>**エラーメッセージ**</font>が表示されます。
しかし、このままでは強いエンチャントが付与できません。どう剣のダメージを増やしましょうか。

# 2. アイテムコンポーネント
### アイテムの「構成要素」
そこで登場するのが、<font color=darkkhaki>**アイテムコンポーネント**</font>です。"<font color=magenta>Component</font>"は直訳して「<font color=magenta>構成要素</font>」。アイテムコンポーネントは**アイテムの構成要素**ということになります。性質や挙動など、そのアイテムの持つデータを保持してゲームに反映することを「構成」と称している感じですね。

![item_components.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/dd123266-e25f-80f6-00ad-8150010f0d22.png)

これは、ネザライトの剣がデフォルトで持っているコンポーネントの一部です。アイテムの名前や表示するテクスチャ、耐久値を含む各種数値まであります。さらにはネザライトが素材のアイテム特有の、火に燃えない性質等もここで設定されています。

### コンポーネントでカスタマイズ
コマンドを使えば、このアイテムコンポーネントを自由に編集してアイテムを好きな状態にさせることができます。次のコマンドを実行してみましょう。
```:item_nameを設定したアイテム
/give @s minecraft:stick[minecraft:item_name="鋭い棒"] 1
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/7944c992-4bce-f991-3ee7-19ec27fc7f01.png)
名前の変わった棒が手に入りますね。
### コンポーネントの記述法
そして、コマンドはさきほどと同じ```/give```ですが、```minecraft:stick```の後ろに```[ ]```で括られた箇所があります。これが、```/give```でアイテムコンポーネントを指定や編集をする場所です。
アイテムの名前を編集するので、最初に"minecraft:item_name"と、コンポーネントのIDを書きます。続く```=```は「<font color=limegreen>後にくる内容を割り当てる</font>」サインです。"鋭い棒"を囲む ```"```（ダブルクオーテーション）は、割り当てられるものが数字ではなく文字列であることと、その文字列がどこまで続くかをゲームに伝える役割を持っているので、忘れないようにしましょう。
このコンポーネントが加わったことにより、コマンドの「<font color=darkkhaki>何を</font>」の部分が「<font color=darkkhaki>**アイテム名が"鋭い棒"の**棒を一つ</font>」という、さらに細かい設定になります。
### enchantmentsコンポーネント
コンポーネントの書き方を見たところで、「最強の剣」に戻りましょう。コンポーネントには、```minecraft:enchantments```という、アイテムに<font color=violet>付与されている</font>エンチャントを管理する種類があります。```/enchant```との違いは、エンチャントを付与する過程を飛ばし、「<font color=violet>エンチャントが既に付与された状態</font>」でアイテムを与えることができる点です。この性質により、```/enchant```にはあった制約を無視してエンチャントを適用することができます。ではコマンドはどうなっているのでしょうか。
```:ダメージ増加999
/give @s minecraft:netherite_sword[minecraft:enchantments={"minecraft:sharpness":999}] 1
```
また一段と複雑な見た目ですね。しかし、```=```までは```item_name```と同じ構造です。```[ ]```の中で編集するコンポーネントを挙げ、値を割り当てています。ただ、その割り当てられる値が```{ }```にもう一層くくられています。これは、```enchantments```のコンポーネントがさらに細かい設定を持っているからです。「このエンチャントが付与されている」ということだけでなく、「どれだけのエンチャントがどのレベルで付与されているか」、と複数の情報が一つのコンポーネントで管理されています。
また、レベルを割り当てる際、 ```:```（コロン）が使われています。実は、```:```で割り当てることの方が主流で、```=```はコマンドでコンポーネントを指定するときにしか使われません。```{ }```が出てくる場合は、```<指定する対象>: <指定する値>```が割り当ての基本と覚えておきましょう。

::: note info
付与されているエンチャントの名前も、"minecraft:"がついていますね。ここでも指定に使うのはエンチャントの表示名ではなく、IDなのです。
:::
もし、ダメージ増加999に加え、ノックバック999も付与するのならば、```{ }```内の記述は以下のようになります。
```:エンチャントが二つ
{"minecraft:sharpness":999,"minecraft:knockback":999}
```
### ゲームの限界
では、実行して剣を与えてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/3935863c-7207-87c4-bfd5-0d191617d477.png)
またしても<font color=salmon>エラーメッセージ</font>が表示されましたね。レベルに問題があるようです。どうやら、コンポーネントから直接指定をしても、エンチャントはレベル255までしか付与できないようです。
これは、<font color=red>そもそもこの値が255より大きい数字に対応していない</font>ことにあります。どこかで上限を設けなければ、数字だけで情報が多くなりすぎてコンピューターがまともに計算ができなくなる、と言った感じです。エンチャントはレベルが高くても5程度が関の山なので、設定できる範囲が255までに抑えられたのでしょう。
こればかりはどうしようもないので、素直にレベルを255に設定しなおしましょう。
```:ダメージ増加255
/give @s minecraft:netherite_sword[minecraft:enchantments={"minecraft:sharpness":255}] 1
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/7dc91df8-ee91-2fdd-693c-1aa1f3b9b118.png)
レベルの表示がおかしいですが、ちゃんと機能します。
少し試し斬りをしてみると、エンダーマンや、アイアンゴーレム等の体力が多いモブも一撃で倒せることが分かります。

![wither.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/84ed0620-abb9-bcee-ba3e-fca5f178799b.gif)

...しかし、ウィザーほど体力が高くなるとそうはいきません。エンチャントではどう頑張ってもこれが限界なので、これ以上のダメージを出すのには、何か別の手段を考えなければなりません。

# 3. Attribute
### 
エンチャントでダメージを上昇させるのが限界なら、値を上乗せする形ではなく、素の攻撃力を上げてみましょう。
さきほど紹介した、ネザライトの剣が持つコンポーネントをもう一度見てみましょう。
![item_components_attribute.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/b8c66059-c5c3-bf24-2e7b-82612d5638aa.png)

```attirbute_modifiers```とありますね。これは、<font color=royalblue>アイテムが装備時に与える攻撃力や防御力、"Attribute"を操作するコンポーネント</font>です。
"<font color=magenta>Attribute</font>"は直訳して「<font color=magenta>属性</font>」。アイテムの数値的な性質、という意味です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/9f0f8393-4eea-3a8e-078e-2ae8c9b97098.png)

防具等のツールチップに見られるこういった表記は、そのアイテムの持つAttributeを表しています。Attributeは割り当てられる数値がエンチャントよりも高く設定されており、設定次第でウィザーでも一撃で倒せる攻撃力を作ることができそうです。
ですが、```attribute_modifiers```コンポーネントを使う前に、Attributeそのものについて知っておきましょう。

### コマンドでAttributeを変更する
このAttribute、実は専用のコマンドも持っています。次のコマンドを実行してみましょう。
```:/attribute
/attribute @s minecraft:movement_speed base set 0.15
```
その後、移動してみると、足が速くなっていることが分かると思います。
```/attribute```は、「<font color=gray>プレイヤーやモブの持つAttributeを管理する</font>」コマンドです。「<font color=skyblue>自身</font>」の「<font color=darkkhaki>移動速度</font>」を「<font color=gray>管理</font>」するわけですが、そこに<font color=gray>```base set```</font>と続きます。これは**サブコマンド**といい、一つのコマンドが複数の機能を持つとき、どの機能を使うか分岐する際に使われます。「<font color=gray>base値の設定</font>」を「<font color=gray>管理</font>」するように全体の指示を補完しています。

ところで、ターゲットセレクターが<font color=skyblue>```@s```</font>ですが、なぜ対象がプレイヤーなのでしょうか。本来Attributeは、アイテムではなく、**モブがデフォルトで持っている数値**だからです。```/attribute```にも出てきた、```base```というのはモブが持つそのAttributeの基礎値です。

![attributes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/f2a3ae64-cf28-1073-e699-d10dcbc6ca83.png)
これは、プレイヤーが持っているAttributeの一部です。コンポーネントと同じく、多彩ですね。攻撃力や防御力、移動速度やジャンプの高さなどもAttributeで管理されています。

```
/attribute @s minecraft:movement_speed base set 0.1
```
さきほど変更した、移動速度のAttributeは元に戻しておきましょう。

### Attribute Modifier
モブはこのようにAttributeの基礎値を持っていますが、アイテムは、```attirbute_modifiers```コンポーネントを通し、その基礎値に"<font color=coral>**Attribute Modifier**</font>"を適用して、ゲームに反映される全体のAttributeを算出します。

アイテムはひとまず置いておき、Attribute Modifierを追加するコマンドは、以下のようになります。

``` :/attributeを用いたAttribute Modifierの適用
/attribute @s minecraft:movement_speed modifier add minecraft:my_modifier 0.05 add_value
```
base値を変更したときと同じ効果が得られると思います。
```:Attribute Modifierを消す
/attribute @s minecraft:movement_speed modifier remove minecraft:my_modifier
```
::: note info
"Attribute Modifier"は少々名前が長いので、ここからは"Modifier"と略します。正しい名称は"Attribute Modifier"なので間違えないようにしましょう。
:::

#### Modifierの追加
先ほどは```base set```となっていたサブコマンド群が```modifier add```になっています。ここで、管理する対象が基礎値ではなく、<font color=coral>Modifer</font>であることを宣言しています。つまり、全体としては「<font color=gray>Attributeに**Modifier**を**追加する**</font>」コマンドになります。

![attribute_modifiers.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/ce4939b6-c9bb-9d1c-ac61-e638c12f9a0b.png)

#### 自身のID
追加するAttribute Modifierですが、```minecraft:my_modifier```となっています。これは、モブが同じAttributeに対するModifierを複数持っているときに、どのModifierのことを指しているのか区別する**ID**です。IDは<font color=limegreen>自作のものを追加できる場面</font>もあります。「一つのAttribute Modifierを0から設定して作って追加する」ということは「もともとMinecraftには登録されていない要素を追加する」ことを意味するので、当然、Minecraftはその要素のIDは用意していないわけです。

#### 値とModifierの型
続く```0.05```はModifierが持つ値です。しかし、この値だけだと、Modifierは完結しません。Modifierは自身が持つ値を使って、どう対象の基礎値を編集するかをいくつかのパターンから指定できます。なので、さらにサブコマンドを派生させて、Modifierの型を示します。今回は```add_value```、単純な加算を使います。

### attribute_modifiersコンポーネント
では、このAttribute Modifierをアイテムに持たせてみましょう。
```:Attribute Modifierを付与する剣
/give @s minecraft:netherite_sword[minecraft:attribute_modifiers=[{type:"attack_damage",id:"my_modifier",amount:2048,operation:"add_value"}]]
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/20f6fbf5-6390-2514-abbb-119986e8ceef.png)
これは...！

しかし、コンポーネントがさらに複雑な構成になっています。```[ ]```の中に```{ }```で括られた複数の情報がまとめられています。
このままでは見にくいので、少し```[ ]```の中身を整理してみましょう。
```json: attribute_modifiersコンポーネントの中身
[
    {
        type: "attack_damage",
        id: "my_modifier",
        amount: 9999,
        operation: "add_value"
    }
]
```
見やすくなったのではないでしょうか。```[ ]```の中に、それぞれが一つのAttribute Modifierを管理する```{ }```があります。

### 実は...
値が割り当てられている四つの項目ですが、<font color=limegreen>/attributeでAttribute Modifierを追加するときに指定する項目と全く同じものになっています</font>。さきほどのコマンドをコンポーネントに落とし込んだ感じですね。それにあたって、Modifierのどの要素に値を割り当てるのかを示す、名前がそれぞれにつけられています。

### 試してみる
![warden.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/38b3a2f2-60cc-c396-4607-951c9a714b5c.gif)

ウィザーより体力が高いウォーデンでも一撃です。これで、晴れて「最強の剣を出すコマンド」が完成しましたね。

# 4. 便利ツール
今回紹介したコマンドの構文、アイテムコンポーネント、Attributeはすでに言ったように、数ある中のほんの一部にすぎません。その全てをこの記事一つで網羅するのは不可能ですし、したところでその膨大な数は覚えきれません。こういう場合におすすめできるのは、情報をまとめたサイトや、外部の生成ツールを使うことです。ということで、コマンドの記述に役立つサイトを二つ、挙げておきます。

### [Minecraft Wiki](https://ja.minecraft.wiki/)
安心と信頼のWikiページです。ゲームプレイにとどまらず、技術的な情報もしっかりとまとめられています。特に、アイテムコンポーネントやAttributeが一覧としてまとめられているページもあり、手早く欲しい情報が得られます。
- [コンポーネント一覧](https://ja.minecraft.wiki/w/%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88#%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E4%B8%80%E8%A6%A7)
- [Attribute一覧](https://ja.minecraft.wiki/w/%E5%B1%9E%E6%80%A7#%E5%B1%9E%E6%80%A7%E4%B8%80%E8%A6%A7)

さらには、全てのコマンドの解説記事があり、書き方や仕様も全て確認できます。コンポーネントやAttributeと同じく[一覧](https://ja.minecraft.wiki/w/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7)もあります。

### [MCStacker](https://mcstacker.net/)
要素を少し入力するだけで、<font color=limegreen>一部のコマンドをまるごと自動生成できる</font>ツールです。コンポーネントが沢山ついていて、チャット欄に手動で入力するのには複雑すぎるアイテムを与える```/give```コマンドでも、値を指定するだけでミスなく出力されます。サイトの言語が英語で、かつこの記事で解説をしていないものが多く含まれていますが、わりと<font color=limegreen>直感的に扱える良サイト</font>です。

# おわりに
ここまでで、Minecraftのコマンドの基本の考え方と、アイテムが管理される仕組み、そしてモブが持つ数値を解説しました。
一度では理解できる情報の分量と内容ではないので、実際に自分で試しつつ、時間を空けてこの記事を[読み返してみてください](#1-コマンドの基本)。言葉だけでは説明が難しい部分への理解が深まると思います。
足りない情報があれば上記のツールなどで補い、楽しくコマンドで創作していきましょう。

では、よきコマンドライフを。
<br></br><br></br><br></br><br></br><br></br>
# [最強...?](https://qiita.com/firgde/items/d3598d58d1840930d469)
![zombie.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924021/f4f80493-1d7c-2bc4-6590-4d904038aae4.gif)