b2e9fafbe0
The official launcher crashes on some Linux systems (rdbt's Arch), and Horizon only read its layout. Preparing now finds the pinned version in the chosen folder (or a folder above it, so an instance folder works), then in every launcher's default folder on Linux (Flatpak included), macOS and Windows: - the official launcher: versions/<v>/<v>.jar - Prism Launcher, MultiMC: the jar their meta/net.minecraft/<v>.json names (a Maven name in libraries/), libraries/com/mojang/minecraft/<v>/... - the Modrinth App: meta/versions/<v>/<v>.jar, meta/libraries - ATLauncher, GDLauncher (data/, Next's datastore/): libraries/net/minecraft/client/<v>/client-<v>.jar The client jar is checked against the lock's sha1. horizon-prepare reads the official layout and pins the version JSON's own sha1, so files found elsewhere are linked into that layout in the data folder (linked-minecraft/), with the pinned version JSON from piston-meta (by its sha1, checked) when the launcher keeps only its own format or a rewrite. Nothing else is copied or downloaded. Every preparer, old Python ones included, reads the linked folder as an official one. When nothing is found, the error lists the chosen folder and every installed launcher's, with what each lacks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 lines
1.9 KiB
TOML
50 lines
1.9 KiB
TOML
[package]
|
|
name = "horizon-launcher"
|
|
version = "0.1.5"
|
|
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"
|
|
pulldown-cmark = { version = "0.12", default-features = false }
|
|
flate2 = "1"
|
|
tar = { version = "0.4", default-features = false }
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
dirs = "5"
|
|
self-replace = "1"
|
|
clap = { version = "4", features = ["derive"] }
|
|
horizon-theme = { path = "../crates/horizon-theme" }
|
|
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" }
|
|
# Opt-in data collection: the consent, the outbox and its upload (docs/telemetry.md).
|
|
horizon-telemetry = { path = "../crates/horizon-telemetry" }
|
|
# The session file's random name.
|
|
getrandom = "0.3"
|
|
|
|
# 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"] }
|
|
[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
|