# 自定义事件

## 什么是自定义事件？

自定义事件是指游戏内随机发生的一些事件，该事件有自己的触发条件，例如玩家的某个操作或者到达指定时间。例如血月、宝藏哥布林、流星雨等。事件的内容也完全自定义，下面就教导如何创建自定义事件。

### 动作触发事件

动作触发事件是玩家进行某个操作以后永远的概率发生的事件，也就是说只有玩家才会触发这个事件。

#### chance

`chance: 浮点类型选项` 设置事件发生的几率，你应该将其设置的 非常低。例如某个事件有 0.0001% 几率在玩家挖掘矿石时发生 (`1.0E-4` 等同于 0.0001)，虽然看似很小，但在线玩家一多，玩家挖的方块累计，其实也不算小了。

#### breakableMaterials

`breakableMaterials: 列表类型选项` 当事件设置为 `BREAK_BLOCK` 类型时会触发该事件的方块id列表。&#x20;

### 时间触发事件

时间触发事件是指在一定时间间隔时可能发生的事件。多个时间触发事件将会根据权重值来决定下一个间隔到来时到底发生哪个事件。即使某个事件被选中，该事件还需要满足你所设置的概率和条件，所以这个间隔往往也不是固定的。举一个例子，某个事件权重值为 **100**，而另外一个为 **10**，那么很明显第一个事件发生的概率往往是第二个事件的 **10** 倍，但如果第一个事件需要夜晚进行，那么即使第一个事件被插件在后台抽中，由于时间是白天，事件不会发生，此时的概率就需要另行计算了。

请不要将某个事件的权重值与其他事件悬差过大，这会导致很大概率发生多次同一个事件，大大降低游戏玩法。

#### customSpawn

`customSpawn: 文本类型选项` 设置事件发生时启用的自定义生成规则，详见 [自定义生成规则](https://docs.superiormc.cn/elitemobs-wiki/pei-zhi/zi-ding-yi-sheng-cheng-gui-ze) 页面。

#### **localCooldown**

`localCooldown: 浮点类型选项` 设置下一次该事件再会发生的冷却时间，以分钟为单位，以避免出现该事件连续多次发生。

#### globalCooldown

`globalCooldown: 浮点类型选项` 设置该事件与上一个事件发生的冷却时间，以分钟为单位。与上一个选项不同的是，上面的仅针对该事件本身，而该选项针对所有事件。

#### weight

`weight: 浮点类型选项` 设置该事件的权重值。权重值的有关信息已在上面介绍，不再赘述。

#### eventDuration

`eventDuration: 浮点类型选项` 设置事件的最长持续时间。

#### endEventWithBossDeath

`endEventWithBossDeath: 布尔值类型选项` 设置事件结束或者世界生成的自定义怪物被击杀后的提示，请注意上一个选项必须是一个合适的值，需要玩家有足够的时间击杀怪物。

#### eventEndTime

`eventEndTime: 整数类型选项` 设置事件结束的时间，以 tick 为单位。

#### minimumPlayerCount

`minimumPlayerCount: 整数类型选项` 设置事件触发的最小在线玩家。

### 两种事件共用配置选项

#### isEnabled

`isEnabled: 布尔值类型选项` 设置是否启用该事件。

#### eventType

`eventType: 文本类型选项` 设置事件的类型，可以填写：

* `BREAK_BLOCK` 当挖掘一个方块时触发的事件，需要 `chance` 和 `breakableMaterials` 选项。
* `TILL_SOIL` 当用锄头耕地时触发的事件，需要 `chance` 选项。
* `FISH` 当钓鱼时触发的事件，需要 `chance` 选项。
* `TIMED_EVENT` 相隔一段时间后触发的事件，需要 `weight`, `localCooldown` 和 `globalCooldown` 选项。

#### bossFileNames

`bossFileNames: 列表类型选项` 设置当事件条件满足时将会生成的自定义怪物。**每个自定义事件发生时都必须生成至少一个自定义怪物。**&#x20;

#### announcementPriority

`announcementPriority: 整数类型选项` 设置公告权重值，具体信息请 [点击这里](https://docs.superiormc.cn/elitemobs-wiki/ji-zhi/gong-gao-quan-zhong-zhi-xi-tong) 查看。

#### startMessage

`startMessage: 文本类型选项` 设置事件开始时的公告，你也可以使用自定义怪物生成公告替代此选项。

#### endMessage

`endMessage: 文本类型选项` 设置事件结束时的公告，你也可以使用自定义怪物死亡公告替代此选项。

#### eventStartCommands

`eventStartCommands: 列表类型选项` 设置事件开始时的指令。

#### eventEndCommands

`eventEndCommands : 列表类型选项` 设置事件结束时的指令。
