mc-launcher 0.1.2

Helpful crate for run Minecraft
Documentation
use std::collections::HashMap;
use crate::client::ClientFile;
use super::configuration::MinecraftConfiguration as Configuration;

pub type DataMap<'a> = HashMap<&'a str, String>;

pub fn generate_data_map<'a>(
  config: Configuration,
  client_file: ClientFile,
  class_path: String
) -> DataMap<'a> {
  let path = &config.client.path;
  let user_type = serde_json::to_string(&config.session.user_type.unwrap_or_default()).unwrap();
  let version = config.client.version;

  let mut map = HashMap::from([
    ("username", config.session.username.to_string()),
    ("uuid", config.session.uuid.to_string()),
    ("access_token", config.session.access_token.to_string()),
    ("user_type", user_type),
    ("launcher_name", String::from("java-minecraft-launcher")),
    ("launcher_version", String::from("1.6.84-j")),
    ("libraries_dir", path.join("libraries").to_str().unwrap().to_string()),
    ("natives_dir", path.join("versions").join(&version).join("natives").to_str().unwrap().to_string()),
    ("game_dir", path.to_str().unwrap().to_string()),
    ("assets_dir", path.join("assets").to_str().unwrap().to_string()),
    ("class_path", class_path),
    ("main_class", client_file.main_class),
    ("version_name", client_file.id),
    ("version_type", client_file.r#type),
    ("assets_index", client_file.assets),
    ("version_jar", path.join("versions").join(&version).join("client.jar").to_str().unwrap().to_string())
  ]);

  if let Some(ip) = config.client.server {
    map.insert("server_ip", ip.to_string());
  }

  if let Some(width) = config.window.width {
    map.insert("width", width.to_string());
  }

  if let Some(height) = config.window.height {
    map.insert("height", height.to_string());
  }

  if let Some(authlib) = config.session.authlib_server {
    map.insert("authlib_server", authlib.server.to_string());
  }

  map
}