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
この関数を呼び出すとプレイヤーが切断されます。引数に文字を入れるとその文字がプレイヤー側の切断メッセージに表示されます。
あとがき
このライブラリを使えば何かしらの認証サーバーとして使えるかも。結構面白いライブラリだと思います。
気になった方はドキュメントがあるようなので、そちらの方を見ていただければ。(英語)