AoSankaku/Send-Minecraft-notifications

Minecraft

【Minecraft】マイクラサーバーでDiscordに通知を送るスクリプトを作りました

PythonとWebhookを利用した、マイクラ入室時・退室時に通知できるスクリプトを作成(改造)しました。その導入方法と使い方について説明しています。

2024/03/14

嘘つきました。正確には作っていません。超大幅な改良を加えました。

サーバー参加者のモチベの問題

最近、訳あってマイクラサーバーを開いたり閉じたりしています。

参加者視点では、「今サーバーに人がいるのかどうか」というのは結構重要だったりします。やっぱり人がいるときのほうが「行きてえなあ…行きましょうよ」ってなりやすいですからね。しょうがないですね。

しかし当然のことながら、マイクラサーバー自体にはそういう通知をしてくれる機能などありません。プラグインならあります。

でも、多様なバージョンを使用していたり、MODサーバーなどを使っていたりすると常に使えるとも限りません。そのため、どんな環境でも使えるものを…と開発をはじめました。

要件

技術の選定に当たり、以下を重視しました。

方法

具体的に、マイクラのログを取得するのは面倒に見えます。しかし、いくつかの方法で取得することはできそうです。

  1. マイクラサーバーの標準出力を受け取り、それを元に処理を行う
  1. マイクラ標準のログを利用する

今回は2番を採用しました。まじでなんで1じゃなくてこっちを改造したんだろう。馬鹿じゃん。今度また2.0として気が向けば作り直しますが、あまりのショックに作らない可能性があります。萎えた。

あった

ひとまず「Discord minecraft サーバー 通知」とか、そんな感じで適当なキーワードで検索したら出てきました。コレです。

しかし、大量のバグや問題点がありました。

ということで、これを超大規模改修して、実用に足る水準まで上げました。

screenshot

実用するとこんな感じです。中々でしょう?

改造した内容

ここにすべてを置いてきました。使い方から変更点まですべて書いてあります。つまりこの記事はただの宣伝用です。ハハハハ。

まだ残っている問題点

死亡メッセージが正確に取得できない

死亡メッセージは、非常に力技で取得しています。それは、

を機械的に判定して拾っているからです。バニラであればおそらく漏れませんが、MODで死亡理由が新しく増えたりすると正直わかりません。

ごく一部のプレイヤーの死亡ログが取得できない

例えば、初期設定だと「ChunkTaskScheduler」「STDOUT」「Simple_Harvest」さんのsayコマンド経由のチャットは届きません。

…こんな名前の人はおそらく皆さんの友人知己にはいないと思いますが、まあ一応です。

日付をまたぐと、メッセージ送信までにラグが発生する

日付をまたぐと、メッセージが届くまでにラグが生じます。

ライセンス

このスクリプトには超重大な問題点があります。フォーク(コピー)元がARRライセンス(すべての著作権を保有するAll Rights Reservedのこと)です。

そのため、このスクリプトはいつ公開が止まってもおかしくありません。

…と思っていたのですが、ちょうど1ヶ月前にライセンスの更新があり、MITライセンスになりました。

もしかすると、私が勝手にフォークして魔改造していることに気づいたのかもしれません。気まぐれかもしれませんが、非常にありがたく思います。

懐の深いお方です。以下にその方のプロフィールを貼っておきます。

気軽に使ってみてね!

特にこれを使うのに許可などは必要ありません。勝手に使ってください。使い方はすべてREADME.mdに記してあります。

マイクラサーバーのディレクトリに行き、

Terminal window
git clone https://github.com/AoSankaku/Send-Minecraft-notifications.git

って打ってから、Windowsであればダブルクリックして、UbuntuであればScreenなどで別枠起動すればOKです。初期設定などはリポジトリをご覧ください。2回書くのは面倒です。

「おい!バグあるやんけ!」と思ったら、遠慮なく修正してもらってOKです。MITライセンスですから。知識のある方は、よろしければPRなどしていただけると助かります。

記事のタグ

Python 自動化 Discord Webhook サーバー

役に立ったら記事をバラ撒こう