DiscordとMinecraft鯖(Spigot)を連携させたい

からプラグイン作った。

Spigotプラグイン「Disgot」を作りました。ユーザーが各自でBOTを登録しDisgotと連携させ、マイクラ鯖を起動させると自動でDisgot内で作成したBOTを起動します。マイクラ鯖が起動している間BOTも起動し続けます。逆に、マイクラ鯖が閉じている間はBOTも動きません。
現在は対応Minecraft ver.は1.16.5です。

追記)2024/01/20

内容がめちゃくちゃ古いです。すでに開発は終了しているため、有志によるフォーク先をご利用ください。

できたもの

チャット同期

設定したチャンネルで発言すると…

Image in a image block

Discordでの発言がマイクラに、マイクラでの発言がDiscordにそれぞれ表示されるようになります。
発言の他にも
・サーバーの起動メッセージ
・ジョイン/レフトログ
・プレイヤーの死亡メッセージ
を同期します。

ホワリス自動追加

設定したチャンネルに追加したい MinecraftID のみ を入力してください。

Image in a image block

重複登録や存在しないIDの登録はできないようになっています。

導入

1. Spigotサーバーを起動

持ってたら飛ばしてください。
建てたことないmacユーザーはこの記事を参考に建ててください。 mac使いだがSpigotサーバーを建てたい。

建てたことないWindowsユーザーは…ググってがんばってください。「spigot
サーバー 建て方 windows」[検索]

2. Disgotをダウンロード

https://github.com/shmn7iii/Disgot/releases/download/v1.0.0/Disgot-1.0.0.jar

リンク先からDisgotをダウンロードして任意のサーバーファイル内の/plugins下に配置してください。
ちなみにGitHubで雑に公開してるので気に入らなかったら自由に改造してどうぞ。コードの可読性は知りません。ライセンスはApache-2.0です。

3. BOTを作成

Discordアカウントを持っている前提で話を進めていきます。なければ作っておいてください。

3-1. Discord Developer Portal

https://discord.com/developers/applications

まずはDiscord Developer Portalにログインし、applicationページへ移動しましょう。

Image in a image block
3-2. アプリケーションを作成

ログインできたら右上の「New Application」をクリック。 したらBOTの名前を好きに決めましょう。

Image in a image block

Createをクリック。ちなみにApp Iconはアプリケーションのアイコンであり、Botのアイコンとは違います。お好きにどうぞ。次は左の「Bot」をクリック。

Image in a image block
3-3. BOTを作成

表示されたページで「Add Bot」ボタンをクリックしましょう。これで作成したアプリケーションをBOTとして登録できました。ここでBotのアイコンが設定できます。お好きに。BOTの細かな設定もここで行えます。今回は必要ではないので説明は省きます。

では次にBotをサーバーへ追加します。右側の「OAuth2」をクリック。表示されたページの中央付近、「OAuth2 URL Generator」へスクロールします。したら画像のようにSCOPESはbotを選択、BOT
PERMISSIONSはAdministratorを選択しましょう。選択できたらCOPYをクリックします。クリップボードに招待用URLがコピーされるのでブラウザでペーストしてURLを開きましょう。

Image in a image block

するとこんな画面が出ます。BOTを追加したいサーバーを選択し「はい」をクリック。管理者のチェックボックスは外さずに認証をクリック。これでBOTがサーバーに追加されます。

Image in a image block

4. BOTとDisgotを接続

https://discord.com/developers/applications

先程のBotの設定ページへ移動します。上のリンクから作ったアプリをクリック、右側でBotをクリック。
したら指のあるコピーをクリック。これはTOKENと呼ばれるものでBOT固有の識別子です。これが 他人に渡るとやばい ので慎重に扱いましょう。ちなみにCopyの上のClick to Reveal Tokenでトークンの内容が見れます。

Image in a image block

コピーできたらDisgotが入ったマイクラ鯖を立ち上げます。初回起動では全力でエラーを吐きますが余裕綽々で無視しましょう。

立ち上がったらFinder/エクスプローラーで (サーバーのあるフォルダ)/plugins/Disgot と進み、config.ymlを開きます。

Image in a image block

開けたら

TOKEN: mozi

の”mozi”の部分を先程コピーしたトークンに書き換えます。

TOKEN: gesnkbsgha.geraiihovnegrh-greaihv

のような形になればOKです。
これでとりあえずBOTは起動します。config.ymlを保存して閉じ、マイクラ鯖をリロードしましょう。
Discordを確認するとBOTがオンラインになっていることがわかると思います。

Image in a image block

5. チャンネルを設定

次にチャットを同期するチャンネルとホワイトリスト申請用のチャンネルを設定します。
まず、Discordアプリでユーザー設定を開きます。次に詳細設定ページへとび、開発者モードを有効にします。

Image in a image block

有効にできたら設定を閉じます。
次に同期するチャンネルのチャンネルIDを取得します。同期したいチャンネルを右クリック、一番下の「IDをコピー」をクリックします。

Image in a image block

コピーしたら再度config.ymlを開き、

MESSAGE_SYNC_CHANNEL: suuzi

の”suuzi”の部分を先程コピーしたチャンネルIDに書き換えます。

MESSAGE_SYNC_CHANNEL: 883456154786536455

のような形になればOKです。

同様の作業をWHITELIST_CHANNELでも行います。ホワリス用のチャンネルを右クリックでIDをコピー、config.ymlのsuuziを書き換えましょう。

作業が完了したら保存して閉じます。再度マイクラ鯖をリロードすると…

Image in a image block

BOTが仕事を始めます。

さあ馬車馬のように働け。

最後に

他プラグインとの競合は何も考えてません。もしかしたらLunaChatとかと一緒に入れるとおかしくなるかも。試してないから分からんです。何かあればGitHubにIssueでも投げといてください。

https://github.com/shmn7iii/Disgot