Skip to content

Latest commit

 

History

History
196 lines (152 loc) · 12.9 KB

README_jp.md

File metadata and controls

196 lines (152 loc) · 12.9 KB

言語: English | 日本語

Minecraft - Discord チャット同期システム

Minecraft Java Edition(Bedrock Edition/統合版非対応)のゲーム内チャットとDiscordのチャットを同期するシステムです。どちらか片方でメッセージを送信するともう片方にもリアルタイムで同じメッセージが送信されます。MinecraftのプレイヤーとDiscordのユーザーとのチャットをよりシームレスなものにします。

メイン

特徴

  • ゲーム内で発生した出来事をDiscordにも送信します。

    • サーバー起動
    • プレイヤー参加
    • ゲーム内のチャット
    • 進捗達成
    • プレイヤー死亡
    • プレイヤー退出
    • サーバー閉鎖

    MinecraftからDiscordのメッセージの例

  • Discordのチャットをゲーム内にも送信します。

    • 送信者名はそのサーバーでの表示名になります。
    • ユーザーのロールカラーを反映します(ゲームバージョン1.16以降)
    • Discordの文字装飾を解釈してゲーム内でも文字装飾を行います。
      • ネタバレタグ(||ネタバレ||)はゲーム内では難読化テキストになります。テキストにマウスカーソルを当てることでネタバレの内容を見ることができます。
      • URL(http(s)://~)はゲーム内ではクリックすることでそのURLを開くことができます。
    • メッセージに添付ファイルがある場合はその添付ファイルも表示します。ファイル名をクリックするとその添付ファイルを見ることができます。

    DiscordからMinecraftのメッセージの例

  • スラッシュコマンド(Discordのコマンド)に対応しています。

    • 「/list」で現在サーバーに接続しているプレイヤーの一覧を取得します(ゲームの「/list」コマンドと同義です)。
  • 追加のmodやプラグインのインストールが一切必要なく、バニラやmodサーバーに対してそのまま使用することができます。

  • ゲームが対応している言語であれば、簡単にシステムに適用させることができます。

    • 初期状態では英語と日本語のデータが用意されています。
    • 詳細はこちらをご覧下さい。

    国際化

環境構築

1: Discordのボットの作成

この情報は2023年6月現在の情報です。将来に仕様変更されている可能性があります。

ボットを作成するにはDiscordのアカウントが必要です。もしアカウントを所有していな場合はアカウントを作成して下さい。既にアカウントを所有している場合はそのアカウントで問題ありません。

  1. Discord開発者ポータルアクセスします。
  2. 右上の「New Application」をクリックします。

ボットの作成1

  1. テキストボックスにアプリケーションの名前(ボットの名前ではない)を入力します。開発者利用規約開発者ポリシーを読んで「Create」をクリックします。

ボットの作成2

  1. サイドバーの「Bot」をクリックします。
  2. 「Add Bot」をクリックしてボットを作成します。確認メッセージが表示されるので続行します。緑色の枠で「A wild bot has appeared!」というメッセージが表示されればボットが作成されたことになります。

ボットの作成3

  1. 「Build-A-Bot」セクションでボットの名前やアイコンを設定します。
  2. トークンから「copy」をクリックしてトークンをメモ帳などに控えておきます。
    • トークンは機密情報です。絶対に第三者に漏洩しないように管理して下さい。
    • 万が一トークンの漏洩が疑われた場合は、速やかにトークンの再発行を行って下さい。

ボットの作成4

  1. 「Privileged Gateway Intents」から「MESSAGE CONTENT INTENT」をオンにします。

ボットの作成5

  1. 変更内容を保存します。
  2. サイドバーの「OAuth2」→「URL Generator」をクリックします。
  3. 「SCOPES」の欄の「bot」にチェックを入れ、ページ最下部のURLにアクセスします。

ボットの作成6

  1. ボットを追加したいサーバーを選択して、認証をします。
  2. サーバーにボットが追加されます。

ボットの作成7

2: Rconの有効化

  1. ゲームサーバーの設定ファイル(server.properties)を開きます。
  2. Rconの関する項目を以下のように設定します。
項目 備考
enable-rcon true
rcon.port 25575 デフォルトの値が不都合の場合は別の値を設定して下さい。
rcon.password <任意の文字列> 第三者に推測されにくいパスワードにして下さい。

3: パッケージのインストール

  1. Node.jsv20.2.0をインストールします。

これ以降のパッケージのインストール方法は2種類あります。

3-A: npmを用いる方法

  1. 以下のようにディレクトリを作成します。
Server/
├ MinecraftDiscordChatSync/          ← このフォルダを作る
├ server.jar                         ← サーバー実行ファイル
├ server.properties
└ ...
  1. ターミナルを開きます。
  2. 2.で作成したディレクトリをカレントディレクトリにします。
  3. npm install @gakuto1112/minecraft-discord-chat-syncと入力してパッケージをインストールします。

3-B: レポジトリを直接ダウンロードする方法

  1. このレポジトリをダウンロード又はクローンして下さい。
  • レポジトリのトップページの右上にある緑色の「<> Code」ボタン → 「Download ZIP」からダウンロード出来ます。
  1. ダウンロード/クローンしたパッケージを下の例を参考に配置して下さい。
Server/
├ MinecraftDiscordChatSync/          ← このフォルダを作る
│ ├ .github/
│ │ └ ...
│ ├ src/
│ │ ├ MinecraftDiscordChatSync.ts
│ │ └ ...
│ ├ .gitignore
| ├ package-lock.json
| ├ package-lock.json
| └ tsconfig.json
├ server.jar                         ← サーバー実行ファイル
├ server.properties
└ ...
  1. ターミナルを開きます。
  2. カレントディレクトリを.../MinecraftDiscordChatSync/にします。
  3. npm installと入力し、依存モジュールをインストールします。
  4. npm run buildと入力し、コンパイル済みソースコードを生成します。

4: システムの起動と設定

  1. ターミナルを開きます。
  2. カレントディレクトリを.../MinecraftDiscordChatSync/にします。
  3. npx minecraft-discord-chat-sync3-Aを用いた場合)又はnpm start3-Bを用いた場合)と入力し、システムを起動します。
  4. 初回起動時はシステム設定ファイル(config.json)が生成され、そのまま終了します。
  5. こちらを参考にシステムの設定を完了して下さい。
  6. 再び3.を実行してシステムを起動します。設定に問題がなければ、ボットにログインします。Succeeded to login as "<bot_name>#0000".と表示されれば正常にログイン出来ています。
    • 設定に問題があればその旨が指摘されます。修正の上、システムを再起動して下さい。

起動オプションについて

システム起動時にオプションを指定出来ます。

ts-node MinecraftDiscordChatSync.ts <オプション1> <オプション2> ...
オプション 説明
-c ログに色を付けて見やすくします。ログをファイルに出力する場合の使用は推奨されません。
-d デバッグログを出力し、より詳細なログを出力します。
-r システム起動時にRconに接続します。サーバー起動後にシステム起動する場合に指定して下さい。

システム設定について

システム初回起動時にシステム設定ファイル(config.json)が生成されます。生成後は以下を参考にシステム設定を行って下さい。

項目 説明 初期値 有効な設定値
pathToLog ゲームサーバーのログファイルまでの相対パス ../../logs/latest.log string(「.log」で終了すること)
logCharCode ログファイルの文字コード。Windowsの日本語環境の場合は「shift-jis」に設定するとよい。 utf-8 string(サポートされている文字コード
logInterval ログの差分を確認する時間間隔(ミリ秒単位)。値を小さくするとログの変更への反応が機敏になるが、システムへの負荷が増大する。 100 number
locale システムの使用言語 en_us string(ゲームの言語コードと同じ)
token ボットのトークン string
listenChannels システムがDiscordからのメッセージを検出するチャンネルのIDの一覧 [] string[]
sendChannels システムがDiscordにメッセージを送信するチャンネルのIDの一覧 [] string[]
rConPort Rconのポート番号 25575 number(0 - 65535)
rConPassword Rconのパスワード string
plugins.discord_message.use_legacy_format Discordのメッセージをゲームに送信する時に、古いコマンドフォーマットを使用するかどうか。ゲームバージョンが1.16以上の場合はfalse、1.15.x以前の場合はtrueにして下さい。 false boolean

チャンネルIDの取得方法

  1. Discordの設定から「詳細設定」→「開発者モード」をオンにします。
  2. サーバーのチャンネル一覧からチャンネルを右クリックして「チャンネルIDをコピー」をクリックします。

言語データの生成について

./localesにシステムで使用する言語データが保存されています。初期状態では英語と日本語のみが用意されていますが、ゲームが対応している言語であればそこからデータを抽出して言語データを作成することが出来ます。

  1. ターミナルを開きます。
  2. カレントディレクトリを.../MinecraftDiscordChatSync/にします。
  3. npx generate-locale3-Aを用いた場合)又はnpm run generate_locale3-Bを用いた場合)と入力し、ツールを起動します。
  4. 指示に従って必要な情報を入力すると言語データが生成されます。
  5. .../MinecraftDiscordChatSync/locales/<言語コード>/<言語コード>.tsvはシステムが直接使用する言語データです。これを開いて各項目を翻訳して下さい。

[注意]

  • 言語データを作成するにはゲームをインストールして一度起動する必要があります。
  • 言語データ生成ツールはバニラ用です。modの翻訳を追加したい場合は手動で追加する必要があります。

注意事項

  • modやプラグインによって出力されるログのフォーマットが変更されている場合は正常に動作しない可能性があります。
  • /team」コマンドでプレイヤーに接頭語や接尾語が付与されている場合、システムは正常に検出できなくなります。
  • このアプリケーションを使用して発生したいかなる損害の責任は負いかねます。
  • 不具合や提案がありましたら、お気軽にIssuesへご報告ください。