use late_java_core::{
Launch, MicrosoftAuth, MojangAuth, AZauthAuth,
LaunchOptions, MemoryOptions, LoaderOptions,
ScreenOptions, JavaOptions, VersionManifest, init_logger
};
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
init_logger();
println!("=== Late Java Core - Ejemplo Avanzado ===");
println!("Obteniendo versiones disponibles...");
let manifest = VersionManifest::fetch().await?;
println!("Última versión release: {}", manifest.latest.release);
println!("Última versión snapshot: {}", manifest.latest.snapshot);
println!("\n=== Ejemplo de Autenticación ===");
println!("Autenticación Microsoft:");
let microsoft_auth = MicrosoftAuth::new("00000000402b5328".to_string());
println!("Autenticación Mojang (legacy):");
let mojang_auth = MojangAuth::new();
println!("Autenticación AZauth:");
let azauth_auth = AZauthAuth::new("https://authserver.example.com".to_string());
println!("\n=== Configuración Avanzada ===");
let mut custom_headers = HashMap::new();
custom_headers.insert("User-Agent".to_string(), "LateJavaCore/2.2.9".to_string());
let options = LaunchOptions {
path: "./minecraft".to_string(),
version: "1.20.4".to_string(),
url: Some("https://launchermeta.mojang.com".to_string()),
headers: Some(custom_headers),
timeout: Some(30000),
instance: Some("modded".to_string()),
detached: Some(false),
download_file_multiple: Some(10), bypass_offline: Some(false),
memory: MemoryOptions {
min: "4G".to_string(),
max: "8G".to_string(),
},
screen: ScreenOptions {
width: Some(1920),
height: Some(1080),
fullscreen: false,
},
java: JavaOptions {
path: None, version: Some("17".to_string()),
java_type: "jre".to_string(),
},
loader: LoaderOptions {
path: Some("./loader".to_string()),
loader_type: Some("fabric".to_string()),
build: Some("0.15.9".to_string()),
enable: true,
},
mcp: None,
verify: Some(true),
ignored: vec!["saves".to_string(), "screenshots".to_string()],
jvm_args: vec![
"-XX:+UseG1GC".to_string(),
"-XX:+ParallelRefProcEnabled".to_string(),
"-XX:MaxGCPauseMillis=200".to_string(),
],
game_args: vec![
"--quickPlaySingleplayer".to_string(),
"world_name".to_string(),
],
};
println!("Configuración completada:");
println!(" - Ruta: {}", options.path);
println!(" - Versión: {}", options.version);
println!(" - Instancia: {:?}", options.instance);
println!(" - Memoria: {} - {}", options.memory.min, options.memory.max);
println!(" - Pantalla: {:?}x{:?}", options.screen.width, options.screen.height);
println!(" - Java: {:?}", options.java.version);
println!(" - Loader: {:?} {:?}", options.loader.loader_type, options.loader.build);
println!(" - Descargas concurrentes: {:?}", options.download_file_multiple);
println!("\n=== Lanzando Minecraft ===");
let launcher = Launch::new();
println!("Minecraft lanzado exitosamente!");
Ok(())
}