制作レシピ / 謎解き:レバーで障壁を開閉する
謎解き:レバーで障壁を開閉する
Java版でexecute if blockとunlessを使い、レバーの状態に合わせて通路を開閉する制作例。
対象:Minecraft Java Edition 1.21.1(このページの例)|掲載例は構文資料と照合した学習用サンプルです。Minecraft実機での動作保証・全バージョン検証を意味しません。
更新日:
レバーで石の障壁を開閉する
座標100 65 200に置いたレバーをONにすると、座標105 65 200の石が消えて通路になります。OFFにすると石が戻ります。一度だけ開ける仕組みではなく、レバーの状態を見て開閉し続ける例です。
この例は指定したブロックを上書きします。重要な建築を壊さないようテストワールドとコピーを使ってください。
2つのコマンドを配置する
/execute if block 100 65 200 minecraft:lever[powered=true] run setblock 105 65 200 minecraft:air
/execute unless block 100 65 200 minecraft:lever[powered=true] run setblock 105 65 200 minecraft:stoneそれぞれ「リピート・無条件・常時実行」のコマンドブロックに設定します。コマンドブロックには先頭の/を含めずに入力しても構いません。レバーの位置、障壁の位置は自分のマップに合わせて変更します。
状態判定の意味
| 条件 | 処理 |
|---|---|
| レバーが存在し、ON | 障壁をairに置き換える |
| レバーがOFF、または条件と一致しない | 障壁をstoneにする |
レバーを壊した場合も「ONではない」と判断されます。複数のスイッチを使った謎解きでは、全体条件が満たされたときだけ開くようexecute if blockを組み合わせます。
動作確認の手順
- 実際のレバーと対象の石ブロックを指定の位置に置く。
- レバーをONにして石が消えるか確認する。
- レバーをOFFにして石が戻るか確認する。
- 別ディメンションから実行していないか確認する。座標はコマンドの実行ディメンションを基準にします。
- 誤って他の座標を指定した場合は装置を停止し、ブロックを復旧する。
コマンドブロックを使わないfunction実装に移す際は、毎tick呼ぶ処理の数に注意してください。
この先の作り込み
レバーなどのブロック状態を判定する位置を決め、条件が真と偽の両方の動作を確認します。仕掛けを繰り返し操作したときに壊れないかも試してください。