發現版上鮮少這類的文章就來分享一下
一開始是跟朋友自己開伺服器玩,他說想要蓋全境封鎖的暗區,我就設計了一個能「倒數計時完畢將玩家發送出去」的撤離指令。
右邊一條直的就是本文重點
原理
主要是運用了計分板(Scoredboard)跟指令方塊的交互,記分板因為較為複雜就不在這裡贅述,自己也只有查跟計時有關的數據而已
實際運作
首先,必須先創建一個記分板,讓我們命名他為「timer」
指令:/scoreboard objectives add timer dummy,其中「/」在指令方塊中可以省略
add:添加一個計分項目
timer:項目名稱
dummy:計分準則,「dummy」只能使用指令做運算,其他任何變因無法改變其數值
接著在聊天室輸入 /scoreboard objectives setdisplay list timer
讓數值顯示在玩家列表(Tab)中,方便追蹤
接著創建一顆如下圖的指令方塊:
指令:scoreboard players add @a timer 1
功能為:對所有玩家(@a)的timer項目加一分
「重複」模式的指令方塊運行一次指令的時間為1/20秒,重複20次後就是一秒,如此一來就可以進行簡單的計時功能
而因為「需要紅石」,所以將其與可以保持信號的控制桿連接,讓方塊可以重複運行指令,如下圖
(按鈕因為作用時間過短而不使用)
直到這裡,當啟動控制桿,在聊天室里就會瘋狂洗頻就是成功加分了
如果不想要他洗頻,輸入/gamerule commandBlockOutput false 即可關掉消息
在後面連接一顆方塊,擺放方式為蹲下+右鍵點擊前一顆,之後的每顆方塊都是如此
測試時間訂為5秒,也就是分數要達到100,設置如下
指令:execute if score @p timer matches 100
功能為:如果最接近的玩家(@p)的timer分數達到(matches)100分時,輸出(execute)信號給下一方塊
接著要讓計時器數到了5秒後歸零,我用了兩顆方塊來解決
首先,為了讓記分板歸零,用同樣的方式再連接一顆方塊
指令:scoreboard players reset @a timer
功能為:將所有玩家的timer記分板重置為零(reset)
緊接著再連一顆
指令:fill 86 72 -9 86 72 -9 minecraft:lever
fill,要填平地面時很常見的指令,可是為什麼要用到fill呢?
因為當控制桿撥下後不會自動彈回,可是fill產生的控制桿是「非導通」狀態,如此便可以切斷一開始「加分」用的方塊,從而停止計時
注意:如果不加這顆的話,記分板會「加到100分>重置>加到100分>重置」無限輪迴
直到這裡,倒數計時的功能已經完成,剩下就是簡單的發送指令
指令:tp @p X Y Z
如果你想要他倒數完時說些話
指令:say <你想說的話>
以上所有功能都設置完畢了,來測試看看吧!
成功!
實在是用了好久也發生了不少錯誤,很多指令的運用方法都是東拼西湊出來的
在下是指令新手、紅石白痴,如果各位有更好的想法歡迎留言分享
最後感謝我們的叛變特工協助測試
注意:記分板的指令每一個版本間會有差異,本文為1.15.2,其他版本不一定適用喔