发现版上鲜少这类的文章就来分享一下
一开始是跟朋友自己开服务器玩,他说想要盖全境封锁的暗区,我就设计了一个能“倒数计时完毕将玩家发送出去”的撤离指令。
右边一条直的就是本文重点

原理
主要是运用了计分板(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,其他版本不一定适用喔