MINECRAFT数据包-计分板[计时]
注:本章学习需要一定命令基础及对数据包结构有一定了解!!!
上一章我们讨论了战利品表与随机数相关内容。本章我们来讨论计分板相关的内容。
在上一章中,我们完成了一个实例 [雷神之怒] 技能:
[+]使用钻石斧攻击有30%概率召唤闪电
本章我们将为其添加一个5秒的技能触发冷却。
首先,我们需要新建一个记分板用于存储时间值。
并且,我们为技能的触发添加了timer值为0的限制条件,在data/test/functions/lightning/summon.function中写入以下内容:
当然,你也可以将timer分数限制写在进度中(不是重点)
接下来,我们就需要解决计时问题。
这时,我们发现有两种解决的方法。
[1]技能执行后将实体timer值设为1,再使用schedule指令延时5秒设置timer分数为0
[2]技能执行后将实体timer值设为1000,再在无条件循环(tick函数)或者条件循环函数(根据需求确定)中每tick将timer分数大于等于1的玩家的timer值减1,5秒过后正好为0
显然,在整个处理的流程中,方法1更为简单。
这时我们需要注意schedule指令的一个特性:
在schedule指令中延时执行的函数不会在原执行实体身上执行
这样说可能不够明白,接下来我们看一个例子:
新建一个schedule.mcfunction函数文件,写入
在游戏内执行
在1秒后你会发现,你并没有获得10秒速度2效果。
所以,方法1是不能行的(不考虑穷举的情况下)
接下来我们主要实现方法2
在data/test/functions/lightning/summon_1.function中写入以下内容
在#minecraft:tick(无条件循环函数)中写入以下内容
这样,我们便完成了技能冷却的制作。

