Skip to content

Parsing Minecraft asset files and resource packs in Rust.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

BGR360/minecraft-assets-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minecraft-assets

Crates.io Docs.rs Tests

A Rust library for reading asset files and resource packs for any version of Minecraft.

Example

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");

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

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.

About

Parsing Minecraft asset files and resource packs in Rust.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published