事实上,有一种更好的方式可以从 Minecraft 中读取聊天内容,并且它不需要屏幕抓取或数据包解码。
Minecraft 会自动将聊天消息(和许多其他内容)写入日志文件,无论是单人游戏还是多人游戏。在 Windows 上,它们位于%appdata%/.minecraft/logs
. 以前的日志使用 gzip 压缩,但最新会话的日志实时写入文本文件 latest.log。聊天消息包含文本[Client thread/INFO]: [CHAT]
。您可以像使用普通文件一样打开它,使用:
import os
with open(os.getenv("APPDATA")+"/.minecraft/logs/latest.log", "r") as logfile:
for line in logfile:
if "[Client thread/INFO]: [CHAT]" in line:
print line,
或者,如果您想实时阅读聊天内容,可以使用下面的代码,对来自此答案的代码稍作修改:
import time, os
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == "__main__":
logfile = open(os.getenv("APPDATA")+"/.minecraft/logs/latest.log", "r")
loglines = follow(logfile)
for line in loglines:
if "[Client thread/INFO]: [CHAT]" in line:
print line,