メインコンテンツまでスキップ

DiscordSRV 連携

EliteMobs は DiscordSRV を利用して、告知優先度レベル 3 以上のメッセージのブロードキャストを可能にします。告知優先度システムについてはこちらをご覧ください。

要するに、一部の非常に特別なカスタムボスが、次のような見た目で Discord にメッセージを送れるようになるということです。

Discordメッセージの例

意図しているのは、EliteMobs 専用の告知ルームを作り、プレイヤーがそこを覗いて、今討伐しに行けて撃破リーダーボードで自慢できる面白いワールドボスが生存しているかどうかを確認できるようにすることです。

セットアップ

DiscordSRV のセットアップ​

DiscordSRV は私が開発したものではない別のプラグインです。詳細なセットアップガイドはこちらにあります。セットアップがうまくいかない場合は、サポートルームはこちらです。このプラグインについて私はサポートを提供できませんので、インストールのこの部分については開発元にお問い合わせください。

EliteMobs は DiscordSRV 1.28.0 を参照してコンパイルされています。以下のテストコマンドで、サーバーに導入したバージョンで実際に届くことを確認してください。

EliteMobs 側の DiscordSRV 設定​

DiscordSRV を正しく設定できたら(このステップに進む前に、本当に動作しているかテストする必要があります)、EliteMobs 側の設定は 1 ステップだけです。

EliteMobs の設定フォルダー内にある DiscordSRV.yml 設定ファイル(通常は plugins/EliteMobs/DiscordSRV.yml)を開くと、announcementRoomName という設定項目が見つかります。

この項目には 3 種類の値を使用できます。おすすめは 1 番です。

  1. [推奨] DiscordSRV の設定ファイルで設定したとおりのルーム名。ルームに何という名前を付けたかは重要ではなく、正しい名前を使うことだけが重要です。以下は、私が EliteMobs のイベント専用に設定したルームの例です。 名前を使用する例 この場合、設定は announcementRoomName: EMEvents となります。

  2. DiscordSRV の設定ファイルで設定したとおりのルームの ID。以下はそのルームの例です。各ルームは固有であることに注意してください。画像はあくまで例として示しているだけなので、ID の数字をコピーしようとしないでください。動作しません。あなたの環境では、Discord のルーム ID に基づいた固有の数字になっているはずです。 IDを使用する例

  3. [確実性が低い方法] Discord に表示されるチャンネル名。最後の検索は大文字と小文字を区別せず、最初に一致したテキストチャンネルを選ぶため、同名チャンネルがあると宛先を誤る場合があります。DiscordSRV とボットの設定およびチャンネルへのアクセス権は必要ですが、この名前検索自体にはゲームチャンネルのマッピングは不要です。

技術的な注意点​

  • Discord に送信されるメッセージからは、正しく表示されるように Minecraft のカラーコードが自動的に除去されます
  • サーバーのラグを防ぐため、Discord メッセージは非同期で送信されます
  • EliteMobs は 3 段階の検索で Discord チャンネルを特定します。まずチャンネル ID(announcementRoomName がすべて数字の場合のみ)、次に DiscordSRV のチャンネルマッピング、最後にチャンネル名検索の順です
  • コンテンツの自動告知には優先度 3 以上が必要です。対象はカスタムボスのスポーン/死亡/逃走メッセージとカスタムイベントの 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 の設定と完全に一致していることを確認する
  • Discord 連携に関する EliteMobs の警告がコンソールに出ていないか確認する
  • テスト用に elitemobs.discord.message 権限を持っていることを確認する

チャンネルが見つからないというエラーが出る場合:

  • DiscordSRV.yml と EliteMobs の DiscordSRV.yml の両方で、チャンネル名のつづりを再確認する
  • 名前の代わりに数値のチャンネル ID を使ってみる
  • DiscordSRV の config.yml でチャンネルが正しく設定されていることを確認する

テストコマンドが動作しない場合:

  • elitemobs.discord.message 権限を持っていることを確認する
  • 正しい構文 /em discord <message>(メッセージ付き)を使う
  • サーバーコンソールにエラーメッセージが出ていないか確認する