【Java版】ボタンを押すたびに目の前のブロックを変える方法

【Java版】ボタンを押すたびに目の前のブロックを変える方法

この記事では、Minecraft Java Edition(バージョン1.16.5)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

コマンド初心者
「ボタン押す度に同じ場所のブロックを置き換えたいんだけど、どうやればできるの? 誰か教えて!」

こんな疑問を解決します!

本記事の内容
  • ブロックを置き換えるにはsetblockを使う
  • ボタンを押すごとに作動させるために赤石回路を用意する
  • 「ボタンを押す度に特定の場所のブロックを置き換える」ギミックの作り方
  • 実際の使用例

こんにちは! マインクラフターのナツメ(@natsume_717b)です。

今回は少し複雑なギミックのやり方を紹介していきます。
というのも、ボタンを押す度に同じ場所のブロックが順々に変わるギミックです。

ボタンを押していき目の前のブロックを正しい組み合わせにするなんてギミックを配布マップなどで見たことがあるのではないでしょうか。
この記事を読めば、それが作れるようになります!

というわけで、さっそく見ていきましょう!

ブロックを置き換えるにはsetblockを使う

ブロックを特定の場所に置きたい場合は、setblockというコマンドを使います。
これを使うことで、「指定した座標に○○ブロックを置く」なんてことができます。

なので、今回やりたい「ボタンを押す度にブロックが置き換わる」というギミックは、setblockで同じ座標を指定したものを複数用意しつつ置くブロックを変更すれば良いというわけですね。

setblockのコマンドは以下のように打ち込むと使うことができます。

/setblock 置きたい場所の座標 置きたいブロックのID

簡単に例えると、座標が0 0 0の地点にダイヤモンドブロックを置くとすると

/setblock 0 0 0 minecraft:diamond_block

となります。

ただし、このままでは同じボタンを押すごとに異なるコマンドブロックを作動させることはできません。
こういう時に使うのは、コマンドではなく赤石(レッドストーン)による回路です。

赤石回路を組むことでコマンドとはまた違った条件分岐などが可能となりますので、複雑なギミックを作りたい場合は必須となります。

とにもかくにも、まずはsetblockのコマンドでブロックを置き換えることを覚えておきましょう。

ボタンを押すごとに作動させるために赤石回路を用意する

さて、ここからは赤石回路を組みつつコマンドブロックにコマンドを打ちこんでいこうと思うのですが、その前に「カウンター」と呼ばれる回路を紹介します。

上記の画像がボタンを押すごとに赤石信号を順に送ることのできる回路になります。

青文字でも書いてありますが、ボタンを押すことでこの回路は機能します。
1回ボタンを押すことで、上段部分にある横向きのレッドストーンリピーターの光っている箇所が1つ右に移動します。

ちなみにレッドストーンリピーターの最後尾と1番左の箇所を赤石で繋いである理由は、繰り返し使えるようにするためです。

ボタンを一定回数押すことで1番右のリピーターが光っている状態になります。
(仕組み的に右から2つのリピーターが光っているはず)
その状態で、もう1度ボタンを押すことで上記の画像のように戻ります。

なので、1から4の選択肢を用意した場合は1234と順に機能するほか、4の次は1に戻ってくれます。
レッドストーンで繋いでいるのにはそんな理由があるということです。

この回路自体は、理解がしやすくなるよう紹介しているだけですので、実際に作る必要は必ずしもあるわけではありません。
(もちろん実際に作って、体感した方が理解はしやすいです)

それでは、いよいよ次の項目でこの回路と赤石を組み合わせて、「ボタンを押す度に特定の場所のブロックを置き換える」ギミックを作っていきましょう!

「ボタンを押す度に特定の場所のブロックを置き換える」ギミックの作り方

さっそく作っていきましょう。
基本的な形は以下の画像の通りです。

基本的にはカウンター回路と同じですが、レッドストーンリピーターの間にコマンドブロックを挟んでいます
こうすることで、ボタンを押す度にコマンドブロックを機能させることができます。

コマンドブロックの向きは、今回の場合関係ありません。
なので、左から3つ目のコマンドブロックも正常に動作します。

またカウンター回路を紹介した時とは違い、ボタンが置かれているブロックの上にあるレッドストーンリピーターは遅延が3になっています。
(2回クリックした状態)

これはコマンドブロックを挟んだことで、遅延の長さが足らなくなってしまったので1つ延ばしたといった具合です。

さて、次はコマンドブロックに書き込むコマンドについて
といっても、先ほど紹介したsetblockと同じものです。

おさらいも兼ねて打ち込むコマンドを見ていきましょう。

/setblock 置きたい場所の座標 置きたいブロックのID

このコマンドをそれぞれのコマンドブロックに打ち込んでいきます。
実際にやってみるとこんな感じです。

ちなみにコマンドブロックには、初めのスラッシュ(/)がなくても大丈夫です。
(入れてもコマンドが正しければ機能します)

橙部分はデフォルトで画像の通りになっていると思うので、いじる必要はありません。
うっかり切り替えてしまった場合などは、何度かクリックして元に戻しましょう。

これができれば、残りのコマンドブロックには他のブロックのIDを入れていきましょう。
座標は同じ場所に出したいので変える必要はありません。

コマンドを打ち終えれば完成となります。
ボタンを押していって指定した座標のブロックが順に変わっていけば成功です。
お疲れさまでした。

実際の使用例

さて、せっかく同じ場所のブロックをボタンで置き換えられることになったので、これを活かしたギミックなどを紹介していこうと思います。

1番分かりやすいのは、「特定の座標に特定のブロックがあるときにのみ動作する」コマンドと併せることです。

これを使うにはexecuteというコマンドを使うのですが、本題のついでで話すには複雑すぎるので簡潔に説明だけします。

executeコマンドというのは、「一定の条件を満たしたら指定したコマンドを実行する」というコマンドです。
なので、今回紹介したコマンドと併せるなら、「どこそこに○○ブロックがあるとき、このコマンドを実行する」といったことが可能です。

鉄扉が開く、ブロックが破壊されるといったコマンドと併せれば、先に進むことができるようになりますね。

executeコマンドはコマンドを扱う上で是非とも習得しておきたいコマンドですので、別途記事にする予定です。
なので、投稿した際にはこの記事にも追記させていただきます。

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • 特定の場所に指定したブロックを置くコマンド
/setblock 座標 置きたいブロックのID
ポイント
  • 赤石回路と合わせることで、複雑なギミックも可能となる!

この記事は以上になります。

関連記事