当我刚要用一些相关信息回答这个问题时,这个问题被删除了。我认为,虽然它的表达方式让人们不喜欢它,并且没有发布任何代码,但 是一个有用的问题。因此,我决定在这里发布,以及我的部分答案。我当前的代码有一个问题,如果有人知道解决方案,我会很高兴听到它。此外,如果有人知道更清晰的解决方案(例如使用communicate
Popen
对象的方法),那也会很好。
我记得,问题的相关部分是:
如何使用Python与Minecraft服务器通信?我有一个用户界面设置,但我不确定如何连接到服务器并将命令发送到它。
答案 0 :(得分:0)
以下是我目前解决此问题的方法。它允许轻松地与服务器通信,但是当没有更多行要读取时,存在挂起对readline
的调用的问题。如果有人知道如何解决这个问题,我会很感激他们告诉我。:
from subprocess import Popen, PIPE, STDOUT
server = Popen("java -jar minecraft_server.1.7.4.jar nogui", stdin=PIPE, stdout=PIPE, stderr=STDOUT)
while True:
print(server.stdout.readline())
server.stdout.flush()
command = input("> ")
if command:
server.stdin.write(bytes(command + "\r\n", "ascii"))
server.stdin.flush()
请注意,要使此代码按原样运行,脚本必须与服务器位于同一目录中。
答案 1 :(得分:0)
这是我正在使用的代码,我对rlms的代码进行了一些编辑以解决读取行问题:
setPlayersSelect(select.winner.playerCount + 1)
答案 2 :(得分:0)
https://github.com/Fallen-Breath/MCDReforged
MCDReforged(缩写为 MCDR)是一个使用自定义插件系统提供 Minecraft 服务器管理能力的工具。完全不需要修改或修改原来的 Minecraft 服务器