この記事では、Minecraft Java Edition(バージョン1.19.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
滑らかに動くブロックが気になるマインクラフター
「滑らかに動くブロックってどうやって動いているの? コマンドを使っているのかな? 仕組みを教えて欲しいな!」
こんな疑問を解決します!
- 滑らかに動くブロックはコマンドで扱える
- 実際に使ってみる
こんにちは! マインクラフターのなつめ(@natsume_717b)です。
マイクラ歴は5年程で、最近は脱出マップやミニゲームを制作しています!
→ダウンロードページ
この記事では滑らかに動くブロックについて解説していきます。
滑らかに動く理由はブロックではなくエンティティであるからで、tpコマンドによって動かすことができるからです。
どういう仕組みなのか、どういったコマンドを使うのかということを詳しく説明していきます。
さっそく見ていきましょう!
滑らかに動くブロックはコマンドで扱える
滑らかに動くブロックは、コマンドを使うことで扱えます。
というのも、滑らかに動くブロックの正体がfalling_blockというエンティティだからですね。
エンティティとはブロックでないものというイメージでOKです。
falling_blockはブロックの見た目をしていますが、エンティティに分類されています。
分かりやすく例を出すと、落下中の砂や砂利です。
砂や砂利が落下している最中はfalling_blockというエンティティに変化し、着地点を見つけると再びブロックに戻るわけです。
この落下しているブロック、falling_blockの見た目をコマンドで指示してあげれば、好きなブロックを落下させることができるわけです。
加えて、tpコマンドをfalling_blockに対して行えば落下のみならず好きな方向へ移動させてあげることも可能ということになります。
というわけで、滑らかに動くブロックの正体はfalling_blockとなります。
実際に使ってみる
実際にfalling_blockを動かしてみましょう。
単純な動きならば、3つのコマンドで移動させることができます。
falling_blockを用意するコマンド、falling_blockを移動させるコマンド、不具合が起きないようにするコマンドの3つです。
また、falling_blockを消すコマンドについても触れていきます。
falling_blockを用意するコマンド
まずは、falling_blockを用意します。
falling_blockは安定しないエンティティなので、防具立てに乗せる形で出力します。
/summon armor_stand ~ ~1 ~ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["test"],Passengers:[{id:"minecraft:falling_block",BlockState:{Name:"minecraft:dirt"},Time:1}]}
このコマンドを実行すると、実行場所の1マス上に透明な防具立てが召喚され、それに土ブロックが乗っているかと思います。
透明な防具立てを召喚していますので、土ブロックが浮いているようになっていればOKです。
これでfalling_blockの用意はOKです。
土ブロック以外のものにしたい場合は、BlockStateの中にあるminecraft:dirtの部分を動かしたいブロックのIDに変更しましょう。
falling_blockを消したい場合
今回の場合は、falling_blockを消すには防具立てをキルしてしまえばOKです。
乗っている防具立てが消えてしまえば、falling_blockも消えます。
そのためのコマンドがこちら。
/kill @e[type=minecraft:armor_stand,tag=test]
タグを指定していますので、testのタグを持っていない防具立ては削除されないようになっています。
falling_blockを動かすコマンド
falling_blockを乗せた防具立てを召喚しましたので、この防具立てを動かすことで同時にfalling_blockも動くようになっています。
スケルトンホースに乗っているスケルトンがスケルトンホースの動きに従って移動しているのと同じですね。
なので、防具立てを少しずつテレポートさせて滑らかに動いているように見せます。
そのためのコマンドがこちら。
1回だけ起動してもわずかにしか移動しないので、コマンドブロックに入力しリピート、無条件、常時実行と設定しましょう。
execute as @e[tag=test] at @s run tp @s ^ ^0.01 ^0.01
testというタグが付いてるエンティティを、その場所から向いている方向の斜め上に向かってテレポートさせています。
つまり、このコマンドを弄ることで、どのように動かすのかを決めることができます。
移動する位置を指定している^については過去記事にて解説していますので、そちらで確認してください。
不具合を起こさないためのコマンド
それでは、最後のコマンドです。
このコマンドはfalling_blockを落下し続けていると指示するためのコマンドとなります。
落下し続けるようにしないとブロックに戻ってしまうので、このコマンドは必須です。
というわけで、Timeという項目を延々と1にし続けます。
Timeはfalling_blockの存在できる時間を示すので、falling_blockを常に存在できるようにしているわけですね。
なので、コマンドブロックにリピート、無条件、常時実行と設定して、常に実行します。
execute as @e[type=minecraft:falling_block] run data merge entity @s {Time:1}
これで、falling_blockを途中でブロックに戻すことなく扱えます。
まとめ
というわけで、今回のまとめです。
今回使ったコマンドはこちら。
/summon armor_stand ~ ~1 ~ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["test"],Passengers:[{id:"minecraft:falling_block",BlockState:{Name:"minecraft:dirt"},Time:1}]}
/kill @e[type=minecraft:armor_stand,tag=test]
execute as @e[tag=test] at @s run tp @s ^ ^0.01 ^0.01
execute as @e[type=minecraft:falling_block] run data merge entity @s {Time:1}
この記事は以上になります。