本帖最后由 pca006132 于 2016-11-12 16:06 编辑 
目标选择器
用途
命令很多时候是需要针对实体去执行的,比如/tp。如果你使用玩家名来指定传送的玩家,比如/tp pca006132 0 5 0,你就需要针对每个玩家写一个命令,这方法在很多情况下是不可能使用的,因为我们不一定会知道被传送的玩家是谁,而且就算知道所有玩家,我们也需要举出所有的可能(穷举),不然就有些玩家无法传送,这样做需要的命令数就会非常多。除此之外,如果我们这样做,我们就无法传送玩家以外的实体了,所以穷举玩家名的方法是接近不可能的。
所以,在针对实体执行命令的情况下,我们通常会使用目标选择器。
选择器的用途,就是根据某些条件(用选择器参数指定)来选择实体,所以选择到的数量可以是没有/一个/多个。
目标选择器
用途
命令很多时候是需要针对实体去执行的,比如/tp。如果你使用玩家名来指定传送的玩家,比如/tp pca006132 0 5 0,你就需要针对每个玩家写一个命令,这方法在很多情况下是不可能使用的,因为我们不一定会知道被传送的玩家是谁,而且就算知道所有玩家,我们也需要举出所有的可能(穷举),不然就有些玩家无法传送,这样做需要的命令数就会非常多。除此之外,如果我们这样做,我们就无法传送玩家以外的实体了,所以穷举玩家名的方法是接近不可能的。
所以,在针对实体执行命令的情况下,我们通常会使用目标选择器。
选择器的用途,就是根据某些条件(用选择器参数指定)来选择实体,所以选择到的数量可以是没有/一个/多个。
格式
@选择器名称[参数=值]
*注: 每个参数只能出现一次
选择器名称
参数
格式: 参数名=数值
文字类的数值前加上!则代表选择所有非该数值的目标
选择器只接受某些字符,如果有不接受的字符则会当作玩家名
空间限制
如果选择器里有任何关于坐标的参数(比如r/rm/dx),那个参数的作用范围就是执行的世界(其他世界的不会被选择到)
如果那个选择器里同时有dx/dy/dz和r/rm,那么选择到的范围就是dx/dy/dz和r/rm重叠的范围
如果那个选择器里有dx/dy/dz任何一个/两个,那么剩余的会默认为0
选择顺序
选择器会优先选择在执行的世界的实体/玩家(先选择最近的实体,当那些实体的距离一样时,它就会优先选择存在最久的),然后就是别的世界距离你现在坐标最近的实体
常见错误
例子
选择一个距离执行点5格以外,最近的实体
选择所有目标(objective) X分数大于50、小于100,目标Y分数大于等于-200,小于等于0,目标Z分数等于200的实体
目标选择器
用途
命令很多时候是需要针对实体去执行的,比如/tp。如果你使用玩家名来指定传送的玩家,比如/tp pca006132 0 5 0,你就需要针对每个玩家写一个命令,这方法在很多情况下是不可能使用的,因为我们不一定会知道被传送的玩家是谁,而且就算知道所有玩家,我们也需要举出所有的可能(穷举),不然就有些玩家无法传送,这样做需要的命令数就会非常多。除此之外,如果我们这样做,我们就无法传送玩家以外的实体了,所以穷举玩家名的方法是接近不可能的。
所以,在针对实体执行命令的情况下,我们通常会使用目标选择器。
选择器的用途,就是根据某些条件(用选择器参数指定)来选择实体,所以选择到的数量可以是没有/一个/多个。
2021.12 数据,可能有更多内容
目标选择器
用途
命令很多时候是需要针对实体去执行的,比如/tp。如果你使用玩家名来指定传送的玩家,比如/tp pca006132 0 5 0,你就需要针对每个玩家写一个命令,这方法在很多情况下是不可能使用的,因为我们不一定会知道被传送的玩家是谁,而且就算知道所有玩家,我们也需要举出所有的可能(穷举),不然就有些玩家无法传送,这样做需要的命令数就会非常多。除此之外,如果我们这样做,我们就无法传送玩家以外的实体了,所以穷举玩家名的方法是接近不可能的。
所以,在针对实体执行命令的情况下,我们通常会使用目标选择器。
选择器的用途,就是根据某些条件(用选择器参数指定)来选择实体,所以选择到的数量可以是没有/一个/多个。
格式
@选择器名称[参数=值]
| 参数名称 | 
| 描述 | 
| 选择器名称 | 
| 决定选择器行为 | 
| 参数 | 
| 额外选择条件。不一定要存在,但如果存在一个或多个参数则必须用方括号括住,并且以逗号分隔开不同的参数(所有符号都是英文符号,如,和[]) | 
| 值 | 
| 参数所对应的数值,用来确定参数所对应的数据,与参数结合使用来选择实体。 | 
选择器名称
| 名称 | 
| 描述 | 
| p | 
| 最近的玩家(type参数在此无效) | 
| a | 
| 全部玩家(包括死去的玩家, type参数在此无效) | 
| r | 
| 随机实体(默认为玩家) | 
| e | 
| 所有实体(包括玩家) | 
格式: 参数名=数值
文字类的数值前加上!则代表选择所有非该数值的目标
选择器只接受某些字符,如果有不接受的字符则会当作玩家名
| 部分 | 
| 接受字符(不包括空格) | 
| 选择器参数 | 
| , 0-9a-z A-Z = ! _ - | 
| 选择器参数数值 | 
| 0-9 a-z A-Z _ - | 
| 选择器参数名称 | 
| 0-9 a-z A-Z _ | 
注:
如果选择器参数里出现了不接受的字符,游戏会把它视为玩家名称
如果数值里出现其他符号,整个参数(参数名称=值)以及后方的所有参数都会被无视
如果参数名称里出现其他符号,整个参数(参数名称=数值)以及后方的所有参数都会被无视
如果那个数值是数字类的(如x/y/z等等), 而你填了非数字的东西进去,它会把这个参数无视
如果选择器参数里出现了不接受的字符,游戏会把它视为玩家名称
如果数值里出现其他符号,整个参数(参数名称=值)以及后方的所有参数都会被无视
如果参数名称里出现其他符号,整个参数(参数名称=数值)以及后方的所有参数都会被无视
如果那个数值是数字类的(如x/y/z等等), 而你填了非数字的东西进去,它会把这个参数无视
空间限制
如果选择器里有任何关于坐标的参数(比如r/rm/dx),那个参数的作用范围就是执行的世界(其他世界的不会被选择到)
如果那个选择器里同时有dx/dy/dz和r/rm,那么选择到的范围就是dx/dy/dz和r/rm重叠的范围
如果那个选择器里有dx/dy/dz任何一个/两个,那么剩余的会默认为0
选择顺序
选择器会优先选择在执行的世界的实体/玩家(先选择最近的实体,当那些实体的距离一样时,它就会优先选择存在最久的),然后就是别的世界距离你现在坐标最近的实体
常见错误
- 选择器中有不接受的字符,比如中文
- 重复的选择器参数,比如两个type
- 以为score_目标名称=数值代表选择分数=数值的实体,然而事实是选择分数小于等于数值的实体
- 大小写/全型半型错误。实际上那些参数的名称都是小写,而且选择器只支持半型的少数字符,而那些数值也是大小写敏感的
- 把实体NBT当作选择器参数一样写,然而选择器参数就那几个,NBT并不是选择器参数,选择器参数也不是NBT
- 以为物品名称就是它扔出来之后的名称,然而并不是(原因:物品名称的NBT是{Item:{tag:{display:{Name:"名称"}}}},而实体名称的NBT是{CustomName:"名称"))
- 逻辑相关错误,比如在执行这个指令的时候分数不可能在指定范围内
- @a写成@e[type=Player],或者是@p写成@a[c=1]。严格来说并不是错误,然而这个是不好的习惯
 因为这样子你的命令可读性就会减低,而且那个命令长度会增加,不好写
- 开括号之后需要关括号,比如@e[type=ArmorStand.r=3就会判断为@e,相差会很远
 
例子
选择一个距离执行点5格以外,最近的实体
代码:
- @e[rm=5,c=1]
代码:
- @e[score_X_min=51,score_X=99,score_Y_min=-200,score_Y=0,score_Z_min=200,score_Z=200]
还真的是浅谈,有复杂点的应用吗
r的球心会因为加x或y或z改 那么如果只加了其中的一个或两个球心会到哪里?
如果@r可以用type,那么@r应该是:选择随机的一个实体
FHC红石 发表于 2015-7-16 20:06
如果@r可以用type,那么@r应该是:选择随机的一个实体
是一种
chyx 发表于 2015-7-16 19:59
r的球心会因为加x或y或z改 那么如果只加了其中的一个或两个球心会到哪里? ...
会因为x/y/z而改变
如果只是写了1/2个x/y/z,那么那个执行坐标的x/y/z就会改变,而其他坐标这不会更改
比如说你原本的坐标是1 2 3,选择器是@e[x=5,r=0],那么就是选择距离5 2 3 不足一格距离的实体
pca006132 发表于 2015-7-16 20:42
会因为x/y/z而改变
如果只是写了1/2个x/y/z,那么那个执行坐标的x/y/z就会改变,而其他坐标这不会更改
比 ...
你可以写下每个选择器的发起者是谁
比如tp @ @ 第二个选择器是相对于第一个的 第一个是相对于cb/人的(记得好像是)
而stats的计分板的主人却是暂时不用的 直接把那一段当做文本存在实体/牌子/cb上 有命令激活了再分析选择器(同记得好像是)
把这个写下吧
漫长的一天
你写的怎么样了?
你写的怎么样了?
如果那个选择器里同时有dx/dy/dz和r/rm,那么r/rm会被忽略
我这里可以共存
新出的tag可以多个
话说@a能选中死后没来得及点respawn的人
但@e不能
话说@a能选中死后没来得及点respawn的人
但@e不能
6666666666666666666
这些Wiki上基本都有。
是啊是啊,基本都有,然而这只pcc搬过来加点细节科(shui普(tie下岂不美哉?
很有用,收藏了。锁视角,安全屋什么的都可以实现了。
有没有探测玩家剩余生命的选择器?
谁说不能两个type的,两个都是type=!XXX就行
Green_stone 发表于 2017-1-24 11:38
有没有探测玩家剩余生命的选择器?
记分板 Health判据
袁哥@神 发表于 2017-1-24 11:43
谁说不能两个type的,两个都是type=!XXX就行
那你就试试呗,不行的
pca006132 发表于 2017-1-24 21:52
那你就试试呗,不行的
早都试过了,你在CB里打/testfor @e[type=!cow,type=!bat]看看行不行
常见错误最后一条选择器中的,写成了.
能发下基础的指令码qwq
能发下基础的指令码

