Skip to content

Composite Conditions

Noogear edited this page Mar 9, 2026 · 1 revision

复合条件 (any / all)

anyall 节点用于组合多个条件,实现 OR / AND 逻辑。

基本格式

# ANY(OR):任一子条件成立即通过
- any:
    - check: <variable1>
      op: "<operator>"
      value: <value>
    - check: <variable2>
      op: "<operator>"
      value: <value>
  on_fail:
    - # 所有条件都不满足时执行的节点

# ALL(AND):全部子条件成立才通过
- all:
    - check: <variable1>
      op: "<operator>"
      value: <value>
    - check: <variable2>
      op: "<operator>"
      value: <value>
  on_fail:
    - # 任一条件不满足时执行的节点
字段 类型 必填 说明
any / all List 子条件节点列表
on_fail List 条件不满足时执行的节点列表

短路求值

  • any:从上到下逐个检查,一旦某个条件成立,跳过剩余条件
  • all:从上到下逐个检查,一旦某个条件不成立,跳过剩余条件

嵌套

支持任意深度的嵌套组合,可以用 anyall 自由搭配:

# (damage > 100 AND rank >= 5) OR weaponName == "legendary_sword"
- any:
    - all:
        - check: damage
          op: ">"
          value: 100
        - check: rank
          op: ">="
          value: 5
    - check: weaponName
      op: "=="
      value: "legendary_sword"

示例

OR 条件:满足任一即可

- any:
    - check: damage
      op: ">"
      value: 50
    - check: weaponName
      op: "=="
      value: "sword"
  on_fail:
    - action: "log"
      args: ["所有条件都不满足"]

AND 条件:必须全部满足

- all:
    - check: damage
      op: ">"
      value: 10
    - check: weaponName
      op: "=="
      value: "sword"
  on_fail:
    - return

多层嵌套

- all:
    - check: entity
      op: "!null"
    - any:
        - check: damage
          op: "between"
          value: [100, 999]
        - check: weapon
          op: "starts_with"
          value: "NETHERITE"
  on_fail:
    - action: "sendMessage"
      args: ["条件不满足"]
    - return

实际场景:PvP 条件守卫

flow:
  - all:
      - check: damage
        op: ">"
        value: 5
      - check: weapon
        op: "in"
        value: ["DIAMOND_SWORD", "IRON_SWORD", "NETHERITE_SWORD"]
      - check: entity
        op: "!null"
    on_fail:
      - return

  - action: "processPvP"
    args: ["{entity}", "{damage}"]

Clone this wiki locally