install method
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);
}