tellrawコマンドとtestforコマンドを使って、指定した範囲に入ったらメッセージが表示されるギミックの仕組みを解説します。
目次
どういうギミックなのか
構造の仕組み
メッセージの表示を一度きりにするには
---スポンサーリンク---
---スポンサーリンク---
|
なんの変哲もない入り口
しかし、入口を通ると...
なにやら「??? : ようこそ」というメッセージが。
ダンジョンや謎解きの配布ワールドなんかには結構使えるギミックではないでしょうか。
/testfor @p[x=0,y=0,z=0,dx=0,dy=0,dz=0] |
/tellraw @p {"text":"ここにメッセージ"} |
まずAの仕組みを説明します。
testforコマンドは指定した条件にあてはまるプレイヤーやエンティティを検出します。
条件はセレクターにて指定することができ、今回の場合は
x=68,y=4,z=-56を始点として、そこからdx,dy,dzを使い有効範囲を広げます。
(始点と終点は直方体の対角にとります)
ちなみに座標の取り方がわからない方はこちら
今回の場合
始点が(68,4,-56)、終点(68,5,-56)なので
終点(68,5,-58) - 始点(68,4,-56) = (0,1,-2)
よってdx,dy,dz=(0,1,-2)となる仕組みです。
/testfor @p[x=68,y=4,z=-56,dx=0,dy=1,dz=-2] |
このコマンドの意味をまとめると
x=68,y=4,z=-56の位置を基準にx方向に0、y方向に1、z方向に2の大きさの直方体の範囲に@p(プレイヤー)がいるかどうかを検出する。
次にBの仕組みを解説します。
Aの条件を満たした場合のみ、コンパレーターがRS信号を出します。
その時にtellrawのコマンドブロックを起動させて、メッセージが出てくる仕組みです。
tellrawコマンドの基本の形
/tellraw セレクター {"text":"文"} |
今回は
/tellraw @p {"text":"ここにメッセージ"} |
上の仕掛けですと、入り口を行き来するたびにメッセージが表示されてしまいます。
それでは、ダンジョン系などの配布ワールドを作るときに感じが出ませんよね。
そういう場合の対処法を考えてみました。
1.コンパレーターを消す
B起動と同時に、AとBの間にあるレッドストーンコンパレーターを空気に変えてしまうというもの。
このように、Bの先にコンパレーターの位置に空気を配置してやればいいだけです。
すると、一回起動したら、二度とBが起動することはなくなります。
2.scoreboardを利用する
できなくはないのですが、色々面倒なので消しました。
Follow @KzKzKazz
このTwitterフォローしていただければ、私の最新記事が出るたびにツイートされます。
興味がある方はぜひフォローお願いします(^^)/
コメント
1.13でtestforが廃止されてしまったのですが、記事で紹介されているものと同じものを1.14で作ろうとしたらどうやって作ったら同じ動作をするでしょうか?
executeコマンドを使ってもうまく動作しなかったので教えていただきたいです
できました!!ありがとうございます!自作配布マップで使えそうです!
BEで出来ますか?
このコマンドを使って特定の場所に入った人をワープさせる装置が出来ました!
どのようなコマンドを作りましたか
もしよろしければ教えてくださるとありがたいです