定时任务命令语法指南
定时任务命令里支持使用 OPanel 特有的命令语法。任务触发后,OPanel 会从上到下逐行处理任务内容:普通行作为 Minecraft 服务端指令执行,以 @ 开头的行作为 OPanel 内置操作执行。
例如,下面的任务会依次向服务器发送两条指令:
text
say 定时任务开始执行
time set day基本规则
- 一行只能编写一条 Minecraft 指令或一个 OPanel 内置操作。
- 每行开头和结尾的空白会被忽略,空行不会执行。
- 普通 Minecraft 指令应使用服务端控制台中的格式,指令前不需要添加
/。 - 去除行首空白后,以
@开头的行会被识别为内置操作。 - 普通 Minecraft 指令中的
@{变量名}会在指令执行前替换为对应的内置变量值。 - 内置操作名和内置变量名区分大小写,应按本文给出的形式填写。
注意
内置变量只会注入普通 Minecraft 指令,不会注入 @sleep、@restart 等内置操作的参数。
内置操作
@loop 与 @end
@loop 用于将一组指令连续执行指定次数,@end 用于标记循环结束。
text
@loop <次数>
<需要循环的指令或内置操作>
@end<次数> 必须是大于 0 的整数。例如,下面的任务会每隔 1 秒广播一次当前 TPS,共广播 3 次:
text
@loop 3
say 当前 TPS:@{tps}
@sleep 1000
@end注意
- 每个
@loop都必须使用@end结束,否则该循环不会正常执行。 - 当前不支持嵌套循环,请将多个循环按顺序分别编写。
@end只能用于结束循环,不能作为独立操作使用。
@sleep
@sleep 用于等待指定毫秒后再继续执行下一行。
text
@sleep <毫秒数><毫秒数> 必须是大于 0 的整数。1000 毫秒等于 1 秒。
text
say 3 秒后继续执行
@sleep 3000
say 继续执行@restart
@restart 用于通过 OPanel 重启 Minecraft 服务端。
text
@restart该操作等同于执行服务端指令 opanel restart-server,会使用 OPanel 中配置的服务器启动指令。使用前请先完成服务器重启配置。由于服务端随后会停止,建议将 @restart 放在任务的最后一行。
内置变量
内置变量使用 @{变量名} 格式,可以插入普通 Minecraft 指令的任意位置。同一行可以使用一个或多个变量,也可以重复使用同一个变量。
| 变量 | 注入内容 | 示例值 |
|---|---|---|
@{version} | 服务端版本 | 1.21.4 |
@{tps} | 实时 TPS,保留两位小数 | 20.00 |
@{motd} | 服务端 MOTD,其中的换行会被移除 | A Minecraft Server |
@{maxPlayerCount} | 最大玩家数 | 20 |
@{ingameTime} | 游戏内时间,格式为 HH:mm | 06:00 |
例如:
text
say 服务端版本:@{version}
say 当前 TPS:@{tps},游戏内时间:@{ingameTime}
say 欢迎来到 @{motd},服务器最多容纳 @{maxPlayerCount} 名玩家任务执行时,OPanel 会先替换已知的内置变量,再将替换后的整行指令发送给服务端。无法识别的变量不会被替换,而是会以原文本保留在指令中。
完整示例
下面的任务先显示服务器状态,循环发送 3 次重启提醒,然后等待 1 秒并重启服务端:
text
say 当前服务端版本:@{version},当前 TPS:@{tps}
@loop 3
say 服务器即将重启
@sleep 1000
@end
say 正在重启服务器
@restart实际执行顺序如下:
- 广播当前服务端版本和 TPS。
- 广播“服务器即将重启”并等待 1 秒,重复 3 次。
- 广播“正在重启服务器”。
- 调用 OPanel 的服务器重启操作。