How to Use lighty-loaders

Basic Usage

Step 1: Initialize AppState

use lighty_launcher::core::AppState;

const QUALIFIER: &str = "com";
const ORGANIZATION: &str = "MyLauncher";
const APPLICATION: &str = "";

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let _app = AppState::new(
        QUALIFIER.to_string(),
        ORGANIZATION.to_string(),
        APPLICATION.to_string(),
    )?;

    let launcher_dir = AppState::get_project_dirs();

    // launcher_dir contains:
    // - data_dir()  -> game files, instances, versions
    // - cache_dir() -> java runtimes, temporary files

    Ok(())
}

Step 2: Create a VersionBuilder

Step 3: Get Metadata

Loaders Examples

Vanilla Minecraft

Exports:

  • Crate: lighty_loaders::loaders::vanilla

  • Main: lighty_launcher::loaders::vanilla

Fabric

Exports:

  • Crate: lighty_loaders::loaders::fabric

  • Main: lighty_launcher::loaders::fabric

Quilt

Exports:

  • Crate: lighty_loaders::loaders::quilt

  • Main: lighty_launcher::loaders::quilt

NeoForge

Exports:

  • Crate: lighty_loaders::loaders::neoforge

  • Main: lighty_launcher::loaders::neoforge

LightyUpdater with LightyVersionBuilder

For custom servers with LightyUpdater:

Exports:

  • Builder: lighty_version::LightyVersionBuilder

  • Re-export: lighty_launcher::version::LightyVersionBuilder

  • Loader module: lighty_loaders::loaders::lighty_updater

  • Re-export: lighty_launcher::loaders::lighty_updater

For more details, see:

Advanced Usage

Query Specific Metadata

Instead of fetching full metadata, you can query specific parts:

With Events

Exports:

  • Event types: lighty_event::LoaderEvent

  • Re-export: lighty_launcher::event::LoaderEvent

See Events for all event types.

Instance Size Calculation

Exports:

  • Type: lighty_loaders::types::InstanceSize

  • Re-export: lighty_launcher::loaders::InstanceSize

  • Trait: lighty_launch::InstanceControl::size_of_instance()

  • Re-export: lighty_launcher::launch::InstanceControl::size_of_instance()

Feature Flags

Enable only the loaders you need:

Available features:

  • vanilla - Vanilla Minecraft

  • fabric - Fabric loader

  • quilt - Quilt loader

  • neoforge - NeoForge loader

  • forge - Forge loader (1.13+, in progress)

  • forge_legacy - Forge Legacy (1.7-1.12, in progress)

  • lighty_updater - Custom loader system

  • all-loaders - All of the above

Error Handling

Exports:

  • Type: lighty_loaders::utils::error::QueryError

  • Not re-exported in main crate (use full path)

Last updated