この記事では、Minecraft Java Edition(バージョン1.16.5)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
コマンド初心者
「特定の場所でテレポートしたいんだけど、どうやればいいの?」
こんな疑問を解決します!
- とある条件でコマンドを実行したい場合はexecuteコマンドをつかう
- テレポート後の向きを調整しよう
こんにちは! マインクラフターのナツメ(@natsume_717b)です。
今回は「特定の座標に到着すると、テレポートしてしまう」そんなコマンドを紹介していきます。
このコマンドを使えば、配布マップにおいてエピローグに入る際にゴール地点からクリア後の部屋に移動するといったことができます!
ほかにも、トンネルを潜ったはずが、入口に戻っているなんてこともできますね!
それでは、そんな「特定の座標に到着すると、テレポートしてしまう」コマンドのやり方を見ていきましょう!
とある条件でコマンドを実行したい場合はexecuteコマンドをつかう
「○○したときに△△を行う」なんてコマンドは、executeコマンドを使うことで、基本的には実現します。
やりたいこと次第では、別の方法が必要になることも💦
今回の「特定の座標でテレポートする」もこのexecuteコマンドを使えば、簡単に実行することができます。
「特定の座標でテレポートする」という文章をもう少し噛み砕いて説明すると、「指定した座標にいるときに、テレポートコマンドを実行する」となります。
実際のコマンドで詳しく見ていきましょう。
今回は「座標”x=0,y=4,z=0″に到着した時に、座標”x=10,y=4,z=10″にテレポートする」という設定で話を進めていきます。
そして、チャット欄に打ち込むのではなくコマンドブロックに入力していきます。
これは何故なのかというと、常に座標”x=0,y=4,z=0″にいるかどうかを確認しなくてはならないので、コマンドブロックに打ち込んでリピートにして常時確認しておく必要があります。
というわけで、コマンドブロックに打ち込むコマンドと設定は以下の通り。
execute if entity @p[x=0,y=4,z=0,dx=0,dy=0,dz=0] run tp @p 10 4 10
コマンドの内容を細かく見ていきましょう。
execute
まずはexecute部分。
これはexecuteコマンドであることを示しています。
特に重要という訳ではないですが、コマンドを使えるようになっていくとexecuteコマンドは頻繁に使っていくので覚えておきましょう!
if entity @p[x=0,y=4,z=0,dx=0,dy=0,dz=0]
executeの次にあるifは英単語のifと同じように「もし~ならば」という意味合いを持ちます。
なので、今回の場合は「もしエンティティが座標”x=0,y=4,z=0″にいるならば、テレポートする」ということになります。
ifに続くentityがエンティティを示し、続く@pで近くのプレイヤーを指定。
さらに「近くのプレイヤー」という漠然とした内容をさらに明確にするために[]で囲い、その中に具体的な指示を書いていきます。
@p[x=0,y=4,z=0,dx=0,dy=0,dz=0]
[]内で囲う際に座標の指定ができ、x=,y=,z=はそれぞれブロックの座標位置を示すこととなります。
F3キーを押すと座標が確認できますが、この時、プレイヤーがいる座標を参照するのではなく、右下あたりに表示されるブロックの座標を参照すると上手くいきます。
上記のコマンドで言うと、座標”x=0,y=4,z=0″に近いプレイヤーを指定しているということですね。
しかし、このままでは座標”x=0,y=4,z=0″に最も近いプレイヤーを指定することになります。
一見上手くいっているコマンドではありますが、実は支障をきたす問題をはらんでおり、ワールドに自分だけが存在する状態だと、どこにいても自分が座標”x=0,y=4,z=0″に最も近いプレイヤーになってしまいます。
そこで、座標”x=0,y=4,z=0″だけを指定するコマンドも付け足していきます。
それが、dx=0,dy=0,dz=0の部分になります。
これは簡潔に言うならば、範囲指定のコマンド。
dx=〇の場合は、xから○マス離れているところまで有効といった設定ができるということですね。
当然、0の値を入れればxで指定した場所だけが対象となります。
なので、”dx=0,dy=0,dz=0”というコマンドを入れたことで、座標”x=0,y=4,z=0″にいるプレイヤーだけがテレポートの対象になるということです。
executeコマンドを打っていると、ifのほかにも色々な選択肢が候補として表示されます。
ですが、全部を一度に覚えようとすると、確実に混乱します。
なので今回はifだけ覚えることにしましょう。
ifだけでも充分に実用的です!
run tp @p 10 4 10
さて、「どこそこにいる時」という条件に関するコマンドは無事に打ち込めましたので、次は何をするのかをコマンドで打っていきます。
もちろん今回はテレポートさせるのが目的ですので、tpコマンドを使います。
ただし、続けてtpコマンドを打てばいいわけではありません。
はじめにrunという文字を入れる必要があります。
これはexecuteコマンドのルールですね。
このrunがなければ、続けて書くコマンドを正しく認識してくれません。
ちなみにrunというのは「走る」という英単語を思い浮かべがちですが、プログラミングやコマンドにおいては「実行する」なんて意味合いとして扱います。
tpコマンドはさして難しいものではありません。
内容と言語化すると以下の通りになります。
/tp 対象 座標
/tp @p 10 4 10 というコマンドならば、xとzが10で高さ(y)が4の位置に、コマンドを実行した位置から最も近いプレイヤーをテレポートさせることとなります。
(=チャット欄でコマンドを打った場合は自分ということですね)
テレポート後の向きを調整しよう
先ほどまで説明したコマンドだと、上記の画像のように体の向きが思った通りにならない問題が起こるかもしれません。
そう、きちんと設定しない限りは思っていた方向とは別の方角を向いてしまうことがあるのです。
もちろん、これは調整することができます。
というのも、座標を指定した後にさらに数値を追加することで設定することができるのです。
/tp 対象 座標 体の方角 視線の方向
体の方角、視線の方向と表現していますが、要するに「どの方角に身体が向いていて、上下のどこを見ているのか」ということを設定するということです。
ちなみにこの2つはセットなので、どちらか1つだけを指定することはできません。
仮に上記の画像で体の向きを真反対(カメラで撮っている方に顔を向かせたい場合)にするには
/tp @p 座標 -180 0
となります。
(南側を向いているので、北側に向かせています)
数値 | 正面の方角 |
---|---|
-180 | 北 |
-90 | 東 |
0 | 南 |
90 | 西 |
数値 | 視線の上下 |
---|---|
-90 | 真上 |
0 | 地面と水平 |
90 | 真下 |
もちろん、今回紹介したexecuteコマンドでも使うことができます。
その場合は
execute if entity @p[x=0,y=4,z=0,dx=0,dy=0,dz=0] run tp @p 10 4 10 -180 0
といった感じになりますね。
(座標”x=0,y=4,z=0″にいるプレイヤーを座標”x=10,y=4,z=10″の場所にテレポート。テレポートした際は北側に向いて地面とは水平に視線がある状態)
まとめ
というわけで、今回のまとめです。
今回使ったコマンドはこちら。
- とある座標にいる時に、テレポートするコマンド
execute if entity @p[座標に関するコマンド] run tp @p 移動したい場所
- 座標”x=0,y=4,z=0″から座標”x=10,y=4,z=10″にテレポートしたい場合の例
execute if entity @p[x=0,y=4,z=0,dx=0,dy=0,dz=0] run tp @p 10 4 10
- executeコマンドでは、runを挟むことを忘れない。
- テレポート後の向きを指定したい場合は、追加で数値を入れていく
この記事は以上になります。