install method

Future<FabricServer> install (String serverdir, { String fabric_version, String minecraft_version, String installer_version, bool downloadMinecraft: true, bool eula: false })

Install a fabric server instance

Implementation

static Future<FabricServer> install(String serverdir, {String fabric_version, String minecraft_version, String installer_version, bool downloadMinecraft = true, bool eula = false}) async {
  String jarfile = await downloadInstaller(serverdir, installer_version: installer_version);
  List<String> args = ["-jar", jarfile, "server", "-dir", serverdir];

  if(downloadMinecraft) args.add("-downloadMinecraft");
  if(minecraft_version != null) args.addAll(["-version", minecraft_version]);
  if(fabric_version != null) args.addAll(["-loader", fabric_version]);

  Completer installerFinished = new Completer<String>();
  Process.start(JAVA, args).then((Process process) {
    process.stdout
        .transform(utf8.decoder)
        .listen((data) {
          stdout.write(data);
        });
    process.exitCode.then((code) {
      new Directory("$serverdir/tmp").delete(recursive: true);
      installerFinished.complete();
    });
  }).catchError((e) {print(e);});

  ServerProperties server_properties = new ServerProperties(file: "$serverdir/server.properties");

  List<Future> futures = [
    installerFinished.future,
    server_properties.save(),
    createEula(serverdir,eula),
  ];

  futures.addAll(create_start_files(serverdir, "fabric-server-launch.jar"));

  if(fabric_version == null || minecraft_version == null) {

    Completer helpFinished = new Completer<String>();

    Process.run(JAVA, ["-jar", jarfile, "help"]).then((ProcessResult process) {
      List<String> out = process.stdout.toString().split("\n");
      if(minecraft_version == null) {
        minecraft_version = out[out.length-3].substring(out[out.length-3].indexOf(RegExp(r'''[0-9]''')));
      }
      if(fabric_version == null) {
        fabric_version = out[out.length-2].substring(out[out.length-2].indexOf(RegExp(r'''[0-9]''')));
      }
      helpFinished.complete();
    }).catchError((e) {print(e);});

    futures.add(helpFinished.future);
  }

  DartMcLauncherFabricProperties properties = new DartMcLauncherFabricProperties(
    minecraft_version: minecraft_version,
    fabric_version: fabric_version,
    jar_file: "fabric-server-launch.jar",
    minram: 512,
    maxram: 1024,
    gui: false,
    file: path.join(serverdir,"dart-mc-launcher.properties")
  );

  futures.add(properties.save());
  await Future.wait(futures);

  return new FabricServer._init(serverdir, properties, server_properties);
}