第三十七章 testforblock、testforblocks-探测 下
我们现在学会了如何探测实体,那方块呢?
使用/testforblock和/testforblocks。
这两个指令只相差1个字母,但是功能却大径相庭。在英文中,blocks是blcok的复数。也就是说,/testforblock是探测单个方块,而/testforblock是探测多个方块。
真有这么简单吗?
/testforblock
作用:探测指定位置是否为某种方块。
需要权限等级:Java-2,基岩-1
需要作弊:是
格式:
基岩版
/testforblock <探测位置:坐标><方块ID:字符串>[数据值:整数]
Java1.13之前
/testforblock <探测位置:坐标><方块ID:字符串>[数据值:整数]
/testforblock <探测位置:坐标><方块ID:字符串>[方块状态]
很不幸的是,虽然Java版和基岩版都有加入这条指令,但是Java版中这条指令在1.13版本的第三个快照时被移除了。所以说:
/testforblock in Java
生于1.7.2版本13w37a
死于1.13版本17w45a
算了,正经点。
举个例子,比如:
/execute @a ~~~ testfor ~~-1 ~ minecraft:redstone_block
就是探测每个玩家其脚底下是否是红石块,是则成功,否则失败。
然后是/testforblocks。刚才说过这里多了s,也就是多个方块,那么是怎么探测的呢?
先来个介绍:
/testforblocks
作用:探测指定区域是否与另外一个指定区域完全相同
需要权限等级:Java-2,基岩-1
需要作弊:是
格式:
/testforblocks <源区域起始坐标><源区域终止坐标><比较区域下西北角坐标>[<模式:masked|all>]
比较时先通过/fill选择区域的方式确定源区域,再与要比较区域进行比较。只不过这个要比较区域的位置填写就挺蛋疼:你得找到要比较区域的下西北角(专业术语叫做区域基点)。
哪里是下西北角呢?
区域内XYZ三个值最小的地方。
这两个区域的大小由第一个定,所以比较的区域就直接给一个角了。
以后的/clone指令(复制指令)也是这种形式。
举个例子:
/testforblocks ~-1 ~-1 ~-1 ~1 ~-1 ~1 ~-1 ~2 ~-1
作用是:检测执行者脚下3×3的区域是否和头顶3×3的区域完全一样
/testforblocks还有两个比较模式:
all和masked。
all(默认模式)——比较全部。
masked——忽略源区域的空气方块(即源区域的空气方块可以代替要比较区域的任何方块)
这两章所讲的3条指令,要发挥全部作用就需要和红石比较器配合,不只是单单的用命令方块执行哦!
历史
Java
1.7.2——加入了/testforblock
1.8——加入了/testforblocks
1.11——/testforblock支持方块状态
1.13——因为execute if的出现,/testforblock和/testforblocks被移除。
携带版Albr /ha
0.16.0——加入了/testforblock和/testforblocks