Help us understand the problem. What is going on with this article?

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

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

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

あとがき

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

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

https://quarry.readthedocs.io/en/latest/index.html

YuzuRyo61
"Hello World!"と書き続けているだけの人。 Pythonが主成分。 ウェブアプリ好き。それ系書き書きしてます。
https://yuzulia.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした