【Minecraft JE 1.15.1】近くにプレイヤーがいる場合に1回だけコマンド実行する方法

minecraft

コマンド仕様が1.13から変更になってしまい、testforコマンドが無くなったので「近くにプレイヤーがいる場合に1回だけ実行する」方法がよくわからなくなくて。

調べても調べても、testforのやり方しか出てこない。
1.13以降ではどうすればいいのか…。

と思っていたのですがWikiを眺めていて解決しました!!うれしい!!

近くにプレイヤーがいる場合に1回のみコマンド実行する場合

プレイヤーが近くにいることを検知する方法

プレイヤーが近くにいることを検知するには、1.13までの間はtestforを使用していました。例えば範囲が10ブロック以内にプレイヤーがいるかどうかを検知するにはこんな感じ。

/testfor @a[r=10]

1.13以降ではexecuteを使用します。こんな感じ。

/execute if entity @a[distance=10]

これとコンパレーターを使います。

コンパレータを使用

あとは1.13より前の頃と同じです。
 - 常時実行、リピートのコマンドブロック
 - コンパレーター
 - 動力が必要、インパルスのコマンドブロック
を使用します。

構成はこんな感じ。

コマンドブロックの向きは合わせなくても大丈夫ですが、コンパレーターの向きはこの通りにしないと動かないと思います。

上記のように設置したら、まずはリピートのコマンドブロック(紫のやつ)を設定。

続いてインパルスのコマンドブロック(茶色のやつ)

プレイヤーが近くに来たら、「誰かたすけて…」というように設定しました。

やってみます。

ちゃんと、近くに来た時に1回だけ実行されました!
何回も何回も表示されません!!やったー!!!

プレイヤーが離れたことを検知するのは?

さて逆にプレイヤーが離れたことを検知するには、リピートコマンドブロックのコマンドを以下のように変更するだけです。

/execute unless entity @a[distance=..10]

離れようとすると「行かないで!!」というようにしました。

この仕組みを使って、プレイヤーが近くに来たらボス敵を召喚、プレイヤーが離れるとボスをkillする というような仕組みを作ることもできますね。

コメント

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