PEコマンド近寄るとメッセージ

マイクラPE1.0.5ではついにコマンドブロックが追加され、待望のあの仕掛けが作れるようになりました。そう...「近寄ると警告が流れる仕掛け」です。今回は、1.0.5で追加されたコマンドブロックとtestforコマンドを使った作り方を画像付きで丁寧に解説します。

スポンサーリンク

アップデート「1.0.5」の内容まとめはこちら

マインクラフトPE 1.0.5のアップデート内容まとめ
PE105アップデート
https://napoan.com/pe-105-update/

今回の記事では、バージョン1.0.5で実装された(される)ばかりの「コマンドブロック」と、新コマンド「testforコマンド」を使って記事を作成します。まずはバージョン1.0.5のアップデート内容をチェックすることをお勧めします。


近寄るとメッセージを表示する仕掛けの作り方

近寄るとメッセージ

▲アニメーション画像です。こんな風に、近寄ると「門番」から「近寄るな!」と言われる仕掛けを作っていきます。

では早速仕掛けを作っていきましょう。

※初めてコマンドブロックを使う方のために、当記事はこのブログ史上もっとも丁寧丁寧丁寧に書くと決めているよ


コマンドブロックを入手

コマンドブロックを入手

まずはコマンドブロックを入手...といってもクリエイティブモードのアイテム一覧からは入手できないので、チャット欄でコマンドを使って入手する必要があります。チャット画面を開いて以下のコマンドを入力してください。

コマンドブロックを入手するコマンド
/give @p command_block

入手できない場合は、「-」と「_」を間違えたり、全角スペースを打ってしまっていないか確認しましょう。


コマンドブロックを並べて設置

コマンドブロックを同じ向きに並べる

コマンドブロックを手に持って、同じ向きに2つ並べて設置します。コマンドブロックはプレイヤーの方を向くようになっています。

1つ目のコマンドブロックの中身を設定

2つ並んだコマンドブロックのうち、根本の方のコマンドブロックをタップして画面を開きましょう。

リピートコマンドブロックに切り替える

画面を開いたら、「ブロックのタイプ(Block Type)」を反復(リピート)に切り替えましょう。

リピートモードに切り替わった

するとコマンドブロックの色が紫色に変わりました。これが「反復(リピート)モード」のコマンドブロックです。

AlwaysActive

もう一度同じコマンドブロックを開いて、今度は「レッドストーン(Redstone)」を常にアクティブ(Always Active)に切り替えましょう。

testforコマンドを入力

さあ、コマンドを入手します。右上の+マークがあるコマンド欄をタップして、以下のコマンドを入力してください。全て半角英数ですよ! くれぐれも全角で打たないように。

反復(リピート)モードのコマンドブロックに入力するコマンド
/testfor @a[r=5]
testforコマンドの書き方

testforコマンドを初めて書く方のために、仕組みを説明します。testforコマンドは▲こんな風に/testfor <セレクター>(<>は実際には入力しません)という構文で書きます。(NBTタグを忘れてるじゃんとお思いの方、残念ですが1.0.5現在PEではNBTタグを書くことはできません><)

testforコマンドの仕組み

testforコマンドは、指定したターゲットが存在するかどうかを判定するコマンドです。今回の場合、「半径5ブロック以内に近づいたかどうか」を判定するために、「半径5ブロック以内のプレイヤー」をターゲットとして書いているのです。

今回はあらゆるプレイヤーを対象にするので、@aというセレクターを書いています。

セレクターの後にくっつけて、四角カッコで囲んだ「引数(ひきすう)」を書きます。このr=5「r引数(ひきすう)」と言って、最大半径を指定しています。他にも最小半径を指定するrmなど、色々な引数が存在します。詳しくはこちらのページをご覧下さい。


コマンドブロックから流れるログを無効化

ログが邪魔

コマンドを入力したらコマンドブロックの画面を閉じましょう。…ってなんだこりゃ、「@: ○○が見つかりました」でログが埋め尽くされてしまいました! それもそのはず、「常にアクティブ」の反復(リピート)コマンドブロックなので、常に判定して結果をつぶやきまくるのです。邪魔なので消し方を教えます。

コマンドブロックのチャット欄へのログ出力を無効化するコマンド(チャット欄で実行してね!)
gameruleコマンドを入力
/gamerule commandblockoutput false
※PC版と違い、全て小文字で入力しちゃって大丈夫です。

バージョン1.0.5で追加されたgameruleコマンドです。この場合はcommandblockoutput、つまりコマンドブロックのログ出力をfalse=無効化しています。

ログが止まった

このコマンドを実行すると、その時点でコマンドブロックはチャットにメッセージを流さなくなります。配布ワールドでは、こうすることでコマンドブロックの動作を隠しているんです。


2つ目のコマンドブロックの中身を設定しよう

手前のコマンドブロック

1つ目のコマンドブロックは設定完了です。次は2つ目のコマンドブロックを開いて設定していきましょう。

チェーン

2つ目は1つ目と違い、チェーン(Chain)モードに設定します。なぜなら1つ目のコマンドブロックと連動させるから。

条件付き(Conditional)

さらに、その下の「Condition」欄を条件付き(Conditional)に切り替えましょう。これを忘れるとtestforコマンドを書いた意味が無くなるので注意。

さあ、2つ目のコマンドを入力します。

チェーンモードのコマンドブロックに入力する2つ目のコマンド
/say 近寄るな!
※sayとメッセージの間は半角スペースです!

コマンドを入力したらコマンドブロックの画面を閉じましょう。


ちょっと待って! 1回だけメッセージを流すならコンパレーターを使おう

メッセージが多過ぎる

5m以内に近づくと「近寄るな!」と出るのですが... なんと毎秒20もの頻度でメッセージが放送されています。なぜなら反復(リピート)コマンドブロックが常時判定し、それをそのまま「チェーン」しているから。

作ってもらっておいて申し訳ないんですが、「近づくとメッセージを出す」仕掛けでチェーンコマンドブロックを使うとこうなってしまうんです。じゃあどうすればいいんでしょう?


コンパレーターを使おう

そこで、チェーンコマンドブロックの場所に「レッドストーンコンパレーター」を設置して、その先に新しい衝撃(インパルス)モードで無条件(Unconditional)レッドストーンが必要のコマンドブロックを設置しましょう。設置した衝撃(インパルス)モードのコマンドブロックには、以下のコマンドを入力します。

新しい衝撃(インパルス)モードのコマンドブロックに入力するコマンド
/say 近寄るな!
※sayとメッセージの間は半角スペースです!

さっきチェーンコマンドブロックで作ってみた時と一緒のコマンドですね。

メッセージが一回だけ表示される

すると半径5ブロック以内に入った時にコンパレーターがONになり、その時だけメッセージが放送されます。これならメッセージが邪魔になりませんね。


RPGワールドに必須、「@」ではなく好きな名前をメッセージに入れるには

メッセージの送り主を変えたい

メッセージの先頭には「[@]」が入ります。なんでかといいますと、送り主のコマンドブロックの名前を設定していないからです。

コマンドブロックの名前

sayコマンドを設定したコマンドブロックを開いて、左上の欄に「門番」など適当な名前を書きましょう。

名前が変わった

すると「[門番]近寄るな!」といった風に、メッセージの送り主の名前が変わります。


メッセージを流す相手を絞り込むには

これがsayコマンド

実はこのままだと、マルチプレイの場合は全員にメッセージが送られてしまいます。近寄った人だけにメッセージを送るには、どうすればいいんでしょうか。

書き換える

コンパレーターの先のコマンドブロックを開いて、以下のコマンドに書き換えて下さい。

半径5m以内に近寄った人だけにメッセージを送るコマンド
/tell @a[r=5] 近寄るな!
※半角スペースです! 全角スペースを入れないように注意!
tellコマンドの書き方

特定の人だけにメッセージを送るには、tellコマンドを使います。こちらはsayコマンドと違って、メッセージの前にターゲットを書きます。▲の例では「半径5m以内のすべてのプレイヤー」が対象です。(@pと書いてしまうと対象が一人だけになってしまいます)


ささやかれました

tellコマンドの場合、sayコマンドのメッセージと違って「○○にささやかれました」と表示されます。ささやくってなんかしっくりこないですが我慢我慢。



いかがでしたか。コンパレーターの先のコマンドブロックの内容を変えれば、他にも様々な仕掛けが作れます。(例: 近寄るとレッドストーンブロックが設置されさらに仕掛けが動く) どんどん応用して、自分だけの仕掛けを作りましょう!


告知: コマンドをもっと極めたいなら、この本がおすすめ!

マイクラのコマンドに少しでも興味をお持ちの方々に朗報です。コマンドをもっと学ぶのにぴったりな本が発売されました。

みんな大好き!マインクラフト るんるんプログラミング コマンドブロック編
みんな大好き!マインクラフト るんるんプログラミング コマンドブロック編
http://www.socym.co.jp/book/1078

「オン・オフの信号を出し続けるクロック回路を作ろう!」「コマンドブロックでよく使うコマンド」「テレポート装置を作る」「『executeコマンド』を使って、いろいろな仕掛けを作ってみよう!」「コマンドを極めれば、こんな配布ワールドを作れる!」など、レッドストーンの基本からコマンドの応用まで、ありとあらゆる解説が詰まった本となっています。応用編の「6章」は私ナポアンが執筆しました。作例のワールドもダウンロードできます!

さらにこの本では、仕掛けを作るだけでなく、配布ワールドやサーバーとして公開する手順も解説されています。憧れの配布ワールド作りを始めるのにもぴったりですね。
気になった方はぜひ上のリンクからチェックしてみて下さい!

スポンサーリンク

毎度毎度ツイート、コメント等ありがとうございます。Twitterではブログの更新状況など色々呟いてます。気軽にフォロー下さい。

スポンサーリンク

コメント

  • 01 20

    アプデ早くね?w

  • でんでん (Minecraft ID:denden0816)

    最近ブログ更新早いですねー。
    昨日1.7.10のOptifneの記事が出てきたかと思ったら、
    PEのコマンド回路説明。
    これぐらいのペースで記事を投稿してほしい…
    といっても、"これぐらいのペース"ってコンピュータ並ですねw
    ナポアンドロイドさんが記事を投稿しているようですねw

  • イカ松@松難民

    新宝島で草

  • testforの仕組みの説明のところ、testrotになってますよ

    • ご指摘ありがとうございます、修正しました

  • ポテトプリッツ

    PC版と同じ操作にしてくれないかなぁTABキーで座標が出せればいいのにそれとF3とF3+Hも…

  • ikeya kyouji

    testforの時にある特定のプレイヤーだけを検出する事はできますか?

  • 龍紋瓷彩沙蘭

    testforコマンドの範囲指定ができないんですがどうしたらいいですか?
    /testfor @a[r=5]
    って打っても無効なコマンドになってしまいます。

    • Hugo games

      同じです!

  • けんたDx

    この記事は嘘です! この通りにやってもコマンド出力されません!この記事を書いた人は詐欺師です!