- 条件与变量
- 相对性
- 或||
- 且&&
- 或且结合
- !非 单个变量
- !非 多个执行体
- 条件嵌套相对性
- 条件嵌套与变量
- 子条件detect
§3.2 testfor
下一页为 execute与testfor区别
3.2.1 指令格式
/testfor <player> [datdaTag]
就是
/testfor 实体选择器 NBT数据
使用后的返回值不是执行指令,而是输出信号
3.2.2 条件与变量
在本小章讲解之前,仍需要预置一个实体进行条件储存:
/summon ArmorStand ~ ~ ~ {CustomName:"f",CustomNameVisible:1}
和之前的execute相同
依旧是原来的效果:
使用
/scoreboard players set @e[name=f] a 1
如果使用:
/testfor @e[name=f,score_a_min=1]
输出信号
反之,
如果使用
/testfor @e[name=f,score_a=0]
则不会输出
3.2.3 条件与NBT
上方的指令
/testfor @e[name=f]
等价于
/testfor @e[] {CustomName:"f"}
仍旧会有输出,因为NBT符合实体条件。
3.2.4 execute与testfor区别
这两条指令皆为探测指令,那么区别究竟是什么
- execute返回指令,testfor返回信号
根据前面可以看出testfor返回的是红石信号,而且需要借助比较器。
(当然testfor也有执行值,可以获取执行值后转存计分版)
- execute倾向计分板,testfor倾向NBT
因为testfor能直接加上NBT进行判断输出。
(当然execute也可以借助scoreboard赋值后缀NBT来达到探测NBT的效果,在变量与NBT有讲解)
- execute无输出器,testfor有输出器
因此上面如果要达成
execute @e[name=f] ~ ~ ~ say 1
的效果
需要如下:
利用testfor探测:
/testfor @e[name=f]
比较器输出:
/say 1
值得注意的是,execute连接高频后会跟着高频输出,
而testfor输出后由于比较器没有更新(Bud)所以仅仅输出一次。
(后续有方法创建单次执行模块)
在模块中着重使用execute
[groupid=546]Command Block Logic[/groupid]