マイクラでカスタム雪だるまを作る


前提

  • MineCraft Java Edition 1.20.1

やりたいこと

雪だるまを投げ合ってスプラトゥーン的な陣地取りゲームをマイクラで作れたら?

結果的にはこんな感じで作れました。

どうすればいいのか?

次の二つのコマンドをコマンドブロックを使って設定することで実現できます。

カスタム雪玉の生成コマンド(Impulseブロックを使って都度補給)

/give @p minecraft:snowball{display:{Name:"{\"text\":\"まめ - blue\"}"}} 16

カスタム雪玉の効果設定コマンド(Repeatブロックを使って常時実行)

execute as @e[type=minecraft:snowball, nbt={Item:{tag:{display:{Name:"{\"text\":\"まめ - blue\"}"}}}}] at @s unless block ~ ~-1 ~ air run setblock ~ ~ ~ minecraft:blue_carpet

コマンド解説 – カスタム雪玉生成

コマンドの構造

  • /give @p
    最も近くにいるプレイヤー(@p)にアイテムを与える命令
  • minecraft:snowball
    与えるアイテムが雪玉であること
  • {display:{Name:"{\"text\":\"まめ - blue\"}"}}
    • displayタグはアイテムの表示に関するプロパティをまとめるため
    • Nameタグでは、アイテムに表示する名前を設定しており、ここではJSON形式で "まめ - blue" と指定
  • 16
    最後の数字は、与えるアイテムの個数を示す

全体の流れ

  1. 対象の選定:
    コマンドは最も近いプレイヤー(@p)を対象にしているので、コマンドを実行した場所にいるプレイヤーが受け取る
  2. アイテムの指定:
    アイテムとして「雪玉(minecraft:snowball)」を選択し、そのアイテムに対してNBTデータでカスタム名(まめ - blue)を設定
  3. 個数の指定:
    16個の同じカスタム名が付いた雪玉をプレイヤーに与える

コマンド解説 – カスタム雪玉の効果設定

1. 対象となる雪玉の指定

  • @e[type=minecraft:snowball, nbt={Item:{tag:{display:{Name:"{\"text\":\"まめ - blue\"}"}}}}]
    • すべての雪玉エンティティの中から、NBTデータにより名前が「まめ – blue」と設定されているものだけを対象する
      • type=minecraft:snowball: 雪玉であることを指定
      • nbt={Item:{tag:{display:{Name:"{\"text\":\"まめ - blue\"}"}}}}: 雪玉に付与されたアイテム情報の中で、表示名(Name)が「まめ – blue」であるものに絞り込む

2. 実行位置の指定

  • execute as [対象の雪玉] at @s
    • これにより、選ばれた雪玉それぞれの位置でコマンドを実行するよう指示
    • @sは「現在の実行主体」を意味し、ここではそれぞれの雪玉になる

3. 条件付き実行(着地判定)

  • unless block ~ ~-1 ~ air
    • この部分は、「現在位置の一つ下のブロック(相対座標で~ ~-1 ~)が空気(air)ではない場合」にのみ、次のコマンドを実行する
    • つまり、雪玉が空中にある場合は何も起こらず、地面や他のブロックに当たった(着地した)場合にのみ後続の処理が実行される

4. ブロックの設置

  • run setblock ~ ~ ~ minecraft:blue_carpet
    • 着地が確認された雪玉の現在位置(~ ~ ~)に、青いカーペットminecraft:blue_carpet)を置く

全体の流れ

  1. 選択: 「まめ – blue」という名前の付いた雪玉を全て対象とする
  2. 位置指定: それぞれの雪玉の位置で次の処理を行うようにする
  3. 条件チェック: 雪玉の真下のブロックが空気でなければ(=雪玉が何かに当たっている場合)
  4. 設置: 雪玉の位置に青いカーペットを置く

まとめ

二つのコマンドを実行するだけでマイクラに独自のゲーム性を追加することができました。1.20.5以降は仕様が変わってしまうため注意が必要ですが、このやり方を使うとマインクラフト上にいろんなオリジナルゲームを作れそうです。

参考

https://note.com/nashidaicraft/n/n5cbfe8dce434