#minecraft #assets #gamedev #资源包

minecraft-assets

使用Rust解析Minecraft资源文件和资源包

5个版本

0.0.6 2022年2月18日
0.0.5 2022年2月9日
0.0.4 2022年1月31日

#1462 in 游戏开发

MIT/Apache

96KB
1K SLoC

minecraft-assets

Crates.io Docs.rs Tests

Minecraft任何版本读取资源文件和资源包的Rust库。

示例

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

文档

此库的文档非常完整,因为它使用了 #![warn(missing_docs)]

功能清单

资源文件解析

  • 资源文件/<命名空间>/方块状态/*.json
  • 资源文件/<命名空间>/字体/*.json
  • 资源文件/<命名空间>/语言/*.json
  • 资源文件/<命名空间>/模型/方块/*.json
  • 资源文件/<命名空间>/模型/物品/*.json
  • 资源文件/<命名空间>/粒子/*.json
  • 资源文件/<命名空间>/着色器/{后处理,程序}/*.json
  • 资源文件/<命名空间>/纹理/*.mcmeta
  • 资源文件/<命名空间>/声音.json
  • 资源文件/.mcmeta

数据解析

  • 数据/<命名空间>/成就/**/*.json
  • 数据/<命名空间>/掉落表/**/*.json
  • 数据/<命名空间>/食谱/*.json
  • 数据/<命名空间>/结构/**/*.json
  • 数据/<命名空间>/标签/**/*.json

使用minecraft-assets的项目

  • Brine:使用Bevy编写的多版本Minecraft客户端。
  • 也许你的项目可以在这里! :)

测试

tests/ 中的集成测试使用了来自 minecraft-assets 仓库的实际资源文件。

该仓库相当大(约1GB),因此默认情况下不运行 tests/ 中的测试。如果你想运行它们,请使用 tests/setup.sh 脚本

$ ./tests/setup.sh

此脚本将获取 minecraft-assets 仓库并在 tests/ 中的不同路径检出几个不同的版本。然后你可以通过启用 tests 功能来运行测试

$ cargo test --features tests

许可证

许可协议为以下之一

由您选择。

版权所有 Ben Reeves 2022

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在本作品中的贡献,将根据上述条款双授权,不附加任何其他条款或条件。

依赖项

~0.7–1.4MB
~32K SLoC