EP.9 检测方块【基岩版指令教程】
同学们好,我是ThePlayer571,我们继续来学习,基岩版基础指令。
本期我们将介绍/testforblock和/testforblocks这两条指令,它们的作用都是检测方块。
/testforblock
/testforblock,用于检测特定位置是否存在某个方块。语法为/testforblock <x> <y> <z> <方块名称> 。其中<x>,<y>,<z><方块名称>是想要检测的方块的名称。
例如,我们想检测(402,64,-378)处(即图中框选处)是否存在一个石头 (stone),就可以输入/testforblock 402 64 -378 stone。


/testforblock 与命令方块的交互
众所周知,执行成功的命令方块能被比较器检测到。结合/testforblock指令,我们可以做出独特的装置。
情景需求
我是一名服务器的服主,我想制作一个求雨台(样貌如图所示),将钻石块(diamond_block)放在下界合金块上时,天气会变为雨天。

实现方法
首先,确定钻石块的放置位置(336,66,-326)。

然后使用testforblock 336 66 -326 diamond_block检测对应位置是否是钻石块,后面接上weather rain以调节天气。详情如图:



/testforblocks
testforblocks,用于检测两个区域内的方块是否完全相同。语法是/testforblocks <源区域起始坐标> <源区域结束坐标> <目标区域角落的坐标>,与/clone的语法极其相似,选取源区域和目标区域的方式也是一样的,这里不过多赘述。
如果我们想检测如图两个区域内的方块是否完全相同,可以按照以下步骤进行。

首先,确定左方区域(源区域)的范围。如图,坐标分别为(422,78,-403),(424,76,-401)


然后,确定右方区域(目标区域)西北下角的坐标。如图,坐标为(428,75,-402)

输入指令/testforblocks 422 78 -403 424 76 -401 428 75 -402,检测成功。


同样,/testforblocks也能与命令方块结合,用法与/testforblock相同。
打个总结
本期我们学习了/testforblock和/testforblocks这两条用于检测方块的指令,难度适中。实际上,这两条指令在Java版已经被废除了,这是因为MC存在这两条指令的平替,那就是/execute。虽然可以直接学习/execute,但先学习较简单的/testforblock打牢基础,也是有必要的。

本节课课后作业:
输入一条指令,检测
(3,5,7)处是否为金块(gold_block)。输入一条指令,检测
(1,6,7),(3,4,9)范围内的结构是否和(12,15,17),(10,17,19)内的结构相同。

上节课课后作业答案:
小明在输入指令的时候不小心打翻了墨水,他的指令有几处被遮住了(
#处即被遮住部分):/fi## 0 0 0 # # 2 stone。指令的效果是:填充一个体积为27的立方体,请你将其还原。
/fill 0 0 0 2 2 2 stone
成功执行一条
/fill指令,将(422 76 -403),(424 78 -401)范围内的铁块(iron_block)替换为空气(air)。
/fill 422 76 -403 424 78 -401 air replace iron_block
成功执行一条
/clone指令,复制任意结构。
例:

