対応バージョン:Java Edition 1.21.11
この記事では、MinecraftのコマンドやDatapackで必ず登場するターゲットセレクターの引数を学びます。@a[distance=..5] のように [...] を付けることで、「近くのプレイヤーだけ」「特定の名前のプレイヤーだけ」「サバイバルモードの人だけ」と対象を細かく絞り込めるようになります。実際にコマンドを打って動作を確かめながら進めましょう。
前提知識
この記事では以下の知識を前提にしています。
- チートを有効にしたワールドに入れること
- チャット欄(
Tキー)にコマンドを入力した経験があること - Datapackの基本的なフォルダ構成を知っていること(Datapackの基本的なフォルダ構成)
ターゲットセレクターとは?
Minecraftのコマンドは「誰に・何に対して実行するか」を必ず指定する必要があります。その「対象を指定するための記号」がターゲットセレクターです。
たとえば以下のコマンドでは、@a の部分がターゲットセレクターです。
effect give @a speed 10 1
@a は「ワールド内の全プレイヤー」を意味するので、このコマンドは「全プレイヤーにスピードIを10秒付与する」という処理になります。effect give という命令だけでは「誰に?」が決まらないため、ターゲットセレクターは省略できません。
Datapackの .mcfunction ファイルに書くコマンドでも、チャット欄と全く同じようにターゲットセレクターを使います。まずはどんな種類があるかを確認しましょう。
基本セレクターを確認しよう
引数を付ける前に、ベースとなる基本セレクターを整理しておきましょう。それぞれが「誰を・何を対象にするか」の出発点になります。
| セレクター | 対象 | 複数ヒット | よく使う場面 |
|---|---|---|---|
@a | ワールド内の全プレイヤー | あり | 全員にエフェクト・メッセージを送る |
@e | ワールド内の全エンティティ(プレイヤー含む) | あり | モブをまとめて操作する |
@p | 実行位置に最も近いプレイヤー1人 | なし | コマンドブロックで1人だけ対象にする |
@s | コマンドを実行しているエンティティ自身 | なし | Datapackの .mcfunction 内で「自分自身」を指す |
@r | ワールド内のランダムなプレイヤー1人 | なし | くじ引きや抽選の演出 |
@n | 実行位置に最も近いエンティティ1体(1.21.2以降) | なし | 近くのモブ1体を対象にする |
@a と @e は複数のエンティティを同時に対象にできるため、引数による絞り込みが特に重要です。@s はDatapackの .mcfunction 内で頻繁に使います。execute as @e[type=zombie] run ... のように別エンティティとして実行するとき、その対象エンティティ自身を @s で参照できるからです。
ターゲットセレクター引数とは?
基本セレクターに [引数名=値] を続けて書くことで、対象をさらに絞り込めます。複数の引数はカンマ区切りで並べることができ、すべての条件を同時に満たすエンティティだけが対象になります(AND条件)。
@a # 全プレイヤーが対象
@a[distance=..5] # 5ブロック以内のプレイヤーに絞る
@a[distance=..5,gamemode=survival] # さらにサバイバルモードのみに絞る
引数の書き方に迷ったときは、チャット欄で @a[ まで入力するとオートコンプリートが表示されます。使える引数の一覧が確認できるので活用しましょう。

それでは引数を1つずつ見ていきましょう。
ステップ1:距離で絞り込む(distance)
distance は、コマンドの実行座標からの距離(ブロック数)で対象を絞り込む引数です。範囲の書き方は以下の3パターンあります。
| 書き方 | 意味 |
|---|---|
distance=..5 | 5ブロック以内(上限のみ指定) |
distance=3.. | 3ブロック以上(下限のみ指定) |
distance=3..8 | 3ブロック以上8ブロック以内(範囲指定) |
# 実行位置から5ブロック以内のプレイヤーにスピードエフェクトを付与
effect give @a[distance=..5] speed 10 1
distance がない @a だとワールド内の全員が対象になります。Datapackで「近くにいるプレイヤーだけ処理したい」ときに必ず使う引数です。
実際に入力して確認しよう
- チャット欄を開き、以下を入力して Enter
effect give @a[distance=..5] speed 10 1
- 自分の近く(5ブロック以内)にスピードエフェクトのパーティクルが出れば成功
- distance=5..に変更してから再度実行し、今度はエフェクトがかからないことを確認する

ステップ2:名前で絞り込む(name)
name は、エンティティの表示名(プレイヤー名やカスタム名)で対象を絞り込む引数です。特定のプレイヤーだけを対象にしたいときに使います。
# プレイヤー名が「Steve」の人だけにエフェクトを付与
effect give @a[name=Steve] speed 10 1
# 名前が「Steve」以外の全プレイヤーを対象(!で否定)
effect give @a[name=!Steve] speed 10 1
引数の値の前に ! を付けると「〜以外」という否定条件になります。name だけでなく tag や gamemode など多くの引数で同様に使えます。
実際に入力して確認しよう
- 自分のプレイヤー名を確認する(TABキーのプレイヤーリストなどで確認)
- 自分の名前を入れて実行し、自分だけにエフェクトがかかることを確認する
effect give @a[name=自分のプレイヤー名] speed 10 1
- 否定形でも試してみる
effect give @a[name=!自分のプレイヤー名] speed 10 1
- 自分にはかからず、他のプレイヤーにはかかることを確認する(シングルプレイの場合は対象0人で何も起きないことを確認)

ステップ3:ゲームモードで絞り込む(gamemode)
gamemode は、プレイヤーのゲームモードで対象を絞り込む引数です。@a と組み合わせて「サバイバルのプレイヤーだけ」「クリエイティブ以外のプレイヤー」といった条件が作れます。
| 値 | 対象ゲームモード |
|---|---|
gamemode=survival | サバイバル |
gamemode=creative | クリエイティブ |
gamemode=adventure | アドベンチャー |
gamemode=spectator | スペクテイター |
gamemode=!creative | クリエイティブ以外すべて |
# サバイバルモードのプレイヤーにだけ発光エフェクトを付与
effect give @a[gamemode=survival] glowing 5 0 true
Datapackでゲームの処理を作るとき、クリエイティブの管理者プレイヤーをゲームの効果から除外したい場面が多くあります。そういったときに gamemode=!creative が役立ちます。
実際に入力して確認しよう
- サバイバルモードで以下を実行し、エフェクトがかかることを確認する
effect give @a[gamemode=survival] glowing 5 0 true
- クリエイティブモードに切り替えてから再度実行し、エフェクトがかからないことを確認する
/gamemode creative

ステップ4:タグで絞り込む(tag)
tag は、事前に tag コマンドで付与したカスタムタグを条件にする引数です。同じエンティティに複数のタグを付けることもでき、Datapackで「役割」や「状態」を管理する手段として非常によく使います。
# 近くの村人全員にタグ「target」を付ける
tag @e[type=villager,distance=..10] add target
# タグ「target」を持つ村人だけにダメージを与える
damage @e[type=villager,tag=target] 10
# タグを持っていないエンティティを対象にする(否定)
damage @e[type=villager,tag=!target] 10
type=villager だけでも動きますが、tag=target を組み合わせることで「このDatapackが管理している村人だけ」を他の村人と区別できます。複数のDatapackを共存させるときに特に重要なテクニックです。
実際に入力して確認しよう
- 近くに村人をスポーンさせる
summon villager ~ ~ ~
- タグを付ける
tag @e[type=villager,distance=..10] add target
- タグが付いたか確認する
tag @e[type=villager,distance=..10] list
- タグを持つ村人だけにダメージを与えて動作を確認する
damage @e[type=villager,tag=target,limit=1] 10

ステップ5:チームで絞り込む(team)
team は、team add コマンドで作成したチームに所属しているエンティティを対象にする引数です。チームは名前の色を変えたり、フレンドリーファイアを制御したりする機能も持っています。
# チーム「red」に所属しているプレイヤーにエフェクトを付与
effect give @a[team=red] speed 10 1
# どのチームにも所属していないプレイヤーを対象にする
effect give @a[team=] speed 10 1
# チーム「red」以外のプレイヤーを対象にする
effect give @a[team=!red] speed 10 1
team=(値を空にする)で「チーム未所属」のエンティティを指定できます。チーム名と引数を使い分けることで、PvPやチーム戦のDatapackが作りやすくなります。
実際に入力して確認しよう
- チーム「red」を作成する
team add red
- 自分をチーム「red」に追加する
team join red @s
- チーム「red」のメンバーにエフェクトをかけて動作確認する
effect give @a[team=red] speed 10 1
- チームから離脱して、エフェクトがかからなくなることを確認する
team leave @s

ステップ6:並び順と取得数を制御する(sort / limit)
sort は対象の並び順を、limit は対象の最大数を制御する引数です。この2つはセットで使うことがほとんどで、「最も近い1体だけ」「ランダムな3人」といった指定ができます。
sort の値 | 意味 |
|---|---|
sort=nearest | 実行位置に近い順 |
sort=furthest | 実行位置から遠い順 |
sort=random | ランダム順 |
sort=arbitrary | 順不同(デフォルト) |
# 最も近いプレイヤー1人だけにエフェクトを付与
effect give @a[sort=nearest,limit=1] speed 10 1
# ランダムな3人にエフェクトを付与
effect give @a[sort=random,limit=3] speed 10 1
# 最も近いゾンビ1体にダメージを与える
damage @e[type=zombie,sort=nearest,limit=1] 10
@p は「最も近いプレイヤー1人」ですが、@a[sort=nearest,limit=1] と書くことで他の引数(tag や gamemode など)と組み合わせられるため、より細かい条件指定が可能になります。
実際に入力して確認しよう
- 村人を3体スポーンさせ、バラバラな距離に配置する
summon villager ~2 ~ ~ {NoAI:1b}
summon villager ~5 ~ ~ {NoAI:1b}
summon villager ~10 ~ ~ {NoAI:1b}
- 最も近いゾンビ1体だけにダメージを与えて、1体だけ体力が減ることを確認する
damage @e[type=villager,sort=nearest,limit=1] 10
limit=3に変えて全員に当たることも確認する
execute as @e[type=villager,sort=nearest,limit=3] at @s run damage @s 10

引数まとめ一覧
この記事で学んだ引数を一覧にまとめます。複数の引数はカンマで並べることで AND 条件として機能します。
| 引数 | 役割 | 例 |
|---|---|---|
distance | 実行位置からの距離で絞る | distance=..5 |
name | エンティティ名で絞る | name=Steve |
gamemode | ゲームモードで絞る(プレイヤーのみ) | gamemode=survival |
tag | カスタムタグの有無で絞る | tag=target |
team | 所属チームで絞る | team=red |
sort | 対象の並び順を指定する | sort=nearest |
limit | 対象の最大数を指定する | limit=1 |
Datapackのファイルに書いてみよう
ここまで学んだ引数を組み合わせて、Datapackの .mcfunction ファイルに書いてみましょう。
my_datapack/
├── pack.mcmeta
└── data/
└── my_datapack/
└── function/
└── effect.mcfunction
# effect.mcfunction
# 3ブロック以内のサバイバルプレイヤーに発光エフェクトを付与する
effect give @a[distance=..3,gamemode=survival] glowing 2 0 true
末尾の true はエフェクトのパーティクルを非表示にするオプションです。distance と gamemode を組み合わせることで、クリエイティブの管理者プレイヤーは除外しつつ、近くのサバイバルプレイヤーだけを処理できます。

実際に入力して確認しよう
- 上記フォルダ構成でDatapackを作成してワールドに読み込む
- 以下のコマンドを実行する
/function my_datapack:effect
- サバイバルモードで座標の近くに立ち、発光エフェクトが継続的に付くことを確認する
/gamemode creativeに切り替えて、エフェクトがかからなくなることを確認する
まとめ
- ターゲットセレクター(
@a/@eなど)はコマンドの「対象を指定する記号」で、省略できない [...]で引数を付けることでセレクターの対象をさらに絞り込めるdistanceで距離、nameで名前、gamemodeでゲームモード、tagでカスタムタグ、teamでチームによる絞り込みができるsortとlimitを組み合わせると「最も近い1体だけ」「ランダムな3人」といった取得方法も制御できる- 複数の引数はカンマで並べると AND 条件になる。
!を付けると否定条件になる - チャット欄で動作を確認してからDatapackのファイルに移すと理解が深まる
次の記事では、今覚えたセレクター引数をそのまま使って、give や tellraw など基本コマンド10個を**「参加演出Datapack」を作りながら**身につけていきます。
