[package]
name = "nucleation"
version = "0.3.13"
edition = "2021"
description = "A high-performance Minecraft schematic parser and utility library"
authors = ["Nano nano@schem.at"]
license = "MIT"
repository = "https://github.com/Schem-at/Nucleation"
readme = "README.md"
keywords = ["minecraft", "schematic", "parser", "voxel"]
categories = ["game-development", "parser-implementations", "wasm"]
include = [
"src/**",
"build.rs",
"data/blockpedia/**",
"tools/mc-data/**",
"Cargo.toml",
"README.md",
"LICENSE",
"RELEASE_NOTES.md",
]
[lib]
crate-type = ["cdylib", "staticlib", "rlib"]
[features]
default = ["store-fs", "autostack"]
bridge = ["dep:diplomat", "dep:diplomat-runtime", "dep:base64", "autostack"]
bridge-full = [
"bridge",
"meshing",
"rendering",
"scripting-lua",
"scripting-js",
"voxelize",
]
store-fs = []
store-s3 = ["dep:aws-sdk-s3", "dep:tokio", "dep:futures-util"]
store-redis = ["dep:redis", "dep:tokio"]
store-pg = ["dep:tokio-postgres", "dep:tokio"]
store-callback = []
store-testkit = ["dep:testcontainers-modules"]
serde = []
autostack = []
voxelize = ["dep:gltf", "dep:image"]
meshing = ["schematic-mesher"]
rendering = ["meshing", "dep:wgpu", "dep:image", "dep:pollster"]
scripting-lua = ["mlua"]
scripting-js = ["rquickjs"]
scripting = ["scripting-lua", "scripting-js"]
mc-data-refresh = ["dep:image", "dep:reqwest"]
[dependencies]
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
chrono = { version = "0.4", features = ["serde"] }
quartz_nbt = { version = "0.2.9", features = ["preserve_order"] }
flate2 = { version = "1.1.2", default-features = false, features = ["zlib-rs"] }
log = "0.4.22"
console = "0.15.8"
insign = "0.1.1"
phf = { version = "0.11", features = ["macros"] }
palette = "0.7"
anyhow = "1.0"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing = "0.1.40"
thiserror = "1.0.63"
rayon = "1.10"
smol_str = { version = "0.2", features = ["serde"] }
rustc-hash = "2.0"
rand = "0.8.5"
getrandom = { version = "0.2", features = ["custom"] }
diplomat = { version = "0.15.0", optional = true }
diplomat-runtime = { version = "0.15.1", optional = true }
base64 = { version = "0.22", optional = true }
mlua = { version = "0.10", features = ["luajit", "vendored"], optional = true }
rquickjs = { version = "0.9", features = ["macro", "classes", "properties"], optional = true }
bincode = "1"
blake3 = "1"
ron = "0.8"
rustfft = "6"
bytemuck = { version = "1.23.1", features = ["derive"] }
zip = { version = "2", default-features = false, features = ["deflate"] }
tokio = { version = "1", features = ["rt-multi-thread", "net", "time"], optional = true }
aws-sdk-s3 = { version = "1", optional = true }
futures-util = { version = "0.3", optional = true }
redis = { version = "0.27", features = ["tokio-comp"], optional = true }
tokio-postgres = { version = "0.7", optional = true }
testcontainers-modules = { version = "0.11", features = [
"minio",
"redis",
"postgres",
"blocking",
], optional = true }
schematic-mesher = { version = "0.2.0", git = "https://github.com/Schem-at/Schematic-Mesher.git", rev = "d22d39ca6b0664f97b14e059d411240932cd9d22", optional = true }
wgpu = { version = "24", optional = true }
image = { version = "0.24", optional = true }
pollster = { version = "0.4", optional = true }
gltf = { version = "1.4", default-features = false, features = ["utils"], optional = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
reqwest = { version = "0.12", features = ["blocking", "json"], optional = true }
[build-dependencies]
anyhow = "1.0"
serde_json = "1.0"
flate2 = { version = "1.1.2", default-features = false, features = ["zlib-rs"] }
[[bin]]
name = "refresh-block-data"
path = "tools/mc-data/refresh-block-data.rs"
required-features = ["mc-data-refresh"]
[[bin]]
name = "fetch-texture-colors"
path = "tools/mc-data/fetch-texture-colors.rs"
required-features = ["mc-data-refresh"]
[[bin]]
name = "download-textures"
path = "tools/mc-data/download-textures.rs"
required-features = ["mc-data-refresh"]
[[bin]]
name = "refresh-bedrock-mappings"
path = "tools/mc-data/refresh-bedrock-mappings.rs"
required-features = ["mc-data-refresh"]
[dev-dependencies]
num-complex = "0.4"
base64 = "0.22"
ffmpeg-sidecar = "2.4"
winit = "0.30"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
criterion = "0.5.1"
[[bench]]
name = "block_placement"
harness = false
[[bench]]
name = "performance_test"
harness = false
[[bench]]
name = "region_bench"
harness = false
[[bench]]
name = "scripting_bench"
harness = false
required-features = ["scripting"]
[[bench]]
name = "snapshot_bench"
harness = false
[[bench]]
name = "fingerprint_bench"
harness = false
[[example]]
name = "render_schematic"
required-features = ["rendering"]
[[example]]
name = "bench_mesh_timing"
required-features = ["meshing"]
[[example]]
name = "compare_formats"
required-features = ["meshing"]
[[example]]
name = "gen_test_nucm"
required-features = ["meshing"]
[[example]]
name = "quick_mesh_test"
required-features = ["meshing"]
[[example]]
name = "nucm_size_test"
required-features = ["meshing"]
[[example]]
name = "convert_world"
required-features = ["meshing"]
[[example]]
name = "item_model_test"
required-features = ["meshing"]
[[example]]
name = "multi_item_model"
required-features = ["meshing"]
[[example]]
name = "entity_mesh_test"
required-features = ["meshing"]
[[test]]
name = "store_testcontainers"
required-features = ["store-s3", "store-redis", "store-pg", "store-testkit"]
[profile.bench]
debug = true
[profile.release]
lto = true
opt-level = 3