12个版本 (breaking)

0.10.2 2024年6月14日
0.9.1 2024年4月19日
0.9.0 2023年12月5日
0.8.0 2023年9月15日
0.4.0 2022年11月19日

#567 in 网络编程

Download history 207/week @ 2024-04-24 26/week @ 2024-05-01 8/week @ 2024-05-08 11/week @ 2024-05-15 31/week @ 2024-05-22 20/week @ 2024-05-29 20/week @ 2024-06-05 205/week @ 2024-06-12 15/week @ 2024-06-19 7/week @ 2024-06-26 3/week @ 2024-07-03 18/week @ 2024-07-10 9/week @ 2024-07-17 36/week @ 2024-07-24 23/week @ 2024-07-31 11/week @ 2024-08-07

每月83次下载
6 crates 中使用

MIT 许可证

735KB
18K SLoC

Minecraft块状态的表示。

有三种块类型,用于不同的目的。您可以使用 .into() 在它们之间进行转换(主要是)。

BlockState结构体

BlockState 是一个包含块状态数值协议ID的结构体。这是块在世界上存储的方式。

# use azalea_block::BlockState;
let block_state: BlockState = azalea_block::blocks::CobblestoneWall {
    east: azalea_block::properties::EastWall::Low,
    north: azalea_block::properties::NorthWall::Low,
    south: azalea_block::properties::SouthWall::Low,
    west: azalea_block::properties::WestWall::Low,
    up: false,
    waterlogged: false,
}
.into();
# use azalea_block::BlockState;
let block_state: BlockState = azalea_registry::Block::Jukebox.into();

Block特质

Block 特质表示一种块类型。通过使用 Block 特质,您可以获取一些额外的东西,如字符串块ID和一些关于块行为的有关信息。此外,实现该特质的结构体将块属性作为字段包含在内,因此获取它们更为方便。请注意,这通常用作 Box<dyn Block>。如果出于某种原因您不想使用 Block 特质,请将默认功能设置为false。

# use azalea_block::{Block, BlockState};
# let block_state = BlockState::from(azalea_registry::Block::Jukebox);
let block = Box::<dyn Block>::from(block_state);
# use azalea_block::{Block, BlockState};
# let block_state: BlockState = azalea_registry::Block::Jukebox.into();
if let Some(jukebox) = Box::<dyn Block>::from(block_state).downcast_ref::<azalea_block::blocks::Jukebox>() {
    // ...
}

azalea_registry::Block 枚举

这个实际上并不来自 azalea-block 包,但它仍然非常相关。它是一个枚举,其中包含每个块类型作为变体 包含任何状态数据(与 BlockStateBlock 特质不同)。将此转换为任何其他块类型将使用该块的默认状态。

依赖关系

~1.6–2.3MB
~45K SLoC