【Minecraft 1.15.2】テレポートしてくれる村人をつくろう

minecraft

村人シリーズ④です。
今回は、前回ご紹介したtellrawを使ってRPGでよくいる「話しかけるとテレポートしてくれる人」を作ります。

村人に話しかける方法と、tellrawについてはこちら。

テレポーター村人を作成

テレポーター村人を召喚

RPGでテレポートできる場所っていくつかありますよね?
テレポーターごとにコマンドブロックを作るのも面倒なので、複数のテレポーターさん達の処理を1か所でやってしまいます。

ということで、タグに”warpman”とつけて村人を召喚。いつものNoAIとSilent、そして攻撃されてテレポーターがいなくなっても困るのでInvulnerableも設定。

summon minecraft:villager ~ ~ ~ {Silent:1b,Invulnerable:1b,NoAI:1b,Tags:["warpman"],CustomName:'{"text":"ワープおじさん"}'}

召喚されました。こんにちはワープおじさん。
あと二人ほど召喚します。こんな感じで3匹。

talked_to_villagerのscoreboadを作成する

いつものtalked_to_villagerのscoreboadを作成。

/scoreboard objectives add talk minecraft.custom:minecraft.talked_to_villager

各村人の位置を確認する

位置(座標)を確認するには、F3キーでデバッグ情報を表示させます。
機種によってはファンクションキーが効かない場合があると思いますが、Fnキーを押しながらF3キーを押すか、PCの設定を変えると押せるようになると思います。PCの設定はPCによって違うので調べてください。

デバッグ情報はもう一度F3キーを押すと消えます。

さて、F3キーを押したところ。

村人に視線を合わせて、Looking at block のところに表示されている座標をメモします。この場合は「-34 3 -15」です。
他の村人がいる場所も調べると、

黄色:-34 3-15
ピンク:-34 3 -39
黄緑:-49 3 -20

でした。でも、地面をみているので、Y軸だけ+1して
黄色:-34 4-15
ピンク:-34 4 -39
黄緑:-49 4 -20

をメモします。

tellrawコマンドを作成する

MinecraftToolsで、tellrawコマンドを作成します。まず表示する文字はこんな感じ。

click event を追加します。「黄緑」の文字列を選択し、矢印マークをクリック。
Event TypeはRun Commandで「/tp 先ほど調べた黄緑の座標」を記入し、OKをクリック。
同様にピンクと黄色もclick eventを追加。

GENERATE COMMANDボタンでコマンドを生成し、コピー。

コマンドブロックを作成

コマンドブロックは2つ。

①リピート、無条件、常時実行

/execute at @e[type=minecraft:villager,tag=warpman] as @e[type=minecraft:villager,tag=warpman,limit=1] if score @p[distance=..3] talk matches 1.. run tellraw @p ここに先ほど作成したtellrawコマンドの内容の@p以降をはり付ける

長くなりますが私の場合はこんな感じ。

/execute at @e[type=minecraft:villager,tag=warpman] as @e[type=minecraft:villager,tag=warpman,limit=1] if score @p[distance=..3] talk matches 1.. run tellraw @p ["",{"text":"====================","color":"gold"},{"text":"\n\u3069\u3053\u306b\u3044\u304d\u307e\u3059\u304b\uff1f\n"},{"text":"\u9ec4\u7dd1","color":"green","clickEvent":{"action":"run_command","value":"/tp -49 4 -20"}},{"text":"\n"},{"text":"\u30d4\u30f3\u30af","color":"light_purple","clickEvent":{"action":"run_command","value":"/tp -34 4 -39"}},{"text":"\n"},{"text":"\u9ec4\u8272","color":"yellow","clickEvent":{"action":"run_command","value":"/tp -34 4 -15"}},{"text":"\n\u2191\u30ef\u30fc\u30d7\u3057\u305f\u3044\u5834\u6240\u3092click\u3057\u3066\u306d\n"},{"text":"====================","color":"gold"}]tah

tagには初めに村人を召喚するときに指定したタグ名を指定します。

at は、@e[type=minecraft:villager,tag=warpman]で、as は@e[type=minecraft:villager,tag=warpman,limit=1]にします。

at はコマンドを実行する場所設定するので、すべてのワープおじさんがいる場所で、近くに話しかけた人がいないかどうか調べます。

asはコマンドを実行する人を設定するので、limit=1をつけます。1人だけ話すようにします。これをつけておかないとワープおじさん全員が一度に話してしまいます。

②チェーン、条件つき、常時実行

こちらはいつものリセット用。

scoreboard players reset @a talk

結果確認

さて、村人に話しかけてみます。

どこに行きたいか聞いてくれました!
tボタンを押して、黄緑の文字をクリック。

黄緑の村人にワープできました!

次回はこのワープおじさんを、かわいいキャラクターにする方法をご紹介します。

コメント

タイトルとURLをコピーしました