LoginSignup
3
2

More than 3 years have passed since last update.

Quarryを使ってPythonで擬似的なMinecraftサーバーを作る

Last updated at Posted at 2019-12-16

PypiでMinecraft系のライブラリがないかなーって探ってたらQuarryというライブラリがあったので使ってみました。

インストール

これだけ。

pip install quarry

擬似的なサーバーを作る

結論から言うとコレで動く。

from twisted.internet import reactor
from quarry.net.server import ServerFactory, ServerProtocol


class QuarryProtocol(ServerProtocol):
    def player_joined(self):
        ServerProtocol.player_joined(self)
        self.close("Pong!")

class QuarryFactory(ServerFactory):
    protocol = QuarryProtocol
    motd = "Powered by Quarry!"

def main():
    factory = QuarryFactory()
    factory.listen("")
    reactor.run()


if __name__ == "__main__":
    main()

スクリプトを作動させても何も出ないかもだけどそれが正解。

これでMinecraftで接続すればPong!と切断メッセージが返ってくるはず。

弄ってみる

ServerFactory

サーバーのmotdやオンラインモード(割れ対策機能)のオン・オフ、サーバー画像の変更などが行えるクラス。

プロパティ

  • protocol

必須。ServerProtocolクラスを代入。詳細は後述にて。

  • motd

サーバーの説明。サーバーリストに表示されるアレ。

  • icon_path

サーバーのアイコンを指定。PNG形式(だったはず)で64x64までのサイズ。

  • max_players

プレイヤーの最大接続数。最低でも1にしないとダメ。

  • online_mode

Mojangオンライン認証を有効にするか。特に理由がなければTrueのままでヨシ。

ServerProtocol

このクラスでプレイヤーの接続時などの処理を行います。

いくつかの関数がありますが、分かる範囲だけ書いておきます。

関数

  • player_joined(置き換え関数)

プレイヤーが入ってきたときに行う処理。オンラインモードがオンになっている場合、認証が完了したときにこの関数が呼び出されます。
あと、親クラスのplayer_joined関数を呼び出しておくらしいです。

  • close

この関数を呼び出すとプレイヤーが切断されます。引数に文字を入れるとその文字がプレイヤー側の切断メッセージに表示されます。

あとがき

このライブラリを使えば何かしらの認証サーバーとして使えるかも。結構面白いライブラリだと思います。

気になった方はドキュメントがあるようなので、そちらの方を見ていただければ。(英語)

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2