更新日:
1. はじめて来た人にあいさつする
# 反復・常時実行
execute as @a[tag=!joined] run tellraw @a [{"selector":"@s","color":"yellow"},{"text":" さんがはじめて参加しました!","color":"yellow"}]
# チェーン・常時実行
tag @a[tag=!joined] add joined
joined タグが付いていない人を「はじめての人」として、全員にお知らせします。メッセージのあとでタグを付けるので、同じ人には1回しか出ません。タグのしくみは tagコマンドの使い方 にまとめています。タグを付ける行の前に give @a[tag=!joined] … を足せば、ルールを書いた本も一緒に配れます(記入済みの本をコマンドで出す方法)。
2. 2回目以降に入ってきた人を見分ける(Java版)
# 最初に1回だけ
scoreboard objectives add left minecraft.custom:minecraft.leave_game
# 反復・常時実行
execute as @a[scores={left=1..}] run tellraw @s {"text":"おかえりなさい!","color":"aqua"}
# チェーン・常時実行
scoreboard players reset @a[scores={left=1..}] left
leave_game は、ゲームから抜けた回数を数えるスコアです。抜けたときに1増えるので、次に入ってきたときにはスコアが1以上になっています。そこでメッセージを出し、スコアを0に戻します。
3. 画面の真ん中にタイトルを出す
execute as @a[scores={left=1..}] run title @s title {"text":"ようこそ","color":"gold"}
2の反復コマンドを title にすると、画面の真ん中に大きく表示されます。下に小さく出す文字は subtitle です。くわしくは titleとtellrawで画面表示を作る基本 を見てください。
4. 入ってきた人をロビーへ送る
execute as @a[scores={left=1..}] run tp @s 0 100 0
前回いた場所ではなく、毎回ロビーから始めてもらいたいときに使います。リセットのチェーンより前に置きます。ロビーの作り方は ロビー(待機場所)をコマンドで作る方法 にまとめています。
5. 統合版の場合
1のタグを使う方法は、統合版でも同じように使えます。統合版にはゲームから抜けた回数を数えるスコアがないので、2〜4の再ログインの検出はJava版だけです。
うまくいかないときの確認ポイント
- 何度もメッセージが出る:タグを付けるコマンドや、スコアを0に戻すコマンドが動いているか確認します。
- おかえりのメッセージが出ない:スコアを作る前に抜けた回数は数えられません。スコアを作ったあと、一度抜けて入り直して試します。
- コマンドブロックが動かない:プレイヤーが近くにいないと、そのチャンクが読み込まれず止まることがあります。スポーン地点の近くに置きます。
よくある質問
参加メッセージを自分だけに出せますか?
tellrawの最初の @a を @s にすると、入ってきた本人にだけ表示されます。
退出したときのメッセージは出せますか?
抜けたあとのプレイヤーにはコマンドが届かないので、退出の瞬間にメッセージを出すことはできません。ゲーム標準の退出メッセージを使います。
統合版でもできますか?
はじめて来た人を見分けるタグの方法は使えます。再ログインの検出はJava版だけです。