A Rust library for reading asset files and resource packs for any version of Minecraft.
use minecraft_assets::api::AssetPack;
let assets = AssetPack::at_path("~/.minecraft/");
// Load the block states for `oak_planks`
let states = assets.load_blockstates("oak_planks").unwrap();
let variants = states.variants().unwrap();
assert_eq!(variants.len(), 1);
let model_properties = &variants[""].models()[0];
assert_eq!(model_properties.model, "block/oak_planks");
This library is #![warn(missing_docs)]
, so the documentation is very complete:
-
assets/<namespace>/blockstates/*.json
-
assets/<namespace>/font/*.json
-
assets/<namespace>/lang/*.json
-
assets/<namespace>/models/block/*.json
-
assets/<namespace>/models/item/*.json
-
assets/<namespace>/particles/*.json
-
assets/<namespace>/shaders/{post,program}/*.json
-
assets/<namespace>/textures/*.mcmeta
-
assets/<namespace>/sounds.json
-
assets/pack.mcmeta
-
data/<namespace>/advancements/**/*.json
-
data/<namespace>/loot_tables/**/*.json
-
data/<namespace>/recipes/*.json
-
data/<namespace>/structures/**/*.json
-
data/<namespace>/tags/**/*.json
- Brine: A multi-version Minecraft client written using Bevy.
- Maybe your project here! :)
Integration tests in tests/
use the actual asset files from the
minecraft-assets
repository.
That repository is fairly large (~1 GB), so the tests in tests/
do not run by
default. If you'd like to run them, use the tests/setup.sh
script:
$ ./tests/setup.sh
This script will fetch the minecraft-assets
repository and check out a few
different versions at various paths in tests/
. Then you can run the
tests by enabling the tests
feature:
$ cargo test --features tests
Licensed under either of
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
at your option.
Copyright Ben Reeves 2022
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.