pub mod clientbound_change_difficulty_packet; pub mod clientbound_custom_payload_packet; pub mod clientbound_login_packet; pub mod clientbound_update_view_distance_packet; use super::ProtocolPacket; use crate::connect::PacketFlow; use async_trait::async_trait; use packet_macros::declare_state_packets; declare_state_packets!( GamePacket, // no serverbound packets implemented yet Serverbound => {}, Clientbound => { 0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket, 0x18: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket, 0x26: clientbound_login_packet::ClientboundLoginPacket, 0x4a: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket, } ); // #[derive(Clone, Debug)] // pub enum GamePacket // where // Self: Sized, // { // ClientboundLoginPacket(clientbound_login_packet::ClientboundLoginPacket), // ClientboundUpdateViewDistancePacket( // clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket, // ), // ClientboundCustomPayloadPacket( // clientbound_custom_payload_packet::ClientboundCustomPayloadPacket, // ), // ClientboundChangeDifficultyPacket( // clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket, // ), // } // #[async_trait] // impl ProtocolPacket for GamePacket { // fn id(&self) -> u32 { // match self { // GamePacket::ClientboundChangeDifficultyPacket(_packet) => 0x0e, // GamePacket::ClientboundCustomPayloadPacket(_packet) => 0x18, // GamePacket::ClientboundLoginPacket(_packet) => 0x26, // GamePacket::ClientboundUpdateViewDistancePacket(_packet) => 0x4a, // } // } // fn write(&self, buf: &mut Vec) -> Result<(), std::io::Error> { // match self { // GamePacket::ClientboundChangeDifficultyPacket(packet) => packet.write(buf), // GamePacket::ClientboundCustomPayloadPacket(packet) => packet.write(buf), // GamePacket::ClientboundLoginPacket(packet) => packet.write(buf), // GamePacket::ClientboundUpdateViewDistancePacket(packet) => packet.write(buf), // } // } // /// Read a packet by its id, ConnectionProtocol, and flow // async fn read( // id: u32, // flow: &PacketFlow, // buf: &mut T, // ) -> Result // where // Self: Sized, // { // Ok(match flow { // PacketFlow::ServerToClient => match id { // 0x0e => clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket // ::read(buf) // .await?, // 0x18 => clientbound_custom_payload_packet::ClientboundCustomPayloadPacket::read(buf).await?, // 0x26 => clientbound_login_packet::ClientboundLoginPacket::read(buf).await?, // 0x4a => clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket // ::read(buf) // .await?, // // _ => return Err(format!("Unknown ServerToClient game packet id: {}", id)), // _ => panic!("Unknown ServerToClient game packet id: {}", id), // }, // PacketFlow::ClientToServer => match id { // // 0x00 => serverbound_hello_packet::ServerboundHelloPacket::read(buf).await?, // _ => return Err(format!("Unknown ClientToServer game packet id: {}", id)), // }, // }) // } // }