MINECRAFT數(shù)據(jù)包-計分板[計時]
注:本章學(xué)習(xí)需要一定命令基礎(chǔ)及對數(shù)據(jù)包結(jié)構(gòu)有一定了解?。?!
上一章我們討論了戰(zhàn)利品表與隨機數(shù)相關(guān)內(nèi)容。本章我們來討論計分板相關(guān)的內(nèi)容。
在上一章中,我們完成了一個實例?[雷神之怒]?技能:
[+]使用鉆石斧攻擊有30%概率召喚閃電
本章我們將為其添加一個5秒的技能觸發(fā)冷卻。
首先,我們需要新建一個記分板用于存儲時間值。
并且,我們?yōu)榧寄艿挠|發(fā)添加了timer值為0的限制條件,在data/test/functions/lightning/summon.function中寫入以下內(nèi)容:
當然,你也可以將timer分數(shù)限制寫在進度中(不是重點)
接下來,我們就需要解決計時問題。
這時,我們發(fā)現(xiàn)有兩種解決的方法。
[1]技能執(zhí)行后將實體timer值設(shè)為1,再使用schedule指令延時5秒設(shè)置timer分數(shù)為0
[2]技能執(zhí)行后將實體timer值設(shè)為1000,再在無條件循環(huán)(tick函數(shù))或者條件循環(huán)函數(shù)(根據(jù)需求確定)中每tick將timer分數(shù)大于等于1的玩家的timer值減1,5秒過后正好為0
顯然,在整個處理的流程中,方法1更為簡單。
這時我們需要注意schedule指令的一個特性:
在schedule指令中延時執(zhí)行的函數(shù)不會在原執(zhí)行實體身上執(zhí)行
這樣說可能不夠明白,接下來我們看一個例子:
新建一個schedule.mcfunction函數(shù)文件,寫入
在游戲內(nèi)執(zhí)行
在1秒后你會發(fā)現(xiàn),你并沒有獲得10秒速度2效果。
所以,方法1是不能行的(不考慮窮舉的情況下)
接下來我們主要實現(xiàn)方法2
在data/test/functions/lightning/summon_1.function中寫入以下內(nèi)容
在#minecraft:tick(無條件循環(huán)函數(shù))中寫入以下內(nèi)容
這樣,我們便完成了技能冷卻的制作。