跳到主要内容

参数限制

命令参数类型只能解决“能不能解析”的问题,而限制器用来解决“这个值合不合法”的问题。

限制器位置

限制器配置在参数节点的 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

适合限制:

  • 只能玩家执行
  • 只能控制台执行

使用建议

  • 参数类型负责“怎么解析”
  • 限制器负责“是否放行”
  • 业务逻辑负责“通过后做什么”

把三层职责分开,你的命令会更容易维护。