874b6f20c2
Основа — Horizon (MIT). История апстрима не переносится: этот репозиторий ведёт свою.
112 lines
5.5 KiB
TOML
112 lines
5.5 KiB
TOML
[package]
|
|
name = "horizon-client"
|
|
default-run = "horizon-client"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version = "1.90"
|
|
description = "Horizon native development client"
|
|
|
|
[dependencies]
|
|
horizon-assets = { path = "../horizon-assets" }
|
|
horizon-client-core = { path = "../horizon-client-core" }
|
|
horizon-client-input = { path = "../horizon-client-input" }
|
|
horizon-command = { path = "../horizon-command" }
|
|
horizon-items = { path = "../horizon-items" }
|
|
horizon-core = { path = "../horizon-core" }
|
|
# The server thread ahead of the workers (MinecraftServer.spin's Thread.setPriority).
|
|
horizon-threads = { path = "../horizon-threads" }
|
|
horizon-hdr = { path = "../horizon-hdr" }
|
|
horizon-world = { path = "../horizon-world" }
|
|
horizon-protocol = { path = "../horizon-protocol" }
|
|
# server.properties, eula.txt and the user lists, shared with horizon-server.
|
|
horizon-server-files = { path = "../horizon-server-files" }
|
|
# Shader packs: reading them and turning their GLSL into naga modules.
|
|
horizon-shaders = { path = "../horizon-shaders" }
|
|
# Horizon's own shader packs: the format, the stages and the check (docs/shaders.md).
|
|
horizon-shader-api = { path = "../horizon-shader-api" }
|
|
horizon-friends = { path = "../horizon-friends" }
|
|
# Horizon mods: sandboxed WebAssembly components, off unless installed and turned on (docs/mods.md).
|
|
# Their runtime is the `mods` feature.
|
|
horizon-mods = { path = "../horizon-mods", default-features = false, features = ["index"] }
|
|
wgpu = { version = "30.0.1", default-features = false, features = ["std", "parking_lot", "vulkan", "metal", "wgsl", "naga-ir"] }
|
|
winit = "0.30.13"
|
|
pollster = "0.4"
|
|
bytemuck = { version = "1.24", features = ["derive"] }
|
|
glam = "0.30"
|
|
png = "0.18"
|
|
sha2 = "0.10.9"
|
|
# Server resource packs are checked and cached by their SHA-1, as vanilla does.
|
|
sha1 = "0.10"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = { version = "1.0.151", features = ["raw_value"] }
|
|
# hlsl-out: the gfx.rs tests translate every shader as wgpu's DirectX 12 backend does. A normal feature,
|
|
# not a dev-dependency's, so builds, tests and examples share one build of naga, wgpu and this crate.
|
|
naga = { version = "30.0.1", features = ["wgsl-in", "hlsl-out"] }
|
|
# Sound (ALSA on Linux); the `audio` feature.
|
|
cpal = { version = "0.16", optional = true }
|
|
symphonia = { version = "0.5", default-features = false, features = ["ogg", "vorbis"] }
|
|
miniz_oxide = "0.8"
|
|
ab_glyph = "0.2.32"
|
|
log = "0.4"
|
|
chrono = { version = "0.4.42", default-features = false, features = ["clock", "std"] }
|
|
flate2 = { version = "1.1.10", default-features = false, features = ["zlib-rs", "runtime_detection"] }
|
|
horizon-theme = { path = "../horizon-theme" }
|
|
# Opt-in data collection: the game keeps, the launcher sends (docs/telemetry.md); `live` is
|
|
# the anonymous "I'm playing" ping the game sends itself (`heartbeat.rs`).
|
|
horizon-telemetry = { path = "../horizon-telemetry", default-features = false, features = ["live"] }
|
|
horizon-bench = { path = "../horizon-bench" }
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
# Controllers (evdev + libudev on Linux, IOKit on macOS, Windows.Gaming.Input); the `controllers` feature.
|
|
gilrs = { version = "0.11", optional = true }
|
|
# The DualSense's rumble, adaptive triggers and lights over HID (gilrs only reads it).
|
|
horizon-dualsense = { path = "../horizon-dualsense", optional = true }
|
|
# HTTPS to the Minecraft services (online-mode session join).
|
|
ureq = { version = "2", default-features = false, features = ["tls"] }
|
|
unicode-bidi = "0.3.18"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
# The server thread's CPU time per tick (`HORIZON_SPIKES`, spans.rs).
|
|
rustix = { version = "1", default-features = false, features = ["std", "time"] }
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
# DirectX 12, where Vulkan has no adapter or device, or by choice (`graphicsApi`, graphics.rs).
|
|
# Shaders compile with FXC (d3dcompiler_47.dll, part of Windows), or DXC when dxcompiler.dll is
|
|
# on the PATH.
|
|
wgpu = { version = "30.0.1", default-features = false, features = ["dx12"] }
|
|
|
|
[target.'cfg(not(target_os = "macos"))'.dependencies]
|
|
# OpenGL (WGL on Windows, EGL on Linux), the last fallback, for GPUs with no Vulkan or
|
|
# DirectX 12 driver (`graphicsApi`, graphics.rs).
|
|
wgpu = { version = "30.0.1", default-features = false, features = ["gles"] }
|
|
|
|
[target.'cfg(windows)'.build-dependencies]
|
|
# The icon resource in the .exe (build.rs).
|
|
winresource = "0.1"
|
|
|
|
[features]
|
|
default = ["audio", "controllers"]
|
|
# Sound output. Without it (and `controllers`) the program links neither libasound nor libudev on
|
|
# Linux: the server build (`--no-default-features`, released as horizon-engine; docs/server.md).
|
|
audio = ["dep:cpal"]
|
|
# Controllers: gilrs, and the DualSense's own output. Without it only `horizon-ctl pad`'s virtual pad.
|
|
controllers = ["dep:gilrs", "dep:horizon-dualsense", "horizon-client-input/controllers"]
|
|
# Runs code mods (wasmtime and cranelift: a quarter of a clean build). On in every release build
|
|
# (release.yml); the tests and probes don't need it. Content mods load without it.
|
|
mods = ["horizon-mods/runtime"]
|
|
# Records the call sites of mob random draws (`mob_ai_probe` traces).
|
|
rng-trace = ["horizon-core/rng-trace"]
|
|
|
|
# Its own name, not `probe`: Cargo copies every crate's examples into one target/<profile>/examples.
|
|
[[example]]
|
|
name = "client_probe"
|
|
path = "examples/probe/main.rs"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dev-dependencies]
|
|
horizon-items = { path = "../horizon-items", features = ["test-support"] }
|
|
# Every WGSL shader translated as wgpu's DirectX 12 backend does (gfx.rs tests).
|
|
naga = { version = "30.0.1", features = ["wgsl-in", "hlsl-out", "msl-out", "spv-out"] }
|