この記事では、Minecraft Java Edition(バージョン1.19.3)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
コマンドで名前を付けるシステムを作りたいマインクラフター
「コマンドを使って、RPGみたいにプレイヤーに名前をつけるシステムを作りたいなぁ。どうやって作ればいいのか教えて!」
こんな疑問を解決します!
- storageから名前のデータを取り出す
こんにちは! マインクラフターのなつめ(@natsume_717b)です。
マイクラ歴は5年程で、最近は脱出マップやミニゲームを制作しています!
→ダウンロードページ
この記事では、自分が入力した名前をチャット欄や画面に表示させる方法について解説していきます。
イメージとしては、RPGで主人公に名前を付けるような感じです。
プレイヤーの名前を設定することで、会話などに現れる単語が変化します。
storageというコマンド初心者には聞き慣れないものを使いますが、分かりやすく説明しましたので、ぜひ挑戦してみてください。
さっそく見ていきましょう!
storageから名前のデータを取り出す
RPGゲームのように名前を入力し、それをチャット欄や画面に表示させるにはstorageを扱う必要があります。
storageとは、データの保管庫のような場所で好きなデータを入れておくことが可能です。
なので今回は名前のデータをstorageに保存しておき、それを引き出しながらメッセージを表示するコマンドなどを使います。
1:下準備
まずは名前のデータを保存するためにガストと名札、金床を用意します。
名札と金床はクリエイティブモードで出してしまって問題ありません。
今回はガストに付けた名前をstorageに保管し、それを呼び出して名前を表示させます。
ガストにした理由は、当たり判定が大きいためです。
ガストは、動かれたり鳴き声がうるさいと面倒なので、コマンドで特殊なガストを召喚しましょう。
下記のコマンドを使うことで、動かず鳴かないガストを召喚出来ます。
/summon minecraft:ghast ~ ~1 ~ {NoAI:1b,Silent:1b}
そして、この召喚したガストに名札を使って名前をつけます。
この時つける名前は好きな名前で大丈夫です。
2:名前のデータをstorageに保存する
次にdataコマンドを使って名前のデータをstorageに保管します。
/data modify storage player name set from entity @e[type=minecraft:ghast,limit=1] CustomName
このコマンドは1体のガストのCustomNameをplayerというstorageのnameというnbtに保存するというもの。
CustomNameは先ほど名札を使って付けた名前の事ですので、名前のデータをstorageに保存するわけです。
もしも複数のガストが存在する場合などはタグ付けで差別化するようにしましょう。
これで準備は完了です。
あとはメッセージを表示させるコマンドなどを使って表示させていきます。
3:入力した名前を表示させる
今回はtellrawコマンドとtitleコマンドの2種類を紹介していきます。
tellrawコマンドでメッセージを表示させるにはこちら。
/tellraw @a [{"text":"わたしは"},{"storage":"player","nbt":"name","interpret":true},{"text":"です"}]
上記のコマンドを実行すると、「わたしは○○です」というメッセージが全てのプレイヤーに表示されます。
○○の部分は先ほどガストに名付けた名前と同じです。
titleコマンドの場合は以下の通り。
/title @a title [{"storage":"player","nbt":"name","interpret":true}]
このコマンドを実行すれば、画面にガストに名付けた名前が表示されます。
重要なのは、{“storage”:”player”,”nbt”:”name”,”interpret”:true}という部分です。
この部分がplayerというstorageを指示し、nbtはnameを指定しているので、先ほどガストに名付けた名前が表示されるようになっています。
またinterpretをtrueにしていることで、余計な記号が付随して表示されないようにないようにしているので、忘れずに記述しましょう。
これで、自分が入力した名前をメッセージなどで表示することができます。
まとめ
というわけで、今回のまとめです。
今回使ったコマンドはこちら。
- 動かず鳴くことのないガストを召喚するコマンド
/summon minecraft:ghast ~ ~1 ~ {NoAI:1b,Silent:1b}
- 1体のガストのCustomNameを、playerというstorageのnameというnbtの中に保存するコマンド
/data modify storage player name set from entity @e[type=minecraft:ghast,limit=1] CustomName
- playerというstorageの中のnameというnbtを参照しながらメッセージを送信するコマンド
/tellraw @a [{"text":"わたしは"},{"storage":"player","nbt":"name","interpret":true},{"text":"です"}]
- playerというstorageの中のnameというnbtに保存されているものを画面に表示させるコマンド
/title @a title [{"storage":"player","nbt":"name","interpret":true}]
- 入力した名前を表示させるには、storageにデータを保存しておくことが大事で、そのために複雑な文字列を記入する必要もある。
この記事は以上になります。