我已经开始了一个项目来编写一个基于python的minecraft客户端/ bot来连接到标准的Minecraft服务器。我正在使用名为py-mine-client的库来执行数据包处理。我一直无法使用库接收数据包 - 我不知道要调用哪些函数/可以访问接收数据的位置。主要问题是弄清楚如何接收握手响应。我以为我可以使用client.recievePacket函数访问它,但它似乎没有工作。
这是我的代码:
import sys
import string
from client import *
def main():
client = Client("192.168.1.15")
client.connect()
client.handshake("MyUsername")
handshake = string16("\x02")
client.recieve_packet(handshake)
client.login_request("MyUsername")
client.listener.stop()
if __name__ == "__main__":
sys.exit(main())
这是一个wiki,其中包含协议如何工作的信息:
http://wiki.vg/Protocol
答案 0 :(得分:0)
查看库source code,它们有一个Listener
类,自动收集单独线程中的所有数据包。然后,用户不应调用receive_packet
方法(侦听器使用它来报告新的传入数据)。所有数据包都附加到您可以访问的client.packets
数组。不幸的是,该库似乎不是线程安全的(可能依赖于全局锁),并且它们似乎有许多与套接字相关的错误。
由于库看起来非常简单,您可能只想重写它。