DiscordSRV 整合
EliteMobs 使用 DiscordSRV 來廣播公告優先度等級 3 以上的訊息。你可以在這裡閱讀關於公告優先度系統的說明。
實質上,這表示某些非常特別的自訂 BOSS 能夠在 Discord 上發送訊息,看起來像這樣:

其用意是建立一個專屬的 EliteMobs 公告房間,讓玩家可以查看目前是否有任何有趣的世界 BOSS 還活著,好讓他們去擊殺並在擊殺排行榜上展示戰績。
完整設定流程
設定 DiscordSRV
DiscordSRV 是另一個並非由我開發的外掛。你可以在這裡找到他們詳盡的設定指南。如果你在設定上遇到困難,他們的支援房間在這裡。我無法為這個外掛提供支援,所以安裝的這個部分請洽詢他們。
EliteMobs 使用 DiscordSRV 1.28.0 編譯。請使用下方測試指令,驗證伺服器所安裝版本的實際訊息送達情況。
設定 EliteMobs 的 DiscordSRV 設定檔
一旦你正確設定好 DiscordSRV(而且你必須先測試它是否真的正常運作,才能進到這個步驟),EliteMobs 的設定只有 1 個步驟。
前往 EliteMobs 設定資料夾中的 DiscordSRV.yml 設定檔(通常是 plugins/EliteMobs/DiscordSRV.yml),你會找到一個叫做 announcementRoomName 的設定選項。
這則訊息有三種可用的值。我推薦第 1 種。
-
[推薦] 你在 DiscordSRV 設定檔中所設定的房間名稱。房間叫什麼名字並不重要,重要的是你使用了正確的名稱。以下是我設定為專用於 EliteMobs 事件的房間範例:
以我的情況來說,這個選項應該寫成 announcementRoomName: EMEvents。 -
你在 DiscordSRV 設定檔中所設定的房間 ID。以下是房間的範例。請注意每個房間都是獨一無二的。我只是把圖片當作範例展示,不要試圖複製那些 ID 數字。那是不會有用的。你的設定應該會有一組依你的 Discord 房間 ID 而定的獨特數字。

-
[可靠性較低] Discord 上顯示的頻道名稱。最後的名稱搜尋不區分大小寫,並選擇首個符合的文字頻道,因此同名可能導致選錯目標。DiscordSRV 及其機器人仍須正確設定並能存取頻道;名稱搜尋本身不要求遊戲頻道對應。
技術說明
- 傳送到 Discord 的訊息會自動剝除 Minecraft 顏色代碼,以確保正常顯示
- Discord 訊息以非同步方式傳送,以避免伺服器延遲
- EliteMobs 使用三層查找來找出你的 Discord 頻道:先以頻道 ID(僅在
announcementRoomName全為數字時),再以 DiscordSRV 的頻道對應,最後以頻道名稱搜尋 - 自動內容公告要求優先度至少為 3,包括自訂 BOSS 的生成、死亡、逃脫訊息,以及自訂事件的
startMessage/endMessage。下方手動測試指令直接傳送,不檢查內容優先度。 - 傳送到 Discord 的訊息與遊戲中顯示的相同
- 每則公告都會重新查找頻道,因此修正後的
announcementRoomName會在執行/em reload後生效。查找不到頻道時會記錄Channel room <name> is not valid!;Discord 拒絕訊息時會記錄DiscordSRV announcement failed for <name>。
測試
你可以使用指令 /em discord <message> 來測試你的設定是否正常運作。把 <message> 換成你想傳送到 Discord 的任何文字。
範例:/em discord Test message from EliteMobs!
確認訊息實際出現在預期的 Discord 頻道中。指令的回覆只確認嘗試了傳送;即使未安裝 DiscordSRV、設定仍為預留值或頻道查找失敗,也可能顯示該回覆。Discord 中沒有訊息,就不能確認送達。
註: 這個指令需要 elitemobs.discord.message 權限
此外,你可以使用 /em discord(不帶任何訊息)來顯示 EliteMobs Discord 伺服器的邀請連結,用於支援與下載。這個指令需要 elitemobs.discord.link 權限。
疑難排解
訊息沒有出現在 Discord 中:
- 確認 DiscordSRV 已安裝且正常運作(請先用 DiscordSRV 自己的指令測試)
- 檢查
announcementRoomName沒有維持在預設的預留值 - 確保房間名稱/ID 與你的 DiscordSRV 設定完全相符
- 檢查主控台是否有 EliteMobs 關於 Discord 整合的警告
- 確認你擁有
elitemobs.discord.message權限以進行測試
找不到頻道的錯誤:
- 再次檢查你的頻道名稱在 DiscordSRV.yml 與 EliteMobs 的 DiscordSRV.yml 中的拼寫
- 試著改用數字頻道 ID 而非名稱
- 確保該頻道已在 DiscordSRV 的 config.yml 中正確設定
測試指令沒有作用:
- 確認你擁有
elitemobs.discord.message權限 - 使用正確的語法:
/em discord <message>(帶有訊息) - 檢查伺服器主控台是否有錯誤訊息