MC CommanderMinecraft非公式コマンド支援

決まった範囲に入ったら発動するコマンド(エリア判定)

「この部屋に入ったらメッセージを出す」「この範囲にいる間は攻撃されない」のように、場所でコマンドを動かすしくみをエリア判定と呼びます。丸い範囲と四角い範囲の決め方、入った瞬間と出た瞬間の見分け方を説明します。Java版の書き方です。

セレクターエリア判定Java版

executeコマンドを作る

更新日:

1. 丸い範囲で調べる(distance)

/execute positioned 100 64 200 as @a[distance=..5] run title @s actionbar "広場にいます"

positioned で決めた場所から5ブロック以内にいる人が選ばれます。distance=..5 は「5以下」という意味です。コマンドブロックに入れるときは positioned を書かずに、コマンドブロックの場所から数えることもできます。

2. 四角い範囲で調べる(dx・dy・dz)

/execute as @a[x=100,y=60,z=200,dx=10,dy=5,dz=10] run title @s actionbar "部屋にいます"

x・y・z が範囲の角、dx・dy・dz がそこから広げる大きさです。この例では x が100〜110、y が60〜65、z が200〜210 の箱の中にいる人が選ばれます。体の一部でも箱にかかっていれば当てはまります。

2つの角の座標が分かっているときは、大きいほうから小さいほうを引いた数が dx などになります。座標は F3 キーの画面で確かめます。x・y・z を書き忘れると、コマンドを実行した場所が角になってしまうので注意します。

3. 入った瞬間に1回だけ動かす(くり返し)

/execute as @a[x=100,y=60,z=200,dx=10,dy=5,dz=10,tag=!in_room] run title @s title "ようこそ"
/tag @a[x=100,y=60,z=200,dx=10,dy=5,dz=10,tag=!in_room] add in_room

1行目をくり返しコマンドブロック(常時実行)に、2行目をチェーンに入れます。範囲の中にいて、まだ in_room タグが付いていない人にだけタイトルを出し、すぐタグを付けます。タグが付いている間は1行目に当てはまらないので、タイトルは入った瞬間に1回だけ出ます。

4. 出た瞬間を調べる(くり返し)

/execute as @a[tag=in_room] unless entity @s[x=100,y=60,z=200,dx=10,dy=5,dz=10] run title @s actionbar "部屋から出ました"
/execute as @a[tag=in_room] unless entity @s[x=100,y=60,z=200,dx=10,dy=5,dz=10] run tag @s remove in_room

3の後ろにチェーンでつなげます。タグが付いているのに範囲の外にいる人は「今出た人」です。メッセージを出してからタグを外すので、次にまた入ったときに3が動きます。

5. 例:安全地帯を作る(くり返し)

/effect give @a[x=100,y=60,z=200,dx=10,dy=5,dz=10] resistance 1 4 true
/effect give @a[x=100,y=60,z=200,dx=10,dy=5,dz=10] regeneration 1 1 true

範囲の中にいる間だけ、ダメージをほとんど受けなくなり、体力も回復します。効果の時間を1秒にしておくと、範囲を出たあとすぐに切れます。ロビーやお店の中に使えます。

6. 目印で範囲を置く

/summon marker ~ ~ ~ {Tags:["zone"]}
/execute at @e[type=marker,tag=zone] as @a[distance=..6] run effect give @s glowing 1 0 true

座標を毎回書く代わりに、範囲の真ん中に目印(marker)を置き、そこから distance で数えます。目印を何か所にも置けば、1つのコマンドでいくつもの場所に同じしくみを作れます。場所を変えたいときは目印を動かすだけです。

うまくいかないときの確認ポイント

よくある質問

範囲にいる人の数を数えられますか?

execute store result score #room count if entity @a[x=100,y=60,z=200,dx=10,dy=5,dz=10] のように書くと、人数をスコアに入れられます。

プレイヤー以外のモブも調べられますか?

@a を @e[type=zombie] などに変えると、範囲に入ったモブを調べられます。

高さは関係なく調べたいときは?

dy を大きな数(たとえば 400)にして、y を世界の一番下にすると、高さに関係なく調べられます。

関連ページ

罠を作る落とし穴・矢・雷・毒の床。○×クイズの作り方立っている床で答えを判定します。アイテムを捨てると発動するコマンド投げ入れ交換機などを作れます。@p @a @e @s @r の違い

セレクターの基本です。

tagコマンドの使い方

入った人の印に使います。

音楽を流すコマンド

エリアに入ったら音楽を流す例です。

ロビーをコマンドで作る

安全地帯の使い道です。

コマンド辞典

基本構文とコマンド別の使い方を確認できます。