
About The Project
Lyceris is written with functional programming paradigm to achieve simplicity. It supports Microsoft authentication, loaders like Fabric, Quilt (more will be implemented soon), multi-threaded control system and download parallelism. It also automatically downloads necessary Java version. Library name comes from a character from Sword Art Online anime.
Supported Mod Loaders
Versions below 1.12.2 Forge is not supported and won't be supported in the future.
Getting Started
cargo add lyceris
Usage
Don't forget to change the game directory path!
use std::env;
use lyceris::minecraft::{
config::ConfigBuilder,
emitter::{Emitter, Event},
install::install,
launch::launch,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let emitter = Emitter::default();
emitter
.on(
Event::SingleDownloadProgress,
|(path, current, total): (String, u64, u64)| {
println!("Downloading {} - {}/{}", path, current, total);
},
)
.await;
emitter
.on(
Event::MultipleDownloadProgress,
|(current, total): (u64, u64)| {
println!("Downloading {}/{}", current, total);
},
)
.await;
emitter
.on(Event::Console, |line: String| {
println!("Line: {}", line);
})
.await;
let current_dir = env::current_dir()?;
let config = ConfigBuilder::new(
current_dir.join("game"),
"1.21.4".into(),
lyceris::auth::AuthMethod::Offline {
username: "Lyceris".into(),
uuid: None,
},
)
.build();
install(&config, Some(&emitter)).await?;
launch(&config, Some(&emitter)).await?.wait().await?;
Ok(())
}
Roadmap
See the open issues for a full list of proposed features (and known issues).
License
Distributed under the MIT License. See MIT License for more information.