start method

  1. @override
Future<VanillaServer> start ()
override

Implementation

@override
Future<VanillaServer> start() async {
  if(this.running) throw("Server already running!");
  this._running = true;

  List<String> args = ["-Xms${properties.minram}", "-Xmx${properties.maxram}", "-jar",properties.jar_file];
  if(!properties.gui) args.add("nogui");

  //print('$JAVA ' + args.join(" "));

  Completer<VanillaServer> completer = new Completer<VanillaServer>();

  this.process = await Process.start('$JAVA', args, workingDirectory: this.serverdir);

  process.stdout.transform(utf8.decoder).listen((data) {
    this.onStdOut.forEach((e) {
      e(data);
    });
    if((!completer.isCompleted) && new RegExp(r'''Done \([1-9]+\.[1-9]+\w\)! For help, type "help"''').hasMatch(data)) {
      completer.complete(this);
    }
  });

  process.exitCode.then((v) {
    this._running = false;
    this.process = null;
  });

  process.stderr.transform(utf8.decoder).listen((data) { stderr.write(data); });

  return await completer.future;
}