コマンドで何かを作る時に必要になりそうなセンサー型自動ドア。
隠し扉的に使うこともできるので何かギミックを作る時とかに使えそう。
コマンドはまだまだ初心者なので間違ってる部分とかがあるかもしれないです。
その時はすみません。
動作確認はJava Edition 1.17.1、1.18+です。
動画で見たい方用
センサー型自動ドアとは
少し離れた場所にいるとただの壁ですが
近づくと壁がなくなります。
離れるとまた壁が現れます。
白い枠内に入れば自動で壁がなくなる設定です。
センサー型自動ドアの作り方
コマンドブロックを設置場所
ドアを作りたい場所の下にコマンドブロックを設置します。
/give @s minecraft:command_block
記述するコマンド
上と下で異なるコマンドを記述します。
execute unless entity @a[distance=..6] run fill ~ ~4 ~-1 ~ ~2 ~1 stone
execute if entity @a[distance=..6] run fill ~ ~5 ~-1 ~ ~3 ~1 air
【~ ~ ~ ~ ~ ~】の部分について
この部分は作りたい方角によって異なります。
北や南と並行する形 | 上側は【~-1 ~4 ~ ~1 ~2 ~】 下側は【~-1 ~5 ~ ~1 ~3 ~】 |
---|---|
西や東と並行する形 | 上側は【~ ~4 ~-1 ~ ~2 ~1】 下側は【~ ~5 ~-1 ~ ~3 ~1】 |
北や南の時はX軸方向に壁を広げて、西や東の時はZ軸方向に壁の範囲を広げる。
コマンドブロックの設定
コマンドブロックは【リピート、無条件、常時実行】に設定します。
コマンド解説
大まかな解説なので微妙に違うかもしれませんが、こんな感じぐらいのニュアンスで。
上コマンド解説
execute | 実行する |
---|---|
unless | ~でなければ |
entity @a[distance=..6] | 6ブロック以内にプレイヤー |
run | 実行する |
fill ~ ~4 ~-1 ~ ~2 ~1 | ~ ~ ~から~ ~ ~の座標を満たす(~はコマンドブロックからの相対座標です) |
stone | 石ブロック |
=6ブロック以内にプレイヤーが居ない時、指定座標を石ブロックで満たす
下コマンド解説
execute | 実行する |
---|---|
if | ~な時 |
entity @a[distance=..6] | 6ブロック以内にプレイヤー |
run | 実行する |
fill ~ ~4 ~-1 ~ ~2 ~1 | ~ ~ ~から~ ~ ~の座標を満たす(~はコマンドブロックからの相対座標です) |
air | 空気 |
=6ブロック以内にプレイヤーが居る時、指定座標を空気で満たす
いろんな自動ドアを作ってみる
ドアが開く距離を変更する
白い枠外からでも開くように変更してみました。
上下両方のコマンドブロックの【@a[distance=..6]】の部分を変更します。
開く距離を狭くしたい場合は数字を小さく距離を広げたい場合は数字を大きくしてください。
開くブロックの大きさを変更する
横には広げず、縦の高さも2マスにしてみました。
狭くすることで隠し扉感が出ます。
execute unless entity @a[distance=..6] run fill ~ ~3 ~ ~ ~2 ~ stone
execute if entity @a[distance=..6] run fill ~ ~4 ~ ~ ~3 ~ air
上側コマンドの【stone】を石レンガの【stone_bricks】に変更するとより隠し扉感が出ます。
ブロックを変更する
ブロックを変更するとこんな感じの扉もできます。
これは石レンガの塀だけが開閉するようになってます。
execute unless entity @a[distance=..6] run fill ~ ~5 ~-2 ~ ~2 ~2 minecraft:stone_brick_wall
execute if entity @a[distance=..6] run fill ~ ~6 ~-2 ~ ~3 ~2 air
石レンガの塀をフェンスとかに変更すれば門扉感がでるはず!
その他必要そうな情報
コマンドログの消し方
扉を開閉する度にコマンドの実行ログが流れます。
このログを消したい人用のコマンド。
/gamerule commandBlockOutput false
最後の【false】を【true】にするとログが再表示されます。
コマンドは勉強中なので、そのうちもっと詳しく書きたい。そのうち…