ユキミ大福のマイクラBE生活

Minecraft統合版で遊んだりゲーム作ったりするブログ

コマンド構文解説-メッセージ送信、何が違うの?/me ( /say ), /tell ( /msg, /w ), /tellraw-

  投稿日:2021/04/24

最終更新日:2021/05/09

 

どうも、ユキミ大福です。

今回はMinecraft統合版のコマンドである『 /say 』『 /tell 』及び『 /tellraw 』について解説をしていきます。

ここで解説するコマンド等は、解説する注意事項等をよく読み、個人でより詳しく調べた上で、個人の責任において使用して下さい。コマンド等の使用によって如何なる損害が発生しても、筆者であり当ブログの管理者でもあるわたくしユキミ大福は一切の責任を負いかねますので、ご了承下さい。

 

今回のコマンドは?

今回ご紹介するコマンドは『 /me (ミー)』『 /say (セイ)』『 /tell (テル)』『 /msg (エムエスジー / メッセージ)』『 /w (ダブリュー)』『 /tellraw (テルロウ)』です。やたら沢山あるように見えますが、以下に示す通り、実際には3種類のコマンドになります。

  • /me = /say
  • /tell = /msg = /w
  • /tellraw

以後の解説では ↑ で青太文字で示したもののみを用いますが、それぞれの構文において、↑ でイコールの関係があるコマンドは、/XXX の部分をそのイコールで結んだものに入れ替えても動作します。

 

例)

/say <メッセージ>

=

/me <メッセージ>

↑ は同じコマンドとして動作する

 

さて「/say」「/tell」「/tellraw」はいずれも、プレイヤーにメッセージを送信するというものですが、役割や可能なことに微妙な差があります。まずは /say の構文から見てみましょう。

 

/say のコマンド構文

 

/say <メッセージ>

 

  • <メッセージ>:必須
    送信するメッセージを記述する。改行だけはできない(?)ので注意。(情報求む!)

 

/say の失敗条件

  • 構文が適切でない(スペルミス等)。

 

/say の成功条件

  • 上記の失敗条件を満たしていない場合。
  • コマンドが1人にしか成功しなくとも成功扱いとなる。
  • <メッセージ>内にプレイヤー1人を指定するターゲットセレクターが存在する場合、その部分がそのプレイヤーのゲーマータグに置き換えられる。
  • <メッセージ>内に複数人を指定するターゲットセレクターが存在する場合、その部分が「"(name 1)", "(name 2)", ..., "(name N)"」のように置き換えられる(「name N」はゲーマータグ)。

 

/say の実行例

例1)

コマンド:/say Good Morning!

実行結果:「Good Morning!」というメッセージをプレイヤー全員に送信する。

 

例2)

コマンド:/me Hello, @p !

実行結果:「Hello, (ゲーマータグ) !」というメッセージをプレイヤー全員に送信する。「@p」の部分は基準座標から1番近いプレイヤーのゲーマータグに置換される。

 

/say の詳細解説

/say の概要

/say ( /me )は入力したメッセージをプレイヤー全員に送信するコマンドです。マイクラの標準機能の1つにチャット欄でのメッセージ送信機能があり、この /say はそれとほぼ同等の機能を持っている言えますが、以下のような細かな違いが存在します。

  • メッセージの発信者( /say 実行者)の名前が「< , >」ではなく「 [ , ] 」で囲われる
  • メッセージ中のターゲットセレクターが、その対象名で置換される

以下の画像は、「Good Morning @p !」というメッセージを様々な方法で送信したものです。

f:id:YukimiD1999:20210424135117p:plain

コマンドを使わず、普通にメッセージを送信するとこうなる

f:id:YukimiD1999:20210424135305p:plain

/say を使い、チャット欄で実行するとこうなる

f:id:YukimiD1999:20210424135422p:plain

/say を使い、コマンドブロックで実行するとこうなる

コマンドブロックで /execute を経由せずに /say を実行した場合、「 [ , ] 」で囲われる実行者名は、コマブロ内の「ポイントした時の注意」になります。「ポイントした時の注意」がカラの場合は「!」に置換されます。

f:id:YukimiD1999:20210424135912p:plain

「ポイントした時の注意」を「GameMaster」にするとこうなる

 

/say の実行結果等々

コマンドの実行結果は「コマンドの成功」のみと思われます。

失敗した場合には…失敗例を挙げたかったのですが、このコマンドの先頭の「/say , /me」のスペルミス以外、まず失敗しないと思います。

コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」のみです。成功した場合、RSコンパレーターを用いてRS動力を取り出すと必ず1になります。

 

/say の強み・使い道

ゲーム制作においては、メッセージ欄に何かしらの文章を流したい場合に使用します。「/tell」「/tellraw」との使い分けについては、その2つの解説の後にしたいと思います。

 

/say の弱み・弱点

詳しくは「/tell」「/tellraw」との使い分けの部分で解説しますが、このコマンドは通常のメッセージ送信と同じく「特定のプレイヤーにのみ送信する」ことはできません。

 

 

続いては /tell の構文です。

 

/tell のコマンド構文

 

/tell <セレクター> <メッセージ>

 

  • <セレクター>:必須
    ターゲットセレクター。プレイヤーしか対象にできない。ゲーマータグを直接入力可。

  • <メッセージ>:必須
    送信するメッセージを記述する。改行だけはできない(?)ので注意。(情報求む!)

 

/tell の失敗条件

  • 構文が適切でない(スペルミス等)。
  • 指定したセレクターの条件に合う対象が存在しないか、読み込まれているチャンク内に存在していない。

 

/tell の成功条件

  • 上記の失敗条件を満たしていない場合。
  • コマンドが1人にしか成功しなくとも成功扱いとなる。
  • <メッセージ>内にプレイヤー1人を指定するターゲットセレクターが存在する場合、その部分がそのプレイヤーのゲーマータグに置き換えられる。
  • <メッセージ>内に複数人を指定するターゲットセレクターが存在する場合、その部分が「"(name 1)", "(name 2)", ..., "(name N)"」のように置き換えられる(「name N」はゲーマータグ)。

 

/tell の実行例

例1)

コマンド:/tell @p Good Morning!

実行結果:基準座標から1番近いプレイヤーに「Good Morning!」というメッセージを送信する。

 

例2)

コマンド:/msg @p Hello, @p !

実行結果:基準座標から1番近いプレイヤーに「Hello, (ゲーマータグ) !」というメッセージを送信する。「@p」の部分は基準座標から1番近いプレイヤーのゲーマータグに置換される。

 

例3)

コマンド:/w @a Have a good day, @p !

実行結果:全てのプレイヤーに「Have a good day, (ゲーマータグ) !」というメッセージを送信する。「@p」の部分は基準座標から1番近いプレイヤーのゲーマータグに置換される。

 

/tell の詳細解説

/tell の概要

/tell ( /msg , /w )は入力したメッセージを指定したプレイヤーのみに送信するコマンドです。このコマンドでメッセージを受信すると、そのメッセージが誰からのものなのかも表示されます。

f:id:YukimiD1999:20210424141745p:plain

/tell を使い、チャット欄で実行するとこうなる

f:id:YukimiD1999:20210424141834p:plain

/tell を使い、コマンドブロックで実行するとこうなる

/say と同様に、コマンドブロックで /execute を経由せずに /tell を実行した場合、表示される実行者名は、コマブロ内の「ポイントした時の注意」になります。「ポイントした時の注意」がカラの場合は「!」に置換されます。

f:id:YukimiD1999:20210424142143p:plain

「ポイントした時の注意」を「GameMaster」にするとこうなる

ちなみに「(プレイヤー名) にささやきました」となっている方は、コマンドブロックの実行結果表示なので「commandblockoutput」をfalseにすれば表示されなくなります。

 

/tell の実行結果等々

コマンドの実行結果は「コマンドの成功・失敗・エラー」のいずれかになります。

失敗した場合にはセレクターに合う対象がいない」と返って来ます。

コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」「コマンドが何人に対して成功したか(int)」の2点です。コマンドが成功した人数については、RSコンパレーターを用いてRS動力の形で取り出せます。

 

/tell の強み・使い道

ゲーム制作においては、特定のプレイヤーに対してメッセージ欄に何かしらの文章を流したい場合に使用します。「/say」「/tellraw」との使い分けについては、その2つの解説の後にしたいと思います。

 

/tell の弱み・弱点

詳しくは「/tell」「/tellraw」との使い分けの部分で解説しますが、このコマンドは「誰からのメッセージなのか」を非表示にすることはできません。

 

 

続いては /tellraw の構文です。

 

/tellraw のコマンド構文

 

/tell <セレクター> <rawtext>

 

  • <セレクター>:必須
    ターゲットセレクター。プレイヤーしか対象にできない。ゲーマータグを直接入力可。

  • <rawtext>:必須
    送信するメッセージをjson形式の文章で記述する。json形式の文章の記述法は ↓ の記事で解説します。
    (解説ページができ次第リンク貼ります)

 

/tellraw の失敗条件

  • 構文が適切でない(スペルミス等)。
  • セレクターの対象が読み込まれているチャンク内に存在していない。
  • jsonが間違っている(「 { , } 」等の付け忘れや付け過ぎに注意)。

 

/tellraw の成功条件

  • 上記の失敗条件を満たしていない場合。
  • <メッセージ(jsonテキスト)>内にプレイヤー1人を指定するターゲットセレクターが存在する場合、その部分がそのプレイヤーのゲーマータグに置き換えられる。
  • <メッセージ(jsonテキスト)>内に複数人を指定するターゲットセレクターが存在する場合、その部分が「"(name 1)", "(name 2)", ..., "(name N)"」のように置き換えられる(「name N」はゲーマータグ)。

 

/tellraw の実行例

例1)

コマンド:/tellraw @p {"rawtext":[{"text":"Good Morning!"}]}

実行結果:基準座標から1番近いプレイヤーに「Good Morning!」というメッセージを送信する。

 

 

/tellraw の詳細解説

/tellraw の概要

/tellraw は入力したjson形式のメッセージを指定したプレイヤーのみに送信するコマンドです。このコマンドではjsonというデータ形式でメッセージ文章を作成しなければならないため、一見すると手間のかかる /tell の劣化版のように見えるかもしれません。

しかしそれ故に /say や /tell では不可能な、/scoreboard で設定したスコアの数値の表示等も可能です。詳しくはjson記述の解説回をお待ち下さい。

(解説ページができ次第リンク貼ります)

 

/tellraw の実行結果等々

コマンドの実行結果は「コマンドの成功・失敗・エラー」のいずれかになります。

失敗した場合にはセレクターに合う対象がいない」と返って来ます。

コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」「コマンドが何人に対して成功したか(int)」の2点です。コマンドが成功した人数については、RSコンパレーターを用いてRS動力の形で取り出せます。

 

/tellraw の強み・使い道

ゲーム制作においては、特定のプレイヤーに対してメッセージ欄に何かしらの文章を流したい場合に使用します。「/say」「/tell」との使い分けについては、この後にしたいと思います。

 

/tellraw の弱み・弱点

詳しくは以下の項目で解説しますが、このコマンドは「誰からのメッセージなのか」が強制的に非表示になります。

 

 

ここからは、/say , /tell , /tellraw の相違点について比較解説致します。

 

/say , /tell , /tellraw の相違点

「/say」「/tell」「/tellraw」のいずれもメッセージを送信するコマンドであることに変わりありませんが、それぞれ微妙に異なる点がありますので、比較してみましょう。

  • メッセージの送信先
    ・/say ( /me ):
     プレイヤー全員
    ・/tell ( /msg , /w ):
     セレクターで対象としたプレイヤー(プレイヤー全員も可能)
    ・/tellraw:
     セレクターで対象としたプレイヤー(プレイヤー全員も可能)

  • メッセージの発信者表示
    ・/say ( /me ):
     あり
    ・/tell ( /msg , /w ):
     あり
    ・/tellraw:
     なし

  • メッセージ中のターゲットセレクターのプレイヤー名置換
    ・/say ( /me ):
     あり
    ・/tell ( /msg , /w ):
     あり
    ・/tellraw:
     特殊な記述が必要

  • メッセージ中でのスコア表示
    ・/say ( /me ):
     不可能
    ・/tell ( /msg , /w ):
     不可能
    ・/tellraw:
     可能

 

このようにそれぞれ得手不得手が存在しますので、その場面に合ったコマンドを使うと良いでしょう。

/tellraw ではjson形式でメッセージを記述することが求められますが、このjson形式での文章の記述は「/titleraw」でも要求されます。jsonの解説記事はなるべく早く執筆しますので、しばらくお待ち下さい。

(解説ページができ次第リンク貼ります)

 

今回のまとめ

  • 『 /say 』『 /me 』はプレイヤー全員にメッセージを送信するコマンド!
  • 『 /tell 』『 /msg 』『 /w 』は指定したプレイヤーのみにメッセージを送信するコマンド! 
  • 『 /tellraw 』は指定したプレイヤーのみにjson形式のメッセージを送信するコマンド! 

 

関連記事

  • コマンド構文解説-霧を操る…?/fog-
  • コマンド構文解説-エンティティにライド・オン!/ride-

  • コマンド構文解説-モブがアクションを起こす!?/event, /mobevent-
  • コマンド構文解説-あのモブのあのモーションを!?/playanimation-
  • コマンド構文解説-何が起こるんだ!?PART1!/connect ( /wsserver ), /help ( /? ), /kick
  • コマンド構文解説-何が起こるんだ!?PART2!/list, /locate, /schedule-
  • コマンド構文解説-コマンドに革命を起こす…!?/function, /reload-

 

当記事及び当ブログへのご意見・ご質問はいつでも受け付けております。

お気軽にコメント欄までどうぞ!

↓良ければポチッとお願いします。