createClient method
Future<FabricClient>
createClient
({@required String rootDir, @required String minecraft_version, @required String fabric_version, String installer_version, int maxRam: 2048, int minRam: 512, Authorization auth })
Implementation
static Future<FabricClient> createClient({@required String rootDir, @required String minecraft_version, @required String fabric_version, String installer_version, int maxRam = 2048, int minRam = 512, Authorization auth}) async {
if(rootDir == null) throw("No rootDir given");
if(fabric_version == null) throw("No fabric_version given");
if(minecraft_version == null) throw("No minecraft_version given");
String version = "fabric-loader-$fabric_version-$minecraft_version";
await createDirIfNotExists(rootDir);
if(!await new Directory(path.join(rootDir, "versions", version)).exists()) {
print("Setting up $version...");
await File(path.join(rootDir, "launcher_profiles.json")).writeAsString("{\"profiles\":{}}");
String jarfile = await downloadInstaller(rootDir, installer_version: installer_version);
List<String> args = ["-jar", jarfile, "client", "-dir", rootDir];
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) {
Future.delayed(Duration(milliseconds: 1000)).then((e) { new Directory("$rootDir/tmp").delete(recursive: true); });
installerFinished.complete();
});
}).catchError((e) {print(e);});
await installerFinished.future;
}
return await new FabricClient._init(handler: await new MinecraftClientPreparer(rootDir), rootDir: rootDir, minecraft_version: minecraft_version, fabric_version: fabric_version, version: version, maxRam: maxRam, minRam: minRam, auth: auth ?? auth)._prepare();
}