azalea_protocol/packets/
common.rs1use azalea_buf::AzBuf;
2use azalea_core::{
3 data_registry::ResolvableDataRegistry,
4 game_type::{GameMode, OptionalGameType},
5 position::GlobalPos,
6 registry_holder::{RegistryHolder, dimension_type::DimensionKindElement},
7};
8use azalea_registry::{data::DimensionKind, identifier::Identifier};
9use tracing::error;
10
11#[derive(Clone, Debug, AzBuf, PartialEq)]
12pub struct CommonPlayerSpawnInfo {
13 pub dimension_type: DimensionKind,
14 pub dimension: Identifier,
15 pub seed: i64,
16 pub game_type: GameMode,
17 pub previous_game_type: OptionalGameType,
18 pub is_debug: bool,
19 pub is_flat: bool,
20 pub last_death_location: Option<GlobalPos>,
21 #[var]
22 pub portal_cooldown: u32,
23 #[var]
24 pub sea_level: i32,
25}
26impl CommonPlayerSpawnInfo {
27 pub fn dimension_type<'a>(
28 &self,
29 registry_holder: &'a RegistryHolder,
30 ) -> Option<(&'a Identifier, &'a DimensionKindElement)> {
31 let dimension_res = self.dimension_type.resolve(registry_holder);
32 let Some((dimension_type, dimension_data)) = dimension_res else {
33 error!("Couldn't resolve dimension_type {:?}", self.dimension_type);
34 return None;
35 };
36
37 Some((dimension_type, dimension_data))
38 }
39}