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 网络编程
每月83次下载
在 6 crates 中使用
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
包,但它仍然非常相关。它是一个枚举,其中包含每个块类型作为变体 不 包含任何状态数据(与 BlockState
和 Block
特质不同)。将此转换为任何其他块类型将使用该块的默认状态。
依赖关系
~1.6–2.3MB
~45K SLoC