建立事件
本指南適用於 EliteMobs 10 及以上版本
什麼是自訂事件?
這裡的自訂事件指的是在遊戲中隨機發生的事件,無論是基於玩家動作或具有定時觸發。外掛預載了多個自訂事件,例如炎魔(Balrog)事件、海怪(Kraken)事件與寶藏哥布林(Treasure Goblin)事件,僅舉幾例。
這套系統之所以稱為自訂事件,是因為這些事件不僅可以自訂,還能從零開始建立。以下是一份關於如何建立與自訂你自己的事件的指南。
建立你的自訂事件
自訂事件設定檔應建立於:
plugins/EliteMobs/customevents/
檔案必須使用 .yml 格式。檔名(不含 .yml 副檔名)會成為事件識別碼。
範例:my_cool_event.yml 會以 my_cool_event 來引用
通用設定
以下設定可/應同時用於動作事件與定時事件。
isEnabled
設定事件是否啟用。
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
範例
isEnabled: true
eventType
設定事件的類型。
| Key | Values | Default |
|---|---|---|
eventType | BREAK_BLOCK / FISH / TILL_SOIL / TIMED | DEFAULT |
請注意,BREAK_BLOCK、FISH 與 TILL_SOIL 是動作事件,而 TIMED 是定時事件。
eventType 是必填的。 DEFAULT 是當此設定缺漏、或不符合上述任何類型時 EliteMobs 退回使用的佔位值。停留在 DEFAULT 的事件會記錄一則警告且完全不會被註冊,因此它底下的所有設定甚至不會被讀取。
範例
eventType: BREAK_BLOCK
bossFilenames
設定將被生成的 BOSS 列表。必填!
| Key | Values | Default |
|---|---|---|
bossFilenames | String List | none |
範例
bossFilenames:
- balrog.yml
- my_event_boss.yml
announcementPriority
設定公告優先度。
| Key | Values | Default |
|---|---|---|
announcementPriority | Integer | 0 |
範例
announcementPriority: 1
startMessage
設定在事件開始時發送的訊息。
| Key | Values | Default |
|---|---|---|
startMessage | String | none |
範例
startMessage: An event has started!
![]()
endMessage
設定在事件結束時發送的訊息。
| Key | Values | Default |
|---|---|---|
endMessage | String | none |
範例
endMessage: An event has ended!
eventStartCommands
設定在事件開始時執行的指令。
| Key | Values | Default |
|---|---|---|
eventStartCommands | String List | none |
範例
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

eventEndCommands
設定在事件結束時執行的指令。
| Key | Values | Default |
|---|---|---|
eventEndCommands | String List | none |
範例
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

minimumPlayerCount
設定事件開始所需的最低線上玩家數。
此項僅會針對動作事件檢查。定時事件會忽略它——它們只要求至少有一位玩家在線。
| Key | Values | Default |
|---|---|---|
minimumPlayerCount | Integer | 1 |
範例
minimumPlayerCount: 5
事件設定範例
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
完整定時事件範例
isEnabled: true
eventType: TIMED
bossFilenames:
- "my_timed_boss.yml"
announcementPriority: 3
startMessage: "A timed event has started!"
endMessage: "The timed event has ended!"
eventStartCommands:
- say The timed event began!
eventEndCommands:
- say The timed event concluded!
spawnType: "my_spawn_location.yml"
localCooldown: 120
globalCooldown: 30
weight: 100
eventDuration: 15
endEventWithBossDeath: true
minimumPlayerCount: 1
動作事件
在特定動作(例如破壞方塊或釣魚)發生時有機率執行的事件。
註:動作事件會自動套用每位玩家的冷卻時間,以防止同一位玩家反覆觸發事件。冷卻時間預設為 4 分鐘,可透過 events.yml 中的 actionEventMinimumCooldownMinutes 設定。也可以在同一個檔案中把 actionEventsEnabled 設為 false,以在全伺服器停用動作事件。
三種動作類型的觸發方式如下:
eventType | 觸發條件 |
|---|---|
BREAK_BLOCK | 玩家破壞方塊。會先擲 chance,再檢查被破壞的方塊是否符合 breakableMaterials。 |
FISH | 玩家釣起某樣東西。什麼都沒釣到的投竿永遠不會觸發事件。 |
TILL_SOIL | 玩家手持任意鋤具右鍵點擊 DIRT 或 GRASS_BLOCK。 |
在所有情況下,該位置都必須位於 EliteMobs 已啟用的世界中、不得位於 EliteMobs 副本世界或進行中的實例內,並且必須通過 WorldGuard 的 elitemobs-events 旗標。
chance
設定當動作發生時,事件發生的機率。
| Key | Values | Default |
|---|---|---|
chance | 0.0 到 1.0 之間的數值 | 0 |
範例
chance: 0.001
breakableMaterials
設定當動作設為 BREAK_BLOCK 時要檢查的材料列表。
| Key | Values | Default |
|---|---|---|
breakableMaterials | 材料列表 | none |
範例
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD
設定範例
chance: 0.001
breakableMaterials:
- COAL_ORE
設定在破壞煤礦石方塊時有 0.1% 的機率執行事件,前提是事件類型為 BREAK_BLOCK。
完整動作事件範例
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE
定時事件
定時事件是在可設定的時間間隔發生的事件。一旦某個定時事件的冷卻結束,系統會根據事件的權重,從定時事件列表中隨機挑選一個定時事件。
當伺服器上沒有任何玩家在線時不會挑選任何事件,已在進行中的事件也絕不會被再次挑選。可以在 events.yml 中把 timedEventsEnabled 設為 false,以在全伺服器停用定時事件。
spawnType
設定事件所使用的自訂生成,它定義了 BOSS 可以生成的位置。
| Key | Values | Default |
|---|---|---|
spawnType | Filename | none |
範例
spawnType: nether_spawn.yml
localCooldown
設定此事件再次被挑選之前的時間量(以分鐘計)。
| Key | Values | Default |
|---|---|---|
localCooldown | Double | 0 |
範例
localCooldown: 120
globalCooldown
設定下一個事件被挑選之前的時間量(以分鐘計)。
| Key | Values | Default |
|---|---|---|
globalCooldown | Double | 0 |
範例
globalCooldown: 60
weight
設定事件的權重,影響它被挑選的機率相對於其他事件的高低。建議值:100。
權重系統決定事件被選中的相對機率。例如:
- 權重 100 的事件 A 對上權重 50 的事件 B = 事件 A 被選中的可能性是兩倍
- 權重越高 = 被挑選的機率越高
- 定時事件排程器會在伺服器啟動後約 5 分鐘開始,接著每分鐘檢查一次全域冷卻是否已過、是否可以挑選事件
| Key | Values | Default |
|---|---|---|
weight | Double | 0 |
範例
weight: 60.5
eventDuration
設定事件的最大持續時間(以分鐘計)。
| Key | Values | Default |
|---|---|---|
eventDuration | Double | 0 |
範例
eventDuration: 30
endEventWithBossDeath
設定事件是否隨 BOSS 死亡而結束。
| Key | Values | Default |
|---|---|---|
endEventWithBossDeath | Boolean | true |
範例
endEventWithBossDeath: true
eventEndTime
設定事件結束時的遊戲內時間(以刻 ticks 計)。使用 Minecraft 的時間系統,其中 0=黎明、6000=正午、12000=黃昏、18000=午夜、23000=深夜。設為 -1 可停用基於時間的結束。
| Key | Values | Default |
|---|---|---|
eventEndTime | Integer(0-24000,-1 為停用) | -1 |
範例
eventEndTime: 23000
請注意,事件會被排入佇列,意思是它們只會在 spawnType 中定義的條件被滿足後才開始。
事件設定範例
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000
minimumPlayerCount: 5
手動觸發事件
/em event <event filename>
將一個定時事件排入佇列,使其在下一個有效的時間與地點開始,就如同排程器挑選了它一樣。它需要 elitemobs.event.start 權限、必須由玩家執行,並且只接受 eventType 為 TIMED 且已啟用之事件的檔名。
如果該事件無法被排入佇列,系統會告訴你原因:未設定 spawnType、spawnType 未指向有效的自訂生成檔案、所有 bossFilenames 都無效,或是有其他外掛取消了該事件。
全伺服器事件設定
以下設定位於 ~/plugins/EliteMobs/events.yml,並套用至所有事件:
| Key | 說明 | 預設 |
|---|---|---|
actionEventsEnabled | 動作事件是否會發生 | true |
timedEventsEnabled | 定時事件是否會發生 | true |
actionEventMinimumCooldownMinutes | 動作事件觸發後,每位玩家的冷卻時間(分鐘) | 4 |
timedEventMinimumCooldownMinutes | 從某個定時事件開始到允許下一個定時事件開始之間的最短時間(分鐘) | 4 |
announcementBroadcastWorldOnly | 事件公告是否僅限於事件發生的世界 | false |
