java - 从我自己的程序中运行 minecraft 服务器

标签 java user-interface inputstream outputstream minecraft

为了好玩,我正在尝试设置一个 Minecraft 服务器,并希望添加一个控制面板以简化管理。该控制面板的一部分是从面板运行服务器,以减少误按退出按钮等情况。 (我的世界服务器是一个不可运行的 .jar 文件,这意味着你必须制作一个 .bat 才能从命令行运行它)我知道如何在我的程序中运行服务器,以及打印输出,在这里:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "gscale.jar");
        pb.redirectErrorStream(true);
        pb.directory(new File("F:\\Documents and Settings\\Administrator\\Desktop"));

        System.out.println("Directory: " + pb.directory().getAbsolutePath());
        Process p = pb.start();
        InputStream is = p.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        for (String line = br.readLine(); line != null; line = br.readLine()) {
                System.out.println( line ); // Or just ignore it
        }
        p.waitFor();

但是,有了这个,我不确定如何实现输入法。例如,如果我单击一个按钮,它会将输入“停止”发送到外部 jar 以停止服务器,就像没有此命令面板时一样。我将如何实现?上面的代码我计划在它自己的线程中运行,但也许我做错了?

提前致谢!

最佳答案

看起来 Process 类有一个 getOutputStream() 方法。你可以尝试这样的事情:

OutputStream os = p.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("stop");
bw.newLine();
bw.flush();

关于java - 从我自己的程序中运行 minecraft 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143234/

相关文章:

windows - ckeditor对话框定位

iphone - 构建数据驱动的 UI

ios - iOS 中 UITouch 时间戳的精度是多少?

Android:如何将两个OGG音乐文件合并(加入)一个?

java - 在 Mac OS (Snow Leopard) 上切换 J2SE 版本

java - org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler 进程严重 : Error reading request, 被忽略

java - jdb 中的文本导航在 bash 中不起作用

java - 用于为 Java 定义关系数据库结构的图形实用程序

java.io.Image 到 InputStream

java - java中如何从inputStream中读取每个字符串