第八十四章 bossbar-自定義BOSS欄 下
?。ù苏鹿?jié)已于2022年7月22日重寫)
在上一個章節(jié),我們創(chuàng)建了一個ID為minecraft:server_owner,叫做『腐竹』的BOSS欄。這個BOSS欄是粉色的,分成20段,最大值為20。雖然看起來很厲害,但有一個問題——這個BOSS欄沒有實際用處。
所以在這一個章節(jié),我們要讓這個BOSS欄發(fā)揮出實際的用處,使得服主的血量能夠?qū)崟r反映到這個BOSS欄上。
既然要能夠?qū)崟r反映,我們就要解決兩個問題:
?、偃绾螌崟r獲取到服主的血量
②如何將服主的血量存儲到BOSS欄的值中
首先來看第一個問題,這個問題其實很好解決,我們有兩種簡單的辦法:①使用NBT標(biāo)簽,直接獲?、趧?chuàng)建一個health準(zhǔn)則的計分項,然后獲取服主在這個計分項上的值
第一個方法我們暫且沒有學(xué)過,但第二個你總該會吧?讓我們來試一試:
/scoreboard objectives add health health
這將會創(chuàng)建一個health準(zhǔn)則的叫做health的計分項,然后你就不用管了,游戲會自動把每個玩家的血量存儲到這個計分項上。讓我們來看一看游戲弄得如何:
/scoreboard objectives setdisplay sidebar health
這將會在右側(cè)邊欄顯示出health計分項,然后你會發(fā)現(xiàn)——怎么空空如也?
其實游戲僅僅會在玩家血量變化的時候記錄血量的值到計分板上,由于此時計分項才剛創(chuàng)建,還沒有任何一名玩家的血量發(fā)生變化,計分項自然就空空如也。你可以嘗試摔一次跤,正常情況下右邊就會正確顯示出你的血量。
計分項弄好后,我們就可以通過以下指令獲取到服主的血量:
/scoreboard players get Fuzhu health
?。ㄆ渲校現(xiàn)uzhu代表服主的游戲名稱)
第一個問題就這樣解決了,但還有第二個問題:如何將服主的血量存儲到BOSS欄的值中
在這邊,我們就得使用execute存儲子命令的bossbar子命令,其格式如下:
... store <返回類型> bossbar <ID>(value|max)...
ID參數(shù),也就是要存儲到的BOSS欄的ID;『(value|max)』參數(shù),也就讓你選擇要將返回的結(jié)果存儲到該BOSS欄的值還是最大值中。在這邊我們當(dāng)然是要存儲到值(value)中,也就是使用如下指令:
/execute store result bossbar minecraft:server_owner value run scoreboard players get Fuzhu health
上面的指令將會把『scoreboard players get Fuzhu health』返回的結(jié)果,也就是服主的血量,存儲到ID為『minecraft:server_owner』的BOSS欄的值中,這樣子BOSS欄就可以顯示出服主當(dāng)前的血量了!
我們只需要將這條指令放入一個一直重復(fù)執(zhí)行的命令方塊中,就可以實現(xiàn)『服主的血量實時反映到這個BOSS欄』這樣的效果。
最后我留個作業(yè),你感興趣的話可以嘗試實現(xiàn)實現(xiàn)。
作業(yè)內(nèi)容:在本章內(nèi)容的基礎(chǔ)上,利用所學(xué)知識,實現(xiàn)下面描述的效果
?、偃绻鞑辉诰€,隱藏BOSS欄,在線的情況下再顯示出來。
?、诜髦車欢ǚ秶鷥?nèi)的玩家會看到『腐竹BOSS欄』,超出這個范圍的玩家則無法看到
?、墼诜髯约旱难可舷尢嵘那闆r下(比如有傷害吸收或生命提升的藥水效果),也要相應(yīng)提升BOSS欄的最大值
其中,第三點要完美實現(xiàn)的話需要一定的NBT知識,如果你并不不了解,也可以用計分板做一個勉勉強強的效果出來。
這就是本章的全部內(nèi)容。