start method
override
Implementation
Future<FabricClient> start() async {
String nativePath = resolvePath("$rootDir/natives/$minecraft_version");
// Jvm
List<String> jvm = [
'-XX:-UseAdaptiveSizePolicy',
'-XX:-OmitStackTraceInFastThrow',
'-Dfml.ignorePatchDiscrepancies=true',
'-Dfml.ignoreInvalidMinecraftCertificates=true',
'-Djava.library.path=${nativePath}',
'-Xmx${maxRam}M',
'-Xms${minRam}M',
];
jvm.add(await this.handler.getJVM());
String mcPath = await handler.getJar();
List<String> classes = await handler.getClasses();
List<String> classPaths = ['-cp'];
String separator = this.handler.getOS() == "windows" ? ";" : ":";
String jar = (await File(mcPath).exists()) ? '${mcPath}${separator}' : '';
classPaths.add('${jar}${classes.join(separator)}');
classPaths.add(handler.version["mainClass"] ?? 'net.minecraft.client.main.Main');
List<String> args = [];
args.addAll(jvm);
args.addAll(classPaths);
this.handler.getLaunchOptions(auth: auth).forEach((e) {
args.add(e);
});
// print("$JAVAW ${args.join(" ")}");
this.process = await Process.start(JAVAW, args, workingDirectory: this.rootDir);
this.process.stdout.transform(utf8.decoder).listen((data) { this.onStdOut.forEach((e) { e(data); }); });
this.process.stderr.transform(utf8.decoder).listen((data) { this.onStdErr.forEach((e) { e(data); }); });
this.process.exitCode.then((code) { process = null; });
return this;
}