更新日:
1. 宝箱の場所をランダムに決める
/summon marker 0 64 0 {Tags:["treasure"]}
/spreadplayers 0 0 0 30 false @e[tag=treasure]
目印(marker)を出して、中心から30ブロック以内のどこかの地面に移動させます。markerは目に見えないので、場所はわかりません。散らばらせ方は spreadplayersコマンドの使い方 にまとめています。
2. 目印の場所に宝箱を置く
/execute at @e[tag=treasure] run setblock ~ ~ ~ chest{Items:[{Slot:13b,id:"minecraft:nether_star",count:1}]}
真ん中のスロットにネザースターが入った宝箱を置きます。このネザースターが「お宝」です。ほかの景品も入れたいときは lootコマンド も使えます。
3. 近づくとヒントを出す(くり返し)
/execute as @a at @s if entity @e[tag=treasure,distance=..10] run title @s actionbar {"text":"すごく近い!","color":"red"}
/execute as @a at @s if entity @e[tag=treasure,distance=10..30] run title @s actionbar {"text":"近いかも","color":"yellow"}
くり返しコマンドブロック(常時実行)に入れます。宝箱から10ブロック以内なら「すごく近い!」、30ブロック以内なら「近いかも」と画面の下に出ます。
4. お宝を見つけた人を判定する(くり返し)
/execute as @a if items entity @s container.* minecraft:nether_star run tellraw @a [{"selector":"@s"},{"text":" がお宝を見つけました!","color":"gold"}]
インベントリにネザースターが入った人がいたら、全員に知らせます。Java版1.20.5以降の書き方です。表示したら、コマンドブロックを止めます。
5. 片付ける
/execute at @e[tag=treasure] run setblock ~ ~ ~ air
/kill @e[tag=treasure]
/clear @a nether_star
宝箱と目印を消し、配ったお宝を回収します。次の試合では1からもう一度始めます。
6. 最初に見つけた1人だけを発表する
# 反復コマンドブロック
execute unless entity @a[tag=winner] as @a if items entity @s container.* minecraft:nether_star run tag @s add winner
# チェーン1
execute as @a[tag=winner,tag=!announced] run tellraw @a [{"selector":"@s"},{"text":" が一番乗りで宝を見つけた!","color":"gold"}]
# チェーン2
tag @a[tag=winner] add announced
4のままだと、宝を持っているあいだ毎ティックメッセージが出ます。まだ winner がいないときだけ判定し、発表したら announced タグで止めます。コマンドブロックを手で止めなくても、1回だけ発表されます。次のゲームの前に /tag @a remove winner と /tag @a remove announced を実行します。
7. 宝箱を3つに増やす
/summon marker 0 64 0 {Tags:["treasure"]}
/summon marker 0 64 0 {Tags:["treasure"]}
/summon marker 0 64 0 {Tags:["treasure"]}
/spreadplayers 0 0 10 30 false @e[tag=treasure]
目印を3つ出してから広げると、宝箱が3か所にちらばります。3つ目の数字(10)は目印どうしの最低距離で、宝箱が近くに固まるのを防ぎます。2の setblock は @e[tag=treasure] 全部に実行されるので、そのまま3つ置けます。
うまくいかないときの確認ポイント
- 宝箱が置かれない:1のあとに目印がいるか
/execute if entity @e[tag=treasure]で確認します。 - ヒントが出ない:目印を /kill していないか確認します。ゲーム中は目印を残しておきます。
- 最初から勝ちになる:ゲームを始める前に、全員からネザースターを /clear しておきます。
よくある質問
宝箱を地面に埋めることはできますか?
2のコマンドの ~ ~ ~ を ~ ~-2 ~ にすると、地面の下に宝箱を置けます。シャベルを渡して掘って探すゲームになります。
宝箱をいくつも置けますか?
1の summon を何回か実行して、目印を増やします。spreadplayers で全部の目印が別々の場所に散らばります。
統合版でも作れますか?
統合版には if items や marker がないので、この方法そのままでは作れません。防具立てと hasitem を使う方法で作ります。