更新日:
1. 部屋を壊されないようにする
/gamemode adventure @a
/gamerule mob_griefing false
アドベンチャーモードでは、ブロックを壊したり置いたりできません。部屋の壁をこわして外に出る、というズルを防げます。1.21.10以前は mobGriefing と書きます(gamemodeコマンドの使い方)。
2. 鍵で開くドア
/give @p minecraft:tripwire_hook[custom_name="部屋の鍵",custom_data={key:1b}]
鍵のアイテムを、宝箱の中などに隠しておきます。鍵を持っている人がドアの前に来たら開くしくみは、鍵を持っている人だけ通れるドア でくわしく作り方を説明しています。
3. 決まったブロックだけ置けるパズル
/give @p minecraft:redstone_block[can_place_on={blocks:"minecraft:gold_block"}]
アドベンチャーモードでも、このレッドストーンブロックは金ブロックの上にだけ置けます。正しい場所に置くと回路が動いてドアが開く、といったパズルが作れます(壊せる・置けるブロックを決めるコマンド)。
4. クリックするとヒントが出るチャット
/tellraw @a {"text":"[ヒントを見る]","color":"aqua","click_event":{"action":"run_command","command":"/trigger hint"}}
チャットの文字をクリックすると /trigger が動き、ヒントを出すしくみに使えます。trigger の作り方は triggerコマンドの使い方 にまとめています。1.21.4以前は clickEvent と value で書きます。
5. 制限時間のタイマー
/bossbar add escape "残り時間"
/bossbar set escape max 6000
/bossbar set escape value 6000
/bossbar set escape players @a
画面の上に5分(6000ティック)のゲージを出します。時間を減らすしくみは bossbarコマンドの使い方 のタイマーの例と同じです。
6. ゴールしたときの判定
execute as @a[x=20,y=64,z=0,dx=2,dy=3,dz=2,tag=!escaped] run tellraw @a [{"selector":"@s"},{"text":" が脱出しました!","color":"gold"}]
tag @a[x=20,y=64,z=0,dx=2,dy=3,dz=2] add escaped
出口の範囲に入った人を全員に知らせ、タグを付けて2回出ないようにします。範囲の決め方は 決まった範囲に入ったら発動するコマンド を見てください。
7. ヒントの中身を出す
/scoreboard objectives add hint trigger
/scoreboard players enable @a hint
# 反復コマンドブロック
execute as @a[scores={hint=1..}] run tellraw @s {"text":"ヒント:赤いじゅうたんの下を調べよう","color":"yellow"}
# チェーン1
scoreboard players set @a[scores={hint=1..}] hint 0
# チェーン2
scoreboard players enable @a hint
4のヒントをクリックすると hint が1になり、押した人にだけヒントが表示されます。表示したらスコアを0に戻し、もう一度押せるように enable し直します。部屋ごとにヒントを変えたいときは、@a[scores={hint=1..},x=…] のように範囲を足します。triggerのしくみは triggerコマンドの使い方 にまとめています。
8. クリアタイムを計る(Java版1.21.11以降)
/stopwatch create minecraft:escape
execute store result score @s escape_time run stopwatch query minecraft:escape 1
ゲーム開始時にストップウォッチを作り、ゴールしたとき(6の判定)に経過した秒数をスコアに入れます。先に /scoreboard objectives add escape_time dummy を実行しておきます。くわしくは stopwatchコマンドで時間を計る を見てください。
9. 次のチームのためにリセットする
/tag @a remove escaped
/clear @a minecraft:tripwire_hook
/bossbar set escape value 6000
/tp @a 0 64 0
ゴールのタグと鍵を消し、タイマーを満タンに戻してスタート地点に集めます。開けたドアやはめたブロックも元に戻すときは、最初の部屋を /clone でコピーしておき、ここで貼り直すと確実です。
うまくいかないときの確認ポイント
- ブロックが壊せてしまう:遊ぶ人がアドベンチャーモードになっているか確認します。
- パズルのブロックが置けない:
can_place_onの土台のブロックの名前が合っているか確認します。 - ヒントのクリックが効かない:
/scoreboard players enable @a hintで、trigger を使えるようにしてあるか確認します。
よくある質問
脱出ゲームの配布ワールドを作るときの注意は?
遊ぶ人がチートを使えないように、配布前にコマンドブロックの位置や設定を確認します。スポーン地点は /setworldspawn でスタート地点に合わせます。
何人で遊べますか?
人数に決まりはありません。タグやスコアは1人ずつ記録されるので、何人でも同じしくみで遊べます。
統合版でも作れますか?
アドベンチャーモードや鍵のしくみは統合版でも作れますが、この記事のアイテムのデータやtriggerの書き方はJava版のものです。