Exécution d'un serveur Minecraft à partir de mon propre programme


J'essaie de configurer un serveur Minecraft, pour le plaisir, et je veux ajouter un panneau de configuration pour faciliter sa gestion. Une partie de ce panneau de configuration consiste à exécuter le serveur À partir du panneau pour réduire l'erreur de cliquer sur le bouton Quitter et ce qui ne l'est pas. (le serveur minecraft est un non-exécutable .fichier jar, ce qui implique que vous devez faire un.bat pour l'exécuter à partir de la ligne de commande) Je sais comment exécuter le serveur dans mon programme, ainsi que imprimer la sortie, ici:

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();

Mais, avec cela, je ne sais pas comment implémentez une méthode de saisie. par exemple, si je clique sur un bouton, il envoie l'entrée "stop" au pot externe pour arrêter le serveur, comme il le fait sans ce panneau de commande. comment pourrais-je mettre cela en œuvre? le code ci-dessus, je prévois d'être en cours d'exécution dans son propre thread, mais peut-être que je fais tout cela mal?

Merci d'avance!

Author: PulsePanda, 2014-01-15

1 answers

On dirait que la classe Process a une méthode getOutputStream(). Vous pouvez essayer quelque chose comme ceci:

OutputStream os = p.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("stop");
bw.newLine();
bw.flush();
 4
Author: Mike B, 2014-01-15 17:05:27