理解目标选择器
目标选择器用于命令中,无需明确指定目标(如玩家名称)即可选择命令执行对象。一个目标选择器由选择器变量和可选的选择器参数列表组成。
选择器变量
选择器变量定义了待选实体的基础范围。共有六种选择器变量可供选择:
@a- 选择所有玩家@p- 选择最近的玩家@r- 选择随机玩家@e- 选择所有实体@s- 选择命令执行者@initiator- 选择与NPC交互的玩家
选择器参数
选择器参数可以进一步筛选符合特定条件的候选目标。使用选择器参数前必须先指定选择器变量。参数需添加在目标选择器后的方括号[]内,例如:kill @e[]。多个参数之间用逗号分隔。
类型(Type)
通过实体标识符筛选目标。添加感叹号可反选不符合标识符的实体。由于每个实体只能有一个标识符,该参数不可重复使用(反选除外)。可与@r选择器搭配实现随机选择。
type=<标识符>—仅包含符合标识符的实体type=!<标识符>—排除符合标识符的实体
示例:
对所有猪施加漂浮效果:
/effect @e[type=pig] levitation
清除所有非箭矢和雪球的实体:
/kill @e[type=!arrow,type=!snowball]
数量(Count)
根据选择器排序规则限制选中实体数量。
@a、@p和@e按距离升序排序,@r为随机排序。@p和@r的该参数默认值为1。添加负号可反转排序顺序(随机排序不可反转)。
c=<数量>—选择最多<数量>个实体
示例:
清除最近五名玩家背包中的石头:
/clear @a[c=5] stone
对最远的两只骷髅造成伤害:
/damage @e[type=skeleton,c=-2] 2
位置(Position)
更改选择器的起始搜索位置,同时影响距离和体积参数的基准点。未定义时默认使用命令执行位置。
可使用相对坐标定义偏移量。
x=<值>,y=<值>,z=<值>—定义目标选择器的基准坐标
示例:
将最近玩家传送到(140,64,-200)上方十格处:
/teleport @p[x=140,y=64,z=-200] ~ ~10 ~
距离(Distance)
通过实体与选择器的球面距离筛选目标(以脚部位置计算)。
rm=<值>和r=<值>—分别选择最小和最大距离范围内的实体(含边界值)
示例:
清除2到6格范围内的所有鸡:
/kill @e[type=chicken,rm=2,r=6]
为(0,100,0)周围1格内所有玩家的手持物品附魔锋利:
/enchant @a[x=0,y=100,z=0,r=1] sharpness
体积(Volume)
将选择范围限制在特定长方体区域(碰撞箱)内或与之相交的实体。三个参数分别定义各轴向的盒子尺寸。若至少定义一个参数,未定义参数默认为0。以实体的碰撞箱为判断依据。
两坐标点间体积计算公式:
dx = x2 - x1
dy = y2 - y1
dz = z2 - z1dx=<值>,dy=<值>,dz=<值>—选择位于给定包围盒内的实体
示例:
列出12x30x2区域内的所有实体:
/say @e[dx=12,dz=30,dy=2]
为(-400,0,-350)到(-150,256,50)区域内的所有玩家添加"wiki:lobby"标签:
/tag @a[x=-400,y=0,z=-350,dx=250,dy=256,dz=400] add wiki:lobby
为(-1.5,0,-2)到(1,0,1.5)区域内的所有实体添加"wiki:warp"标签:
/tag @a[x=-1.5,y=0,z=-2,dx=2.5,dz=3.5] add wiki:warp
注意:
即使实体的碰撞箱只有部分在体积范围内,仍会被选中。

图示说明:碰撞箱较大的马被选中,而站在同一点但碰撞箱较小的玩家未被选中。
若需精确检测特定Y坐标(如Y=10)的玩家(排除部分重叠情况),可使用如下命令:
/execute as @a at @s if entity @s[y=10,r=1] unless entity @s[y=9,r=1] run say found player
分数(Scores)
通过记分板分数筛选目标。参数为键值对对象,键为记分项,值为数值范围(使用范围语法)。添加感叹号可反选不符合分数范围的实体。
scores={<记分项>=<值>}—选择符合分数条件的实体
范围语法说明:
N..表示≥N的数值..N表示≤N的数值N..M表示N到M之间的数值(含边界)
示例:
将"wiki:points"分数为10的玩家的"points"分数归零:
/scoreboard players set @p[scores={wiki:points=10}] wiki:points 0
为同时满足"wiki:started"=1且"wiki:timer"≤20的盔甲架添加"wiki:start"标签:
/tag @e[type=armor_stand,scores={wiki:started=1,wiki:timer=..20}] add wiki:start
名称(Name)
通过实体名称筛选目标。添加感叹号可反选名称不匹配的实体。
name=<名称>—仅包含指定名称的实体name=!<名称>—排除指定名称的实体
示例:
列出所有名为Shadow的僵尸:
/say @e[type=zombie,name="Shadow"]
给非Steve且非Alex的玩家提升1级:
/xp 1L @a[name=!"Steve",name=!"Alex"]
标签(Tag)
通过实体标签筛选目标。可重复使用以检测多个标签(需全部匹配)。添加感叹号可反选不包含该标签的实体。
tag=<标签>—仅包含有该标签的实体tag=!<标签>—排除有该标签的实体
示例:
清除所有带"wiki:marked"标签且不带"wiki:exempt"标签的生物:
/kill @e[tag=wiki:marked,tag=!wiki:exempt]
族系(Family)
通过实体族系类型筛选目标。可重复使用检测多个族系(需全部匹配)。添加感叹号可反选不符合族系的实体。
family=<族系>—仅包含该族系的实体family=!<族系>—排除该族系的实体
示例:
为所有"monster"族系实体施加再生效果:
/effect @e[family=monster] regeneration
旋转(Rotation)
通过实体朝向筛选目标。分为两种旋转:
X旋转(垂直方向):-90(仰视)到90(俯视)
Y旋转(水平方向):-180到180(北方为起点,顺时针环绕)
rxm=<值>和rx=<值>—选择X旋转在最小最大值之间的实体(含边界)rym=<值>和ry=<值>—选择Y旋转在最小最大值之间的实体(含边界)
X旋转示意图(由@SpacebarNinja提供):

Y旋转示意图(由@SpacebarNinja提供):

示例:
对水平视角及以上的玩家施加1秒失明效果:
/effect @a[rx=0] blindness 1(0度或更低)
对所有面朝南方的玩家造成伤害:
/damage @a[rym=-45, ry=45] 1
全方向对应参数:
| 朝向 | 参数范围(ry,rym) |
|---|---|
| 北 | [ry=-135,rym=135] |
| 南 | [ry=45,rym=-45] |
| 东 | [ry=-45,rym=-135] |
| 西 | [ry=135,rym=45] |
| 西北 | [ry=180,rym=90] |
| 东北 | [ry=-90,rym=-180] |
| 西南 | [ry=90,rym=0] |
| 东南 | [ry=0,rym=-90] |
等级(Level)
通过经验等级筛选目标(仅限玩家)。
lm=<数值>和l=<数值>—分别选择最小和最大等级范围内的玩家(含边界)
示例:
给9级及以下玩家金锭:
/give @a[lm=9] gold_ingot
给10级及以上玩家金锭:
/give @a[l=10] gold_ingot
给10到20级玩家钻石:
/give @a[lm=10, l=20] diamond
游戏模式(Game Mode)
通过游戏模式筛选目标(仅限玩家)。添加感叹号可反选不符合模式的玩家。
m=<游戏模式>—按游戏模式选择玩家
游戏模式对应值:
| 游戏模式 | 有效值 |
|---|---|
| 生存 | 0, s, survival |
| 创造 | 1, c, creative |
| 冒险 | 2, a, adventure |
| 旁观 | spectator |
| 默认 | d, default |
示例:
列出所有创造模式玩家:
/say @a[m=creative]
将非生存且非冒险模式的玩家设为创造模式:
/gamemode creative @a[m=!survival,m=!adventure]
物品(Items)
通过物品栏内容筛选目标。参数为对象(或对象数组),可包含以下参数:
item=<字符串>—必填,物品标识符(支持自定义)quantity=<整数>—物品数量检测(支持范围语法,可反选)data=<整数>—物品数据值(默认为-1,当前不可用:MCPE-151920)location=<字符串>—物品所在槽位(同/replaceitem的slotType参数)slot=<整数>—配合location使用的槽位索引(支持范围语法,可反选)
示例:
检测携带下界合金剑的玩家:
/testfor @a[hasitem={item=netherite_sword}]
清除拥有4个及以上苹果的玩家的2个苹果:
/clear @a[hasitem={item=apple,quantity=4..}] apple 2
检测携带2颗钻石和2根木棒的玩家:
/testfor @a[hasitem=[{item=diamond,quantity=2},{item=stick,quantity=2}]]
检测没有木棒的玩家:
/testfor @a[hasitem=[{item=stick,quantity=0}]







