Skip to content

定时任务命令语法指南

定时任务命令里支持使用 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:mm06: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

实际执行顺序如下:

  1. 广播当前服务端版本和 TPS。
  2. 广播“服务器即将重启”并等待 1 秒,重复 3 次。
  3. 广播“正在重启服务器”。
  4. 调用 OPanel 的服务器重启操作。

Released under the GPL-3.0 License