6 releases

new 0.3.2 Dec 18, 2024
0.3.1 Dec 17, 2024
0.2.0 Dec 16, 2024
0.1.1 Nov 25, 2024

#63 in Games

Download history 208/week @ 2024-11-20 89/week @ 2024-11-27 131/week @ 2024-12-04 116/week @ 2024-12-11

544 downloads per month

MIT/Apache

80KB
2K SLoC

Lyceris

An open source Minecraft launcher library written in Rust.

Crates.io MIT/Apache 2.0 Crates.io

About The Project

Product Screenshot

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.

Getting Started

cargo add lyceris

Usage

This is the example implementation with using Quilt mod loader in version 1.20. Don't forget to change the game directory path!

  async fn launch() {
    let config = Config {
        game_dir: "Path to the game directory".into(),
        version: "1.20".to_string(),
        authentication: auth::AuthMethod::Offline {
            username: "Notch".to_string(),
            uuid: "4c4ae28c-16c8-49f4-92a6-8d21e0d8b4a0".to_string(),
        },
        memory: None,
        java_version: None,
        version_name: None,
        loader: Some(Quilt("0.27.1".into())),
        runtime_dir: None,
        custom_args: vec![],
        custom_java_args: vec![],
    };

    let mut emitter = EventEmitter::new();

    // Handling single download progression
    emitter.on("single_download_progress", |(path, current, max): (String, u64, u64)| {
        println!("{}-{}/{}", path, current, max);
    });

    // Handling multi download progression
    emitter.on(
        "multiple_download_progress",
        |(path, current, max): (String, u64, u64)| {
            println!("{}-{}/{}", path, current, max);
        },
    );

    // Handling console outputs
    emitter.on("console", |line: String| {
        println!("Line: {}", line);
    });

    let emitter = Arc::new(Mutex::new(emitter));

    install(&config, Some(&emitter)).await?;

    let child = launch(&config, Some(emitter)).await?;

    child.wait().await?;

  }

Roadmap

  • Microsoft Authentication
  • Forge mod loader support

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.

Dependencies

~18–32MB
~498K SLoC