参数限制
命令参数类型只能解决“能不能解析”的问题,而限制器用来解决“这个值合不合法”的问题。
限制器位置
限制器配置在参数节点的 argument.restrict 里。
argument:
type: INT
required: true
restrict:
mode: range
value: 1..100
当前支持的限制模式
| 模式 | 说明 | 适合场景 |
|---|---|---|
range | 数值范围限制 | 限制伤害、数量、半径 |
regex | 正则匹配 | 限制命名格式 |
enum / whitelist | 枚举或白名单限制 | 限制可选值集合 |
permission | 额外权限限制 | 某些分支命令只给更高权限的人 |
sender | 发送者类型限制 | 只允许玩家或控制台执行 |
range
restrict:
mode: range
value: 1..10
适合限制:
- 数量
- 等级
- 半径
- 延迟时间
regex
restrict:
mode: regex
value: "^[a-zA-Z0-9_]+$"
适合限制:
- 自定义 ID
- 标签名
- 简单命名规则
enum / whitelist
restrict:
mode: enum
value: "easy,normal,hard"
适合限制输入只能来自一小组固定选项。
permission
restrict:
mode: permission
value: monoceros.example.advanced
这种写法适合你已经进入某条命令分支后,还想继续做更细的权限门槛。
sender
restrict:
mode: sender
value: player
适合限制:
- 只能玩家执行
- 只能控制台执行
使用建议
- 参数类型负责“怎么解析”
- 限制器负责“是否放行”
- 业务逻辑负责“通过后做什么”
把三层职责分开,你的命令会更容易维护。