コマンドで遊ぼう

:::note info
この記事はマインクラフト(Java Edition) バージョン 1.20.2 に合わせて書かれています。
:::

　マインクラフトには様々な「コマンド」が用意されています。これは本来、好きな場所に瞬間移動したり天候を変更したりなど、ゲームプレイを便利にするためや細かなゲームの設定を行うときのために用意されていたものでした。それがいつしか、マインクラフトの中で簡単なPvPゲームから長編RPGまで様々な遊びを作れるほどに増えています。
　私にとってコマンドの始まりは、変わったエンチャントの剣や装備を出して戦ったり、おかしな設定のモブを召喚したり、いろんなブロックで埋め尽くして巨大物をつくったりするところでした。これらのコマンドは何も高度なことはありませんが、確かに楽しさがありました。多くのマインクラフターがはじめはそんな遊び方でコマンドに触れてきたのではないかと思っています(過言)。そこで今回は、これからコマンドに触れる初心者に向けて、チャット欄から実行できるコマンドを使った遊びを紹介していきたいと思います。細かい部分を解説すると長くなりすぎてしまうので、ここではあくまで紹介と簡単なキーワードの解説にとどめます。
 
## コマンドの使い方
### チートを有効にする
　コマンドは様々なことが可能になるため、ワールドやサーバーの設定でチートを有効にしないと使用することができません。ワールドの作成時に、下の画像のように「チートの許可」がオンになっていればチートが有効になります。基本的に、ゲームモードにてクリエイティブモードを選択すればここも自動的にオンになります。
 
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/b843945d-375d-d472-90d4-16e78946a479.png)

`/help`とチャット欄に打って実行すると、実行可能なコマンドの一覧が表示されますが、たくさんチャット欄に表示されていればチートの有効化が成功しています。

![2023-11-30_17.27.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/3e943d38-5a33-536f-9291-0c267631f9b4.png)
▲ **チート無効時**

![2023-11-30_17.27.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/2ec7f12a-27e7-aa3c-2fd0-97272d17e665.png)
▲ **チート有効時** `/help`を実行するといっぱい表示される

 チートが無効な状態で生成したワールドでコマンドを利用したい場合は、LAN公開を利用する方法と、ワールドのデータを書き換える方法がありますが、後者はやや説明が長く前提知識が多いため省略します。LAN公開を利用する方法では、ゲームメニューから「LANに公開」を開き、「チートの許可」をオンにして「LANワールドを公開」をクリックすることでできます。あくまでLAN公開の付属的な機能なので、普段からポート開放やLANワールドの公開をしている方はLAN公開によるリスクがある場合は十分注意する必要があります。

![2023-11-30_17.44.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/489635f2-725b-679a-d910-f6441c58d686.png)
▲ **LANに公開**

![2023-11-30_17.44.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/f8971919-3db7-1472-01cf-c283b845f195.png)
![2023-11-30_17.45.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/50fbc5a8-66ca-33de-1f66-49348fd4d369.png)
▲ **チートの許可をオンにし、左下のLANワールドを公開をクリックする**

### チャット欄で実行する
　チートが有効なワールドで、以降紹介されたコマンドをチャット欄にコピー&ペーストして実行することで使用できます。チャット欄以外から実行する方法としてコマンドブロックやデータパックというものもありますが、今回は必要ありません。コマンドブロックを用いた遊びについては次の記事にて紹介します。
 
 ![2023-11-30_17.57.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/d1a49c61-879b-7bf9-0410-c0c2e89a12d6.png)
▲ **チャット欄にコピー&ペーストする**

## コマンド例 一覧

### ダメージ増加エンチャントを最大レベル付与した高威力の剣
 ```
/give @s minecraft:diamond_sword{Enchantments:[{id:"minecraft:sharpness",lvl:127b}]}
 ```
 自分(`@s`)にレベル127のダメージ増加エンチャントをつけたダイヤ剣(`diamond_sword`)を渡す(`/give`)コマンド。`minecraft:diamond_sword`の後ろに続く`{Enchantments:[{id:"minecraft:sharpness",lvl:127b}]}`がレベル127のダメージ増加エンチャントを指定している部分です。
 
![2023-11-30_17.56.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/9072fdc8-debf-afa0-de7f-ea96b9ffb1e8.png)
▲ **すごい強い剣**

### ノックバックエンチャントをレベル20付与した木の棒。
 ```
/give @s minecraft:stick{Enchantments:[{id:"minecraft:knockback",lvl:20b}]}
 ```
　先のコマンドと同様にして、レベル20のノックバックを付与した棒を取得するコマンド。
 
 ![Minecraft 1.20.2 - シングルプレイ 2023-11-30 19-24-15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/5a2b8bcf-d7ea-9eb1-6b73-91cf39ea00f6.gif)
▲ **すごいぶっ飛ぶ棒**
 
### 体力が1000(ハート500個分)増加するチェストプレート
 ```
/give @s minecraft:diamond_chestplate{AttributeModifiers:[{AttributeName:"generic.max_health",Slot:"chest",Operation:0,Amount:1000.0d,UUID:[I;1,1,1,1]}]}
 ```
　こちらはエンチャントではなく「属性(attribute)」と呼ばれるものを付与したアイテムで、エンチャントとはまた異なった能力を付与することができます。ここでは「胴体に装備した者の最大体力を1000(ハート500個)増やす」という属性をダイヤのチェストプレートに付与しており、実際に着ると体力が非常に増えます。

 ![2023-11-30_19.41.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/9285e558-8315-4d22-f712-987ca29c9709.png)
![2023-11-30_19.41.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/498a60d9-06ff-d72a-3be3-25f7b35eb89a.png)
▲ **めちゃくちゃ体力が増える防具** 胴体に着けると最大体力が1000(ハート500個分)増える

### すごい俊足になるブーツ
```
/give @s minecraft:diamond_boots{AttributeModifiers:[{AttributeName:"generic.movement_speed",Slot:"feet",Operation:0,Amount:3.0,UUID:[I;1,1,1,1]}]}
```
　先のコマンドと同様にして、「足に装備した者の移動速度を増やす」という属性を付与したダイヤのブーツを取得するコマンド。`generic.movement_speed`という属性を`3.0`増やしていますが、厳密に3m/sなど速くなるといったわけではなく、内部的な計算に用いる値が変わるようです。

 ![2023-11-30_20.14.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/e0a7ad7f-5650-35f3-3bcc-73213d7f24e9.png)
![Minecraft 1.20.2 - シングルプレイ 2023-11-30 20-17-16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/2113089c-c8de-482a-d52c-cd99d9f183c4.gif)
▲ **めちゃくちゃ足が速くなる装備**

### ネザライト装備一式を付けたゾンビ
```
/summon zombie ~ ~ ~ {ArmorItems:[{id:"netherite_boots",Count:1b},{id:"netherite_leggings",Count:1b},{id:"netherite_chestplate",Count:1b},{id:"netherite_helmet",Count:1b}],HandItems:[{id:"netherite_sword",Count:1b},{}]}
```
　ネザライトの装備(`ArmorItems`)や武器(`HandItems`)を付けたゾンビ(zombie)をいまいる場所(`~ ~ ~`)に召喚する(`/summon`)コマンド。コマンドが長くなり256文字以上になるとチャット欄から実行することができなくなるためこれ以上は盛ることができず、さらに複雑なモブを召喚する場合は、コマンドブロックなどを利用する必要があります。

![2023-11-30_20.43.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/f27009cf-5f19-e4a2-1e1f-9ad93d76041d.png)
▲ **ネザライト装備一式を付けたゾンビ**

### すぐ爆発するクリーパー
```
/summon creeper ^ ^ ^3 {Fuse:0s,ExplosionRadius:5b}
```
　召喚した瞬間に爆発するクリーパーを3m前に召喚するコマンド。`^ ^ ^3`が3m前方を意味し、`Fuse`が爆発までの時間を設定するもので、それを`0`にすることで一瞬で爆発するようになります。また、`ExplosionRadius`は爆発の強さを設定するもので、通常`3`のところを`5`にすることで爆発威力を上げています。

![Minecraft 1.20.2 - シングルプレイ 2023-11-30 21-04-53.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/8c1678cf-85fd-18db-7e28-9e17bfb7843c.gif)
▲ **すぐ爆発するクリーパー**


:::note info
`0s`や`5b`のように数字の後ろに文字がついていることがありますが、これは「型」というもので、説明は省略しますが、形式的に付けたままにしておくことを推奨します。(つけなくてもある程度動作はする)
:::

### ニワトリ三兄弟
```
/summon minecraft:chicken ~ ~3 ~ {Passengers:[{id:"minecraft:chicken",Passengers:[{id:"minecraft:chicken"}]}]}
```
　(プレイヤーの足元を基準に)3m上空に、ニワトリを乗せたニワトリを乗せたにニワトリを召喚するコマンド。`~ ~3 ~`が3m上空を意味し、`Passengers`はエンティティに乗せるエンティティを設定するものです。
 
![2023-11-30_21.04.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/9dc8bd87-2a58-b202-9bb1-7d0190b59208.png)
▲ **ニワトリ三兄弟**
 
### 動かないエンダードラゴン
```
/summon minecraft:ender_dragon ~ ~ ~ {NoAI:1b}
```
　動かないエンダードラゴンを召喚することができるコマンド。`NoAI:1b`をつけることによって、モブのAIを切ることができるため、置物のようになります。エンダードラゴン以外にも様々なモブで使うことができます。

![2023-11-30_21.10.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/568a69b9-14fb-925b-5b52-a56a58589d63.png)
▲ **NoAIにしたエンダードラゴン**　じっくり見ることができる。ただし鳴き声はうるさい。

### 超機動力のウマ
```
/summon horse ~ ~ ~ {Attributes:[{Name:"generic.movement_speed",Base:1.0},{Name:"horse.jump_strength",Base:2.0}],SaddleItem:{id:"minecraft:saddle",Count:1b},Tame:1b,Invulnerable:1b}
```
　移動速度とジャンプ力を強化した馬を召喚するコマンド。ここでは馬の属性にある移動速度`generic.movement_speed`(デフォルトが約0.1~0.3)とジャンプ力`horse.jump_strength`(デフォルトが0.7)の値をデフォルトよりも高くしています。最初から乗れるように、`Tame:1b`をつけて馬を懐いた状態にし、`SaddleItem`を設定することでサドルを付けた状態で召喚しています。また、ジャンプ力が高すぎて落下ダメージをうけるため、`Invulunerable:1b`を付けることでダメージを受けない無敵状態にしています。
 
![Minecraft 1.20.2 - シングルプレイ 2023-11-30 21-29-29.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/4b3e97da-fa8e-d8a5-59a8-540c1bc60e76.gif)
▲ **超機動力のウマ**　たのしい

### くそでかファントム
```
/summon minecraft:phantom ~ ~ ~ {Size:64,ArmorItems:[{},{},{},{id:"minecraft:diamond_helmet",Count:1b,tag:{Enchantments:[{id:"fire_protection",lvl:255}]}}]}
```
　めちゃくちゃでかいファントムを召喚するコマンド。`Size`を0~64の間で変更することでサイズを変えられます。また、ファントムは通常日に当たると燃えてしましますが、レベル255のような高レベルの火炎耐性を付けた防具を装備させることで防ぐことができます。

 ![2023-11-30_21.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/16919137-850f-2288-741b-f76131ba020b.png)
▲ **くそでかファントム**

### いろんなモブにライド
```
/ride @s mount @e[type=!player,limit=1,sort=nearest]
```
　自身(`@s`)を一番近いプレイヤー以外の一番近いエンティティ(`@e[type=!player,limit=1,sort=nearest]`)に乗せる(`/ride .. mount`)コマンド。`@e`に続けて書かれている`[]`内で、`type=!player`でプレイヤー以外、`limit=1,sort=nearest`が一番近くを指定する。
 
![2023-11-30_22.22.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/5c03495a-52fb-54d4-078e-28c0eccaf45e.png)
▲ **クリーパーに乗る**

### アイテムを被る
```
/item replace entity @s armor.head with minecraft:glass 1
/item replace entity @s armor.head with minecraft:beef 1
/item replace entity @s armor.head with minecraft:bone 1
/item replace entity @s armor.head with minecraft:end_rod 1
```
　ガラスブロック(`glass`)や骨(`bone`)を自身(`@s`)の頭装備(`armor.head`)に設置する(`/item replace entity .. with ..`)コマンド。アイテムによって被り方は様々で、基本的にはヘルメットのように被るか頭の上に乗せますが、骨(`bone`)、エンドロッド(`end_rod`)、望遠鏡(`spyglass`)、避雷針(`lightning_rod`)、生鱈(cod)、トライデント(`trident`)などは特殊な付き方をします。

 ![2023-11-30_22.23.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/3d626521-84b4-5fb4-0b6a-a13d89d92672.png)
▲ **ガラスブロック**

![2023-11-30_23.03.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/f99dafdc-2670-66bf-267f-21cd99152e0c.png)
▲ **生の牛肉**

![2023-11-30_22.24.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/dbae9d3b-76f4-bdc6-618f-fd960b7c613f.png)
▲ **骨**

![2023-11-30_22.47.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/04062863-174f-4b83-188b-2f399020a56a.png)
▲ **エンドロッド**

### プレイヤーヘッド
```
/give @s minecraft:player_head{SkullOwner:"DinnerBone"}
```
　特定のプレイヤーの頭を入手するコマンド。自身の名前などを`SkullOwner`に記入することで頭を入手できる。(悪用には注意)
 
![2023-11-30_23.01.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493213/f4d31a2c-8336-c085-6140-114cfac10363.png)
▲ **プレイヤーヘッド**