setup method

Future<MinecraftClientPreparer> setup (String version)

Implementation

Future<MinecraftClientPreparer> setup(String version) async {
  this.version_name = version;
  http.Response response = await http.get('https://launchermeta.mojang.com/mc/game/version_manifest.json');
  this.version_manifest = json.decode(response.body);

  if(await File("$root/versions/$version/$version.json").exists()) {
    this.version = json.decode(await new File("$root/versions/$version/$version.json").readAsString());
  }

  else {
    for(Map<String,dynamic> value in version_manifest["versions"]) {
      if(value["id"] != version) continue;
      this.version = json.decode((await http.get(value["url"])).body);
      break;
    }
    if(this.version == null) throw("Version $version does not exist!");
  }

  if(this.version["inheritsFrom"] != null) {
    print("Version $version inerhits from version ${this.version["inheritsFrom"]}, needing to get this version first!");
    MinecraftClientPreparer preparer = await new MinecraftClientPreparer(root).install(this.version["inheritsFrom"]);
    this.parent = preparer;
    Map<String, dynamic> tmp = this.version;
    this.version = mergeMap([json.decode(json.encode(preparer.version)),tmp]);
    this.version["arguments"]["game"].addAll(preparer.version["arguments"]["game"]);
    this.version["libraries"].addAll(preparer.version["libraries"]);

  }

  return this;
}