跳至主要內容

DiscordSRV 整合

EliteMobs 使用 DiscordSRV 來廣播公告優先度等級 3 以上的訊息。你可以在這裡閱讀關於公告優先度系統的說明。

實質上,這表示某些非常特別的自訂 BOSS 能夠在 Discord 上發送訊息,看起來像這樣:

discord message example

其用意是建立一個專屬的 EliteMobs 公告房間,讓玩家可以查看目前是否有任何有趣的世界 BOSS 還活著,好讓他們去擊殺並在擊殺排行榜上展示戰績。

完整設定流程

設定 DiscordSRV

DiscordSRV 是另一個並非由我開發的外掛。你可以在這裡找到他們詳盡的設定指南。如果你在設定上遇到困難,他們的支援房間在這裡。我無法為這個外掛提供支援,所以安裝的這個部分請洽詢他們。

註: EliteMobs 是以 DiscordSRV 1.28.0 版測試的。雖然其他版本可能也能運作,但已知這個版本是相容的。

設定 EliteMobs 的 DiscordSRV 設定檔

一旦你正確設定好 DiscordSRV(而且你必須先測試它是否真的正常運作,才能進到這個步驟),EliteMobs 的設定只有 1 個步驟

前往 EliteMobs 設定資料夾中的 DiscordSRV.yml 設定檔(通常是 plugins/EliteMobs/DiscordSRV.yml),你會找到一個叫做 announcementRoomName 的設定選項。

這則訊息有三種可用的值。我推薦第 1 種。

  1. [推薦] 你在 DiscordSRV 設定檔中所設定的房間名稱。房間叫什麼名字並不重要,重要的是你使用了正確的名稱。以下是我設定為專用於 EliteMobs 事件的房間範例: using name example 以我的情況來說,這個選項應該寫成 announcementRoomName: EMEvents

  2. 你在 DiscordSRV 設定檔中所設定的房間 ID。以下是房間的範例。請注意每個房間都是獨一無二的。我只是把圖片當作範例展示,不要試圖複製那些 ID 數字。那是不會有用的。你的設定應該會有一組依你的 Discord 房間 ID 而定的獨特數字。 using id example

  3. [不佳] 你的房間在 Discord 上所顯示的名稱。由於許多因素,這種方式不保證能正確運作。請記得你的 Discord 房間必須在 DiscordSRV 的設定檔中設定好——光是你能把房間名稱填進這個設定檔,並不代表你可以跳過在 DiscordSRV 上設定它。

技術說明

  • 傳送到 Discord 的訊息會自動剝除 Minecraft 顏色代碼,以確保正常顯示
  • Discord 訊息以非同步方式傳送,以避免伺服器延遲
  • EliteMobs 使用三層查找來找出你的 Discord 頻道:先以頻道 ID,再以 DiscordSRV 的頻道對應,最後以頻道名稱搜尋
  • 只有公告優先度 3 以上的內容才會觸發 Discord 通知——這涵蓋自訂 BOSS 的生成/死亡/逃脫訊息,以及自訂事件的 startMessage/endMessage
  • 傳送到 Discord 的訊息與遊戲中顯示的相同
  • 頻道只會被解析一次,之後會在伺服器該次執行的剩餘期間被快取,所以更改 announcementRoomName 需要重新啟動,而不只是 /em reload

測試

你可以使用指令 /em discord <message> 來測試你的設定是否正常運作。把 <message> 換成你想傳送到 Discord 的任何文字。

範例:/em discord Test message from EliteMobs!

如果你的訊息出現在所設定的 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>(帶有訊息)
  • 檢查伺服器主控台是否有錯誤訊息