ConditionalCommands 条件指令

作者:konsolas 发布时间:2015年11月7日 原生版本:未知 测试支持:1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16

只有在满足某些条件时才执行命令。

点此下载

插件详细介绍

🎮 ConditionalCommands

ConditionalCommands 插件允许你在满足特定条件时执行命令。它主要用于那些需要在特定条件下自动执行命令的插件,并支持执行多个命令,且每个命令都可以设置不同的延迟。

📌 使用方法

  • /cc <player> unless <condition> do <command>
  • /cc <player> if <condition> do <command>
  • /cc help
  • /cc reload
  • /cc cooldown <arbitrarykey>

别名: /ccmd

⚙️ 条件 (Conditions)

条件的语法如下:


<expression>::=<term>{<or><term>}
<term>::=<factor>{<and><factor>}
<factor>::=<comparison>|<not><factor>|<expression>)
<comparison>::=<constant><comparator><constant>
<constant>::=floating point number or integer
<and>::='&'
<or>::='|'
<not>::='!'
<comparator>::='>'|'='|'<'

只有数字可以比较,占位符只能包含数字。如果一组中有多个比较运算符(如 3>=<2),则只会使用第一个运算符。比较不能包含空格。不等可以用 !(value=value) 检查。

💡 示例


/cc konsolas unless -ping->200 do kick konsolas
/cc konsolas if (-ping-<300&-ping->100)&-tps->15.0 do msg konsolas Your ping is between 300 and 100, and the TPS is greater than 15.

🧰 占位符 (Placeholders)

占位符用 - 分隔。由于它们通过替换应用,如果输入不正确,可能会在解析过程中检测到错误。

  • ping - 被测试玩家的延迟。
  • tps - 服务器在过去 2 秒内的平均 TPS。
  • time_online - 玩家在线时长(毫秒)。
  • uptime - 服务器运行时间(ticks)。
  • player_count - 服务器上的玩家数量。
  • perm:<permission> - 如果玩家拥有权限,则为 1.0,否则为 0.0。例如:-perm:essentials.home-
  • perm_count:<permission> - 在线且拥有 <permission> 的玩家数量。
  • aacvl:<check> - 给定检查的 AAC 违规等级(内部名称)。例如:-aacvl:speed-
  • chance:<percentage>% - 在 percentage% 的时间内为 1.0。例如:-chance:34.5%-
  • cooldown:<arbitrarykey> - 返回自上次执行 /cc cooldown <arbitrarykey> 命令以来的秒数。如果从未为给定的 <arbitrarykey> 执行过 /cc cooldown,则返回 43200。

永远不会返回小于 0 的值。

例如:


/cc if -cooldown:some_key->59 do /0/ cc cooldown some_key /0/ broadcast sent up to once every 60 seconds

支持的最大冷却时间为 12 小时(即 43200 秒)。冷却时间不会保存到文件,因此会在服务器重新加载/重启时重置。例如,可以在 AAC 的配置中使用玩家占位符作为 arbitrarykey 的一部分。

✨ 多命令/延迟命令 (Multi command / delayed commands)

在语句的 do 子句中,可以同时执行多个命令,并且可以根据需要延迟选定的命令。命令分隔符为 /<delay>/,其中 // 之间的整数表示命令应执行的延迟(以 ticks 为单位)。

🔑 示例


/cc konsolas if -aacvl:heuristics->0 do /1200/ ban konsolas 1 minute delayed ban for killaura
/cc konsolas if -perm:some.permission-=1 do /0/ broadcast konsolas has some.permission! /0/ broadcast second broadcast! /20/ broadcast 1 second later!

👨‍💻 开发者模式 (Developer mode)

默认情况下,ConditionalCommands 将隐藏解析错误等细节,以提高用户友好性,并且会忽略执行命令时生成的异常。可以通过将 plugins/ConditionalCommands/config.yml 中的 dev 选项更改为 true 来更改此行为。

⚙️ Config


dev: false