# 一般格式

我们已经学习了 **EcoX** 各个插件下的自定义内容的一般配置，下面我们要学习这些不同插件配置下相同的内容 —— The Effect System。

在前面，我们提及 The Effect System 的选项往往是 `effects` 和 `conditions`，这两个选项分别是技能的内容和技能的条件。也就是说，只有在条件被满足的情况下，技能内容才会被触发。

下面我们分别学习这两个选项的一般格式：

## effects 选项

我们给出一个示例的技能：

```
id: spawn_particle
args:
  amount: 10
  chance: 25
  particle: soul
triggers: 
  - mine_block
filters:
  blocks:
    - diamond_ore
    - ancient_debris
conditions: []
mutators:
  - id: translate_location
    args:
      add_x: 0.5
      add_y: 0.5
      add_z: 0.5
```

我们可以看出它由以下部分组成：

* **id**：技能的id，这不是你起名的，而是根据我们后文提及的技能列表对照的选择某个技能。所以，一个 `effects` 下可以有多个相同id的技能。
* **args**：技能的参量，同样也不是你瞎写的，根据我们后文提及的技能列表中，根据你所选择的技能对照填写。
* **triggers**：技能的触发器，后文详细介绍。
* **filters**：技能的筛选，后文详细介绍。
* **mutators**：技能的变化，后文详细介绍。
* **conditions**：技能的条件，后文详细介绍。

这里的 `conditions` 与和 `effects` 同级的 `conditions` 不一样，这里的 `conditions` 只能控制对应技能，而和 `effects` 同级的 `conditions` 能够控制整个 `effects` 乃至整个物品/附魔等，因为 `effects` 才是这些物品/附魔的重要部分。

例如，我们可以设置某个技能只会在玩家在水中才会发生（这是这里的 `conditions`），但这个物品只会在玩家达到 **20** 级后才会生效（这是与 effects 同级的 `conditions`）。

## conditions 选项

我们给出一个示例的条件：

```
conditions:
  - id: has_permission
    args:
      permission: "ecomc.rank.mvp"
    not-met-effects:
      - id: send_message
        args:
          message: "&c你不是我们的MVP!"
```

我们可以看出它由以下部分组成：

* **id**：条件id。同样这不是你起名的，而是根据我们后文提及的条件列表对照的选择某个技能。所以，一个 `conditions` 下可以有多个相同id的条件。
* **args**：条件参量。同 `effects`。
* **not-met-effects**：在没有满足条件的情况下触发的技能（effects），格式见上面的 `effects` 选项。
