繁体   English   中英

使用 java 操作我的世界服务器输入/输出

[英]using java to manipulate a minecraft server input/output

我正在尝试通过 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等之前有或没有/

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

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

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

还要注意,线line = r.readLine(); 在进程处于活动状态时(默认情况下),可能永远不会返回null

好的,找到它,需要使用 write() newline() 然后 flush() 将任何内容发送到控制台。

我的第二个问题是对我的流程的死引用。

破坏进程不起作用,但停止命令可以。

使用 / 没用,\n 不会替换 newline()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM