pub mod state_resolver;
pub mod model_resolver;
pub mod multipart;
pub use state_resolver::StateResolver;
pub use model_resolver::ModelResolver;
use crate::resource_pack::{BlockModel, BlockstateDefinition, ModelVariant, ResourcePack};
use crate::types::InputBlock;
use crate::error::Result;
#[derive(Debug, Clone)]
pub struct ResolvedModel {
pub model: BlockModel,
pub transform: crate::types::BlockTransform,
}
pub fn resolve_block(
pack: &ResourcePack,
block: &InputBlock,
) -> Result<Vec<ResolvedModel>> {
let state_resolver = StateResolver::new(pack);
let model_resolver = ModelResolver::new(pack);
let variants = state_resolver.resolve(block)?;
let mut resolved = Vec::new();
for variant in variants {
let model = model_resolver.resolve(&variant.model)?;
resolved.push(ResolvedModel {
model,
transform: crate::types::BlockTransform::new(
variant.x,
variant.y,
variant.uvlock,
),
});
}
Ok(resolved)
}