diff --git a/crates/server/src/lib.rs b/crates/server/src/lib.rs index 6e591d59..2646c136 100644 --- a/crates/server/src/lib.rs +++ b/crates/server/src/lib.rs @@ -1,6 +1,4 @@ pub mod server; pub mod login; pub mod error; -pub mod entity; -mod components; -mod ecs; +pub mod ecs; diff --git a/crates/server/src/login/login/add_actor.rs b/crates/server/src/login/login/add_actor.rs deleted file mode 100644 index da805907..00000000 --- a/crates/server/src/login/login/add_actor.rs +++ /dev/null @@ -1,55 +0,0 @@ -use bedrockrs_core::{Vec2, Vec3}; -use bedrockrs_shared::{actor_runtime_id::ActorRuntimeID, actor_unique_id::ActorUniqueID}; - -use crate::{ - connection::ConnectionShard, - error::LoginError, - gamepackets::GamePackets, - packets::add_actor::AddActorPacket, - types::{ - actor_type::ActorType, - property_sync_data::{FloatEntriesList, IntEntriesList, PropertySyncData}, - }, -}; - -use super::provider::LoginProvider; - -pub async fn add_actor( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> Result<(), LoginError> { - ////////////////////////////////////// - // todo: AddActorPacket - ////////////////////////////////////// - - let add_actor = AddActorPacket { - target_actor_id: ActorUniqueID(610), - target_runtime_id: ActorRuntimeID(403), - actor_type: ActorType::Pig.to_string(), - position: Vec3 { - x: 4.0, - y: 8.0, - z: 7.0, - }, - velocity: Vec3 { - x: 4.0, - y: 8.0, - z: 7.0, - }, - rotation: Vec2 { x: 270.0, y: 90.0 }, - y_head_rotation: 45.0, - y_body_rotation: 90.0, - attributes: vec![], - actor_data: vec![], - synced_properties: PropertySyncData { - int: IntEntriesList { entries: vec![] }, - float: FloatEntriesList { entries: vec![] }, - }, - actor_links: vec![], - }; - - conn.send(GamePackets::AddEntity(add_actor)).await?; - conn.flush().await?; - - Ok(()) -} diff --git a/crates/server/src/login/login/handshake.rs b/crates/server/src/login/login/handshake.rs deleted file mode 100644 index 227385df..00000000 --- a/crates/server/src/login/login/handshake.rs +++ /dev/null @@ -1,15 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; - -pub async fn handshake( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> LoginProviderStatus { - - if !provider.encryption_enabled() { - return Ok(()); - }; - - todo!("impl the handshake") -} diff --git a/crates/server/src/login/login/login.rs b/crates/server/src/login/login/login.rs deleted file mode 100644 index 146200f0..00000000 --- a/crates/server/src/login/login/login.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; - -pub async fn login( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> LoginProviderStatus { - ////////////////////////////////////// - // Login Packet - ////////////////////////////////////// - - let mut login = match conn.recv().await? { - GamePackets::Login(pk) => pk, - other => { - return Err(LoginError::FormatError(format!( - "Expected Login packet, got: {other:?}" - ))) - } - }; - - match provider.on_login_pk(&mut login) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - if provider.auth_enabled() { - todo!("impl xbox auth with data from login pk") - }; - - Ok(()) -} diff --git a/crates/server/src/login/login/mod.rs b/crates/server/src/login/login/mod.rs deleted file mode 100644 index bacc86a8..00000000 --- a/crates/server/src/login/login/mod.rs +++ /dev/null @@ -1,50 +0,0 @@ -use bedrockrs_proto::connection::Connection; -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::login::handshake::handshake; -use crate::login::login::login; -use crate::login::login::provider::LoginProvider; -use crate::login::network_settings::network_settings; -use crate::login::packs::packs; -use crate::login::play_status::play_status_login; -use crate::login::provider::LoginProvider; -use crate::login::start_game::start_game; - -mod add_actor; -mod handshake; -mod login; -mod network_settings; -mod packs; -mod play_status; -pub mod provider; -mod set_title; -mod start_game; - -macro_rules! handle_login_status { - ($provider:ident, $handler:ident, $packet:ident) => { - match $provider.$handler(&mut $packet) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason, disconnect_reason } => { - return Err(LoginError::Abort { reason }); - } - }; - }; -} - -pub async fn login_sequence( - conn: &mut Connection, - mut provider: impl LoginProvider, -) -> Result<(), LoginError> { - network_settings(conn, &mut provider).await?; - - login(conn, &mut provider).await?; - play_status_login(conn, &mut provider).await?; - - handshake(conn, &mut provider).await?; - - packs(conn, &mut provider).await?; - - start_game(conn, &mut provider).await?; - - Ok(()) -} diff --git a/crates/server/src/login/login/network_settings.rs b/crates/server/src/login/login/network_settings.rs deleted file mode 100644 index 5a70ce92..00000000 --- a/crates/server/src/login/login/network_settings.rs +++ /dev/null @@ -1,60 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; -use crate::packets::network_settings::NetworkSettingsPacket; - -pub async fn network_settings( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> LoginProviderStatus { - ////////////////////////////////////// - // Network Settings Request Packet - ////////////////////////////////////// - - let mut network_settings_request = match conn.recv().await? { - GamePackets::NetworkSettingsRequest(pk) => pk, - other => { - return Err(LoginError::FormatError(format!( - "Expected RequestNetworkSettings packet, got: {other:?}" - ))) - } - }; - - match provider.on_network_settings_request_pk(&mut network_settings_request) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - ////////////////////////////////////// - // Network Settings Packet - ////////////////////////////////////// - - let compression = provider.compression(); - - let mut network_settings = NetworkSettingsPacket { - compression_threshold: compression.threshold(), - compression_algorithm: compression.id_u16(), - // TODO What do these 3 fields do? - client_throttle_enabled: false, - client_throttle_threshold: 0, - client_throttle_scalar: 0.0, - }; - - match provider.on_network_settings_pk(&mut network_settings) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - conn.send(GamePackets::NetworkSettings(network_settings)) - .await?; - conn.flush().await?; - - conn.set_compression(Some(compression)).await?; - - Ok(()) -} diff --git a/crates/server/src/login/login/packs.rs b/crates/server/src/login/login/packs.rs deleted file mode 100644 index f88fafe8..00000000 --- a/crates/server/src/login/login/packs.rs +++ /dev/null @@ -1,149 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::packs::LoginProviderPacks; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; -use crate::packets::resource_packs_info::ResourcePacksInfoPacket; -use crate::packets::resource_packs_stack::ResourcePacksStackPacket; -use crate::types::base_game_version::BaseGameVersion; -use crate::types::experiments::Experiments; - -pub async fn packs( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> LoginProviderStatus { - match provider.packs() { - LoginProviderPacks::CDN { - behavior_packs, - resource_packs, - cdn_urls, - } => { - ////////////////////////////////////// - // Resource Packs Info Packet - ////////////////////////////////////// - - // TODO impl this - let mut resource_packs_info = ResourcePacksInfoPacket { - resource_pack_required: false, - has_addon_packs: false, - has_scripts: false, - force_server_packs_enabled: false, - behavior_packs: vec![], - resource_packs: vec![], - cdn_urls: cdn_urls.clone(), - }; - - match provider.on_resource_packs_info_pk(&mut resource_packs_info) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - conn.send(GamePackets::ResourcePacksInfo(resource_packs_info)) - .await?; - conn.flush().await?; - - ////////////////////////////////////// - // Resource Pack Client Response - // (/Client Cache Status Packet) - ////////////////////////////////////// - - match conn.recv().await? { - GamePackets::ClientCacheStatus(mut client_cache_status) => { - match provider.on_client_cache_status_pk(&mut client_cache_status) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - conn.set_cache_supported(client_cache_status.cache_supported).await?; - - match conn.recv().await? { - GamePackets::ResourcePackClientResponse(mut resource_pack_client_response) => { - match provider.on_resource_packs_response_pk(&mut resource_pack_client_response) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - } - other => { - return Err(LoginError::FormatError(format!( - "Expected ClientCacheStatus or ResourcePackClientResponse packet, got: {other:?}" - ))) - } - } - } - GamePackets::ResourcePackClientResponse(mut resource_pack_client_response) => { - match provider.on_resource_packs_response_pk(&mut resource_pack_client_response) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - } - other => { - return Err(LoginError::FormatError(format!( - "Expected ClientCacheStatus or ResourcePackClientResponse packet, got: {other:?}" - ))) - } - } - - ////////////////////////////////////// - // Resource Packs Stack Packet - ////////////////////////////////////// - - // TODO impl this - let mut resource_packs_stack = ResourcePacksStackPacket { - texture_pack_required: false, - addons: vec![], - texture_packs: vec![], - base_game_version: BaseGameVersion(String::from("1.0")), - experiments: Experiments { - experiments: vec![], - ever_toggled: false, - }, - include_editor_packs: false, - }; - - match provider.on_resource_packs_stack_pk(&mut resource_packs_stack) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - conn.send(GamePackets::ResourcePackStack(resource_packs_stack)) - .await?; - conn.flush().await?; - - ////////////////////////////////////// - // Resource Pack Client Response - ////////////////////////////////////// - - match conn.recv().await? { - GamePackets::ResourcePackClientResponse(mut resource_pack_client_response) => { - match provider.on_resource_packs_response_pk(&mut resource_pack_client_response) - { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason } => { - return Err(LoginError::Abort { reason }); - } - }; - } - other => { - return Err(LoginError::FormatError(format!( - "Expected ResourcePackClientResponse packet, got: {other:?}" - ))) - } - } - } - LoginProviderPacks::DirectNetworkTransfer { .. } => { - todo!("impl LoginProvider bedrockrs::DirectNetworkTransfer in login process") - } - }; - - Ok(()) -} diff --git a/crates/server/src/login/login/play_status.rs b/crates/server/src/login/login/play_status.rs deleted file mode 100644 index 923d5959..00000000 --- a/crates/server/src/login/login/play_status.rs +++ /dev/null @@ -1,31 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; -use crate::packets::play_status::PlayStatusPacket; -use crate::types::play_status::PlayStatusType; - -pub async fn play_status_login( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> LoginProviderStatus { - ////////////////////////////////////// - // Play Status Packet (Login) - ////////////////////////////////////// - - let mut play_status = PlayStatusPacket { - status: PlayStatusType::LoginSuccess, - }; - - match provider.on_play_status_pk(&mut play_status) { - LoginProviderStatus::ContinueLogin => {} - LoginProviderStatus::AbortLogin { reason, disconnect_reason } => { - return Err(LoginError::Abort { reason }); - } - }; - - conn.send(GamePackets::PlayStatus(play_status)).await?; - conn.flush().await?; - - Ok(()) -} diff --git a/crates/server/src/login/login/provider/default.rs b/crates/server/src/login/login/provider/default.rs deleted file mode 100644 index fbfcf802..00000000 --- a/crates/server/src/login/login/provider/default.rs +++ /dev/null @@ -1,42 +0,0 @@ -use crate::compression::Compression; -use crate::login::provider::packs::LoginProviderPacks; -use crate::login::provider::LoginProvider; - -pub struct DefaultLoginProvider { - packs: LoginProviderPacks, -} - -impl DefaultLoginProvider { - pub fn new() -> Self { - Self { - packs: LoginProviderPacks::CDN { - behavior_packs: vec![], - resource_packs: vec![], - cdn_urls: vec![], - }, - } - } -} - -impl Default for DefaultLoginProvider { - fn default() -> Self { - Self::new() - } -} - -impl LoginProvider for DefaultLoginProvider { - fn compression(&self) -> Compression { - Compression::None - } - fn encryption_enabled(&self) -> bool { - false - } - - fn auth_enabled(&self) -> bool { - false - } - - fn packs(&self) -> &LoginProviderPacks { - &self.packs - } -} diff --git a/crates/server/src/login/login/provider/mod.rs b/crates/server/src/login/login/provider/mod.rs deleted file mode 100644 index f32e8e9e..00000000 --- a/crates/server/src/login/login/provider/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub use default::*; -pub use provider::*; -pub use status::*; - -pub mod default; -pub mod packs; -pub mod provider; -pub mod status; diff --git a/crates/server/src/login/login/provider/packs.rs b/crates/server/src/login/login/provider/packs.rs deleted file mode 100644 index 081f7c2c..00000000 --- a/crates/server/src/login/login/provider/packs.rs +++ /dev/null @@ -1,16 +0,0 @@ -use bedrockrs_addon::behavior::BehaviorPack; -use bedrockrs_addon::resource::ResourcePack; - -use crate::types::pack_url::PackURL; - -pub enum LoginProviderPacks { - CDN { - behavior_packs: Vec, - resource_packs: Vec, - cdn_urls: Vec, - }, - DirectNetworkTransfer { - behavior_packs: Vec, - resource_packs: Vec, - }, -} diff --git a/crates/server/src/login/login/provider/provider.rs b/crates/server/src/login/login/provider/provider.rs deleted file mode 100644 index 77fbf1a2..00000000 --- a/crates/server/src/login/login/provider/provider.rs +++ /dev/null @@ -1,63 +0,0 @@ -use crate::compression::Compression; -use crate::login::provider::packs::LoginProviderPacks; -use crate::login::provider::status::LoginProviderStatus; -use crate::packets::client_cache_status::ClientCacheStatusPacket; -use crate::packets::login::LoginPacket; -use crate::packets::network_settings::NetworkSettingsPacket; -use crate::packets::network_settings_request::NetworkSettingsRequestPacket; -use crate::packets::play_status::PlayStatusPacket; -use crate::packets::resource_packs_info::ResourcePacksInfoPacket; -use crate::packets::resource_packs_response::ResourcePacksResponsePacket; -use crate::packets::resource_packs_stack::ResourcePacksStackPacket; - -pub trait LoginProvider { - fn compression(&self) -> Compression; - fn encryption_enabled(&self) -> bool; - fn auth_enabled(&self) -> bool; - - fn packs(&self) -> &LoginProviderPacks; - - fn on_network_settings_request_pk( - &mut self, - _pk: &mut NetworkSettingsRequestPacket, - ) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_network_settings_pk(&mut self, _pk: &mut NetworkSettingsPacket) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_login_pk(&mut self, _pk: &mut LoginPacket) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_play_status_pk(&mut self, _pk: &mut PlayStatusPacket) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_resource_packs_info_pk( - &mut self, - _pk: &mut ResourcePacksInfoPacket, - ) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_resource_packs_stack_pk( - &mut self, - _pk: &mut ResourcePacksStackPacket, - ) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_resource_packs_response_pk( - &mut self, - _pk: &mut ResourcePacksResponsePacket, - ) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } - - fn on_client_cache_status_pk(&self, _pk: &mut ClientCacheStatusPacket) -> LoginProviderStatus { - LoginProviderStatus::ContinueLogin - } -} diff --git a/crates/server/src/login/login/provider/status.rs b/crates/server/src/login/login/provider/status.rs deleted file mode 100644 index dd65514d..00000000 --- a/crates/server/src/login/login/provider/status.rs +++ /dev/null @@ -1,9 +0,0 @@ -use crate::types::disconnect_reason::DisconnectReason; - -pub enum LoginProviderStatus { - ContinueLogin, - AbortLogin { - reason: String, - disconnect_reason: Option, - }, -} diff --git a/crates/server/src/login/login/set_title.rs b/crates/server/src/login/login/set_title.rs deleted file mode 100644 index bb4e58b2..00000000 --- a/crates/server/src/login/login/set_title.rs +++ /dev/null @@ -1,31 +0,0 @@ -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::LoginProvider; -use crate::packets::set_title::SetTitlePacket; -use crate::types::title_type::TitleType; -use xuid::Xuid; - -pub async fn set_title( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> Result<(), LoginError> { - ////////////////////////////////////// - // Set Title - ////////////////////////////////////// - - let set_title = SetTitlePacket { - title_type: TitleType::Title, - title_text: String::from("hello_text"), - fade_in_time: 500, - stay_time: 500, - fade_out_time: 500, - xuid: Xuid::from(123456789), - platform_online_id: String::from("hello_platform_online_id"), - }; - - conn.send(GamePackets::SetTitle(set_title)).await?; - conn.flush().await?; - - Ok(()) -} diff --git a/crates/server/src/login/login/start_game.rs b/crates/server/src/login/login/start_game.rs deleted file mode 100644 index 149d6e2d..00000000 --- a/crates/server/src/login/login/start_game.rs +++ /dev/null @@ -1,152 +0,0 @@ -use bedrockrs_core::{Vec2, Vec3}; -use std::collections::HashMap; -use uuid::Uuid; - -use bedrockrs_shared::actor_runtime_id::ActorRuntimeID; -use bedrockrs_shared::actor_unique_id::ActorUniqueID; -use bedrockrs_shared::world::difficulty::Difficulty; -use bedrockrs_shared::world::dimension::Dimension; -use bedrockrs_shared::world::gamemode::Gamemode; -use bedrockrs_shared::world::generator_type::GeneratorType; - -use crate::connection::ConnectionShard; -use crate::error::LoginError; -use crate::gamepackets::GamePackets; -use crate::login::provider::{LoginProvider, LoginProviderStatus}; -use crate::packets::play_status::PlayStatusPacket; -use crate::packets::start_game::StartGamePacket; -use crate::types::base_game_version::BaseGameVersion; -use crate::types::block_pos::BlockPos; -use crate::types::chat_restriction_level::ChatRestrictionLevel; -use crate::types::edu_shared_uri_resource::EduSharedResourceUri; -use crate::types::experiments::Experiments; -use crate::types::level_settings::LevelSettings; -use crate::types::network_permissions::NetworkPermissions; -use crate::types::play_status::PlayStatusType; -use crate::types::player_movement_mode::PlayerMovementMode; -use crate::types::player_movement_settings::PlayerMovementSettings; -use crate::types::spawn_biome_type::SpawnBiomeType; -use crate::types::spawn_settings::SpawnSettings; -use bedrockrs_shared::world::editor_world_type::EditorWorldType; - -pub async fn start_game( - conn: &mut ConnectionShard, - provider: &mut impl LoginProvider, -) -> Result { - ////////////////////////////////////// - // Start Game Packet - ////////////////////////////////////// - - let start_game = StartGamePacket { - target_actor_id: ActorUniqueID(609), - target_runtime_id: ActorRuntimeID(402), - gamemode: Gamemode::Creative, - position: Vec3 { - x: 4.0, - y: 6.0, - z: 7.0, - }, - rotation: Vec2 { x: 270.0, y: 90.0 }, - settings: LevelSettings { - seed: 777777777777, - spawn_settings: SpawnSettings { - biome_type: SpawnBiomeType::Default, - user_defined_biome_name: String::from("RandomBiome"), - dimension: Dimension::Overworld, - }, - generator_type: GeneratorType::Overworld, - gamemode: Gamemode::Creative, - hardcore: false, - difficulty: Difficulty::Peaceful, - default_spawn_block: BlockPos { - x: 100, - y: 200, - z: 300, - }, - achievements_disabled: true, - editor_world_type: EditorWorldType::NotEditor, - created_in_editor: false, - exported_from_editor: false, - day_cycle_stop_time: 2000, - education_edition_offer: 0, - education_features: false, - education_product_id: String::from(""), - rain_level: 300.0, - lightning_level: 400.0, - platform_locked_content: false, - multiplayer_intended: true, - lan_broadcasting_intended: true, - broadcasting_settings_xbox_live: 2, - broadcasting_settings_platform: 2, - commands_enabled: true, - texture_pack_required: false, - gamerules: vec![], - experiments: Experiments { - experiments: vec![], - ever_toggled: false, - }, - bonus_chest: false, - start_with_map: false, - player_permission: 3, - server_chunk_tick_radius: 4, - locked_behavior_packs: false, - locked_resource_packs: false, - from_locked_template: false, - msa_gamertags_only: false, - from_template: false, - is_template_locked_settings: false, - only_spawn_v1_villagers: false, - persona_disabled: false, - custom_skins_disabled: false, - emote_chat_muted: false, - base_game_version: BaseGameVersion(String::from("1.21.0")), - limited_world_width: 0, - limited_world_depth: 0, - new_nether: true, - edu_shared_uri_resource: EduSharedResourceUri { - button_name: String::from(""), - link_uri: String::from(""), - }, - force_experimental_gameplay: true, - chat_restriction_level: ChatRestrictionLevel::None, - disable_player_interactions: false, - server_id: String::from(""), - world_id: String::from(""), - scenario_id: String::from(""), - }, - level_id: String::from("UmFuZG9tIFdvcmxk"), - level_name: String::from("Random World"), - template_content_identity: String::new(), - trial: false, - movement_settings: PlayerMovementSettings { - authority_mode: PlayerMovementMode::Client, - rewind_history_size: 3200, - server_authoritative_block_breaking: false, - }, - current_level_time: 9000, - enchantment_seed: 99000, - blocks: vec![], - items: vec![], - multiplayer_correlation_id: String::from("c5d3d2cc-27fd-4221-9de6-d22c4d423d53"), - enable_item_stack_net_manager: false, - server_version: String::from("1.19.2"), - player_property_data: nbtx::Value::Compound(HashMap::new()), - block_type_registry_checksum: 0, - world_template_id: Uuid::nil(), - enable_clientside_world_generation: false, - use_block_network_id_hashes: true, - network_permission: NetworkPermissions { - server_auth_sound_enabled: false, - }, - }; - - conn.send(GamePackets::StartGame(start_game)).await?; - conn.send(GamePackets::PlayStatus(PlayStatusPacket { - status: PlayStatusType::PlayerSpawn, - })) - .await?; - - conn.flush().await?; - - Ok(()) -} diff --git a/crates/server/src/login/mod.rs b/crates/server/src/login/mod.rs index 41ff81f1..a0a1cbbf 100644 --- a/crates/server/src/login/mod.rs +++ b/crates/server/src/login/mod.rs @@ -1,5 +1,4 @@ mod handler; -mod login; use bedrockrs_proto::connection::Connection; use shipyard::World; @@ -10,6 +9,6 @@ use crate::login::handler::LoginHandler; pub async fn login(connection: Connection, world: &mut World, login_handler: impl LoginHandler) -> Result<(), LoginError> { let mut shard = shard::(connection); - + todo!() } \ No newline at end of file diff --git a/crates/server/src/server/mod.rs b/crates/server/src/server/mod.rs index 5c612ed4..dae271e7 100644 --- a/crates/server/src/server/mod.rs +++ b/crates/server/src/server/mod.rs @@ -1,10 +1,6 @@ use std::error::Error; use bedrockrs_proto::listener::Listener; use shipyard::World; -use crate::entity::Entity; -use crate::entity::player::Player; -use crate::entity::position::Pos; -use crate::entity::velocity::Vel; use crate::error::LoginError; use crate::login::login;