第三十七章 testforblock、testforblocks-探測 下
我們現(xiàn)在學會了如何探測實體,那方塊呢?
使用/testforblock和/testforblocks。
這兩個指令只相差1個字母,但是功能卻大徑相庭。在英文中,blocks是blcok的復數(shù)。也就是說,/testforblock是探測單個方塊,而/testforblock是探測多個方塊。
真有這么簡單嗎?
/testforblock
作用:探測指定位置是否為某種方塊。
需要權(quán)限等級:Java-2,基巖-1
需要作弊:是
格式:
基巖版
/testforblock <探測位置:坐標><方塊ID:字符串>[數(shù)據(jù)值:整數(shù)]
Java1.13之前
/testforblock <探測位置:坐標><方塊ID:字符串>[數(shù)據(jù)值:整數(shù)]
/testforblock <探測位置:坐標><方塊ID:字符串>[方塊狀態(tài)]
很不幸的是,雖然Java版和基巖版都有加入這條指令,但是Java版中這條指令在1.13版本的第三個快照時被移除了。所以說:
/testforblock in Java
生于1.7.2版本13w37a
死于1.13版本17w45a
算了,正經(jīng)點。
舉個例子,比如:
/execute @a ~~~ testfor ~~-1 ~ minecraft:redstone_block
就是探測每個玩家其腳底下是否是紅石塊,是則成功,否則失敗。
然后是/testforblocks。剛才說過這里多了s,也就是多個方塊,那么是怎么探測的呢?
先來個介紹:
/testforblocks
作用:探測指定區(qū)域是否與另外一個指定區(qū)域完全相同
需要權(quán)限等級:Java-2,基巖-1
需要作弊:是
格式:
/testforblocks <源區(qū)域起始坐標><源區(qū)域終止坐標><比較區(qū)域下西北角坐標>[<模式:masked|all>]
比較時先通過/fill選擇區(qū)域的方式確定源區(qū)域,再與要比較區(qū)域進行比較。只不過這個要比較區(qū)域的位置填寫就挺蛋疼:你得找到要比較區(qū)域的下西北角(專業(yè)術(shù)語叫做區(qū)域基點)。
哪里是下西北角呢?
區(qū)域內(nèi)XYZ三個值最小的地方。
這兩個區(qū)域的大小由第一個定,所以比較的區(qū)域就直接給一個角了。
以后的/clone指令(復制指令)也是這種形式。
舉個例子:
/testforblocks ~-1 ~-1 ~-1 ~1 ~-1 ~1 ~-1 ~2 ~-1
作用是:檢測執(zhí)行者腳下3×3的區(qū)域是否和頭頂3×3的區(qū)域完全一樣
/testforblocks還有兩個比較模式:
all和masked。
all(默認模式)——比較全部。
masked——忽略源區(qū)域的空氣方塊(即源區(qū)域的空氣方塊可以代替要比較區(qū)域的任何方塊)
這兩章所講的3條指令,要發(fā)揮全部作用就需要和紅石比較器配合,不只是單單的用命令方塊執(zhí)行哦!
歷史
Java
1.7.2——加入了/testforblock
1.8——加入了/testforblocks
1.11——/testforblock支持方塊狀態(tài)
1.13——因為execute if的出現(xiàn),/testforblock和/testforblocks被移除。
攜帶版Alpha
0.16.0——加入了/testforblock和/testforblocks