[package] name = "horizon-launcher" version = "0.2.0" edition = "2021" license = "MIT" description = "Downloads, prepares and starts Horizon builds" [workspace] [dependencies] gpui = "0.2.2" ureq = { version = "2", features = ["json", "tls"], default-features = false } serde = { version = "1", features = ["derive"] } serde_json = "1" # Checks the client jar and the version file found in other launchers' folders (sources.rs). sha1 = "0.10" # The mod browser checks Modrinth's SHA-512 before a pack reaches the game folder (browser/download.rs). sha2 = "0.10" pulldown-cmark = { version = "0.12", default-features = false } flate2 = "1" tar = { version = "0.4", default-features = false } toml = "1.1" zip = { version = "2", default-features = false, features = ["deflate"] } dirs = "5" # The system's preferred languages, for the window's language (i18n.rs). sys-locale = "0.3" self-replace = "1" clap = { version = "4", features = ["derive"] } horizon-theme = { path = "../crates/horizon-theme" } horizon-core = { path = "../crates/horizon-core" } horizon-prepare = { path = "../crates/horizon-prepare" } # Join a friend: invite codes (the game does the joining). horizon-friends = { path = "../crates/horizon-friends" } horizon-bench = { path = "../crates/horizon-bench" } # Import modpack: the porting pipeline, run on the player's own files (docs/modpacks.md). horizon-port-pack = { path = "../crates/horizon-port-pack" } # Horizon's mod registry: its index and the checks a download passes before install. horizon-mods = { path = "../crates/horizon-mods", features = ["index"] } # Signed updates: archives are checked against the release's signed checksums (docs/security.md). horizon-release-sign = { path = "../crates/horizon-release-sign" } # Opt-in data collection: the consent, the outbox and its upload (docs/telemetry.md). horizon-telemetry = { path = "../crates/horizon-telemetry" } # level.dat and servers.dat (the worlds and server lists of instances) horizon-world = { path = "../crates/horizon-world" } # Deleting a world moves it to the system's trash trash = "5" # Backup names carry the local time, as vanilla's do base64 = "0.22" chrono = { version = "0.4", default-features = false, features = ["clock"] } # The session file's random name. getrandom = "0.3" # Players' heads on the Servers page, from the default skins in the player's own game files (already # in the lockfile through gpui). image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp", "gif"] } # Microsoft account secrets in the OS keychain: the Secret Service on Linux through oo7 (the same # build gpui uses), Keychain and Credential Manager through keyring. [target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies] oo7 = { version = "0.5", default-features = false, features = ["async-std", "native_crypto"] } futures-lite = "2" [target.'cfg(target_os = "macos")'.dependencies] keyring = { version = "3", features = ["apple-native"] } # Painting the window's title bar dark or light (titlebar::apply_appearance): crates already in # the lockfile through gpui and wgpu. objc2-app-kit = { version = "0.3", default-features = false, features = ["NSAppearance", "NSView", "NSWindow"] } raw-window-handle = "0.6" [target.'cfg(target_os = "windows")'.dependencies] keyring = { version = "3", features = ["windows-native"] } [target.'cfg(windows)'.build-dependencies] # The icon resource in the .exe (build.rs). winresource = "0.1" [profile.release] strip = true