我的世界目标选择器生成器
把「半径 10 格内、带 boss 标签、不是村民的实体」翻译成正确的 @e[...] 写法。每加一个条件都会给出中文解释,还会提醒容易踩的坑。
生成的选择器
示例指令
这条选择器的含义
1. 选择范围
2. 身份条件
3. 位置与范围
指定起点坐标 留空则以指令执行位置为起点
长方体范围 dx/dy/dz 从起点向正方向延伸的格数
4. 数量、排序与进阶
选择器参数速查表
| 参数 | 含义 | 写法示例 |
|---|---|---|
type | 实体类型,仅 @e 可用,支持 ! 反选和 # 标签 | type=zombie / type=!player |
distance | 球形距离范围 | distance=..10 |
x,y,z + dx,dy,dz | 长方体区域筛选 | x=0,y=64,z=0,dx=16,dy=8,dz=16 |
tag | 记分板标签,可写多个(并且关系) | tag=boss,tag=!dead |
scores | 记分板分数区间 | scores={money=100..} |
nbt | NBT 部分匹配 | nbt={Invulnerable:1b} |
limit + sort | 数量与排序 | limit=1,sort=nearest |
level | 玩家经验等级 | level=30.. |
gamemode | 游戏模式 | gamemode=!spectator |
写选择器的三个性能建议
- 先限类型再限范围。
@e[type=zombie,distance=..8]比@e[distance=..8,type=zombie]更快,因为游戏会先按类型索引缩小候选集。 - 能用 dx/dy/dz 就别用 distance。长方体判定比球形距离判定便宜,刷怪塔、检测区这类场景差别明显。
- 循环命令方块里加
limit和sort=arbitrary。避免每刻对全服实体排序。
常见问题
@p、@a、@e、@r、@s 分别是什么?
@p 最近的一名玩家;@a 全部玩家(包括死亡状态的);@e 全部实体(含掉落物、盔甲架等);@r 随机一名玩家;@s 指令执行者自己。只有 @e 支持 type 参数,其余四个只能选玩家。
distance=..10 和 r=10 有什么区别?
r、rm、c、m 这些是 1.12 及更早的旧写法,1.13 之后已经全部废弃。现在统一写成范围形式:distance=..10(10 格以内)、distance=5..(5 格以外)、distance=5..10(5 到 10 格之间)。
为什么 limit=1 选出来的不是最近的那个?
因为 @e 的默认排序是 arbitrary(任意顺序),必须显式写 sort=nearest 才是最近优先。@p 默认就是最近优先,@r 默认随机。
scores 和 nbt 怎么写?
分数写成 scores={kills=5..,deaths=..2};NBT 写成 nbt={IsBaby:1b} 这类结构,例如筛选手持钻石剑的实体可以用 nbt={SelectedItem:{id:"minecraft:diamond_sword"}}。注意 NBT 匹配是部分匹配,只要写出的字段都对上就算命中。