首页 > 解决方案 > 使用 java 来操作 minecraft 服务器输入/输出

问题描述

我正在尝试通过 java 管理我的 minecraft 服务器,但即使我可以轻松读取输出,我也无法获取命令甚至文本:

ProcessBuilder builder = new ProcessBuilder(
        "cmd.exe", "/c", "cd C:\\my\\path\\ && java -jar server.jar nogui");
builder.redirectErrorStream(true);
Process p;

p = builder.start();
this.p = p;

BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (loop) {
    line = r.readLine();
    if (line == null) { break; }
    System.out.println(line);
}

这工作得很好,但是当我尝试发送命令时它根本不起作用:

OutputStream os = BotData.minecraftServer.getOutputStream();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(os));
String stop = "stop";
try {
    out.write(stop + "\n");
    out.write("\n");
    out.flush();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我试过有"Command:>>" + stop + "\n" 或没有/之前stop等。

强制或不强制终止进程,在线程中启动它然后我会停止......

我既无法获得文本也无法使用命令。

标签: javainputoutputminecraft

解决方案


文件说来自 cmd 的命令应该带有前导/. 尝试发送/stop而不是stop.

另外请注意,该行line = r.readLine();可能永远不会null在进程处于活动状态时返回(默认情况下)。


推荐阅读