北冥餅鯤 | testforblock(s) | 指令詳解第6期

哀奠
極其重要的指令testforblocks
在1.13的第3個快照被刪除
探測某個方塊是否在某個位置/測試兩個區(qū)域中的方塊是否相同。
——Minecraft Wiki
一、什么是testforblock(s)
testforblock可以測試某個坐標(biāo)的某個方塊是否與規(guī)定的方塊相同,而testforblocks則可以用更簡單的、不需要學(xué)習(xí)數(shù)據(jù)值的方法執(zhí)行類似testforblockblock的指令,或利用其選區(qū)創(chuàng)造更多有趣的作品。
二、testforblocks(s)的語法
testforblock x y z 方塊名 數(shù)據(jù)值
XYZ:目標(biāo)所處的位置
方塊名:與目標(biāo)相比較的方塊
數(shù)據(jù)值:與目標(biāo)相比較的方塊的詳細(xì)數(shù)據(jù)值
適用于:指令大佬(因為個人感覺數(shù)據(jù)值是一個非常麻煩的東西,能不用就不用)
使用實例:testforblock 0 64 0 lever {Powered:"true"}(數(shù)據(jù)值是我瞎寫的,別打我,嗷)
效果(搭配高頻循環(huán)):當(dāng)0 64 0處的拉桿開啟時,該命令方塊可以利用比較器輸出信號(只要是指令執(zhí)行成功或判斷型指令返回結(jié)果為TRUE時都可以用比較器輸出信號,敲黑板)??梢月赃^紅石布線的過程。
testforblocks x1 y1 z1 x2 y2 z2 x3 y3 z3 模式
XYZ1:選區(qū)的起點
XYZ2:選區(qū)的終點
XYZ3:目標(biāo)區(qū)域的起點
方塊名:與目標(biāo)相比較的方塊
模式:All:必須全部匹配;masked:只要源選區(qū)的非空氣方塊與目標(biāo)選區(qū)相同就TRUE。
適用于:小萌新和老是想著偷懶的大佬
使用實例:testforblocks 0 64 0 0 64 0 16 64 16 all
效果:0 64 0與16 64 16的方塊必須完全相同(包括NBT數(shù)據(jù))。若完全匹配,返回的SuccessCount為完全匹配的總方塊數(shù)量。
三、testforblock(s)的作用
以紅石口袋所著《盤靈古域》為例,testforblocks主要起到的作用是自定義合成/煉藥。其利用命令方塊行+混合坐標(biāo)+大量的目標(biāo)進行合成公式的匹配。

其中,按下“合成開始”按鈕后,左一紅石線路亮起,激活左二命令方塊(testforblocks ~ ~-1 ~ ~ ~-1 ~ 0 64 0 all),檢測兩者是否相同(左三方塊為正確合成配方),如果正確則激活中間的比較器,后激活右一、右二兩個命令方塊,分別起到復(fù)制合成結(jié)果(clone ~ ~-1 ~ ~ ~-1 ~ 0 64 0,右三為合成結(jié)果)、重置成功次數(shù)(blockdata ~ ~-1 ~-2 {SuccessCount:0}),使合成結(jié)束后比較器回到原本狀態(tài)。隨后,大批量復(fù)制此類型框架(用Ctrl+復(fù)制鍵可以起到復(fù)制其內(nèi)容的作用,敲黑板),修改兩投擲器的內(nèi)容即可,也可以貼牌子提示自己。(發(fā)文時備注:圖例有問題,投擲器會被激活,投擲器和左二右二兩命令方塊中的~-1改成~-2,對不起!)
大多數(shù)地圖(尤其是尋找按鈕類型的)如果不想被紅石布線困難、紅石布線占空間、紅石延長有延遲等問題困擾,可以使用testforblock解決。(紅石這么麻煩,后來怎么了呢?無一幸免,高頻被循環(huán)命方替代、比較器被連鎖命方替代、紅石線路被testforblock替代)比如上面提到的例子:testforblock 0 64 0 lever {Powered:"true"}(數(shù)據(jù)值是我瞎寫的,別打我,嗷),就可以超遠程秒傳紅石信號。(如果你是偵測器玩家……?那這個不占空間= =)而且,這樣也可以防止部分作弊愛好者反向執(zhí)行指令(因為靠布線可以找到命方,但在這里命方可以追蹤到按鈕,按鈕追不到命方,模組除外),造成作弊。
學(xué)會這些指令還有別的作用,比如盤靈古域里有一個箱子,只要打開就會有“臭小子!想偷我東西??!”的提示,可以更進一步,放兩個箱子進行比較,靠外的箱子明示“禁止偷竊”,并高頻此二箱子,一旦外面的箱子少了東西,就可以kill了。思維更活(e)躍(xin)的地圖作者還可以連上Scoreboard,讓這次偷竊被全圖的命令系統(tǒng)記住……
四、其他
這期已經(jīng)不是類似什么相對絕對坐標(biāo)啊,目標(biāo)選擇器啊,NBT一類的基礎(chǔ)教學(xué),而是真真正正的在進行干貨教學(xué)。另外,我與@端典程序猿達成了合作關(guān)系,各位小伙伴也可以去他的主頁看看哦!
如果你還想看到類似的更多指令教程,請記得關(guān)注鯤鯤!如果你認(rèn)為這期文章很有用,請點擊推薦和投幣!如果可以的話,請分享給你的朋友!
——il|各種神奇的傳送門|li——
execute應(yīng)用|give中的NBT|目標(biāo)選擇器
——il|謝謝圍觀|li——