minecraft-assets
A Rust library for reading asset files and resource packs for any version of Minecraft.
Example
use AssetPack;
let assets = at_path;
// Load the block states for `oak_planks`
let states = assets.load_blockstates.unwrap;
let variants = states.variants.unwrap;
assert_eq!;
let model_properties = &variants.models;
assert_eq!;
Documentation
This library is #![warn(missing_docs)], so the documentation is very complete:
Feature checklist
Assets parsing
-
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 parsing
-
data/<namespace>/advancements/**/*.json -
data/<namespace>/loot_tables/**/*.json -
data/<namespace>/recipes/*.json -
data/<namespace>/structures/**/*.json -
data/<namespace>/tags/**/*.json
Projects using minecraft-assets
- Brine: A multi-version Minecraft client written using Bevy.
- Maybe your project here! :)
Tests
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
License
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
Contribution
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.