// use std::hash::Hash; // use crate::mc_buf::Readable; // use super::LoginPacket; // #[derive(Hash, Clone, Debug)] // pub struct ClientboundDeclareCommandsPacket { // pub root: RootCommandNode, // pub public_key: Vec, // pub nonce: Vec, // } // impl ClientboundHelloPacket { // pub fn get(self) -> LoginPacket { // LoginPacket::ClientboundHelloPacket(self) // } // pub fn write(&self, _buf: &mut Vec) -> Result<(), std::io::Error> { // panic!("ClientboundHelloPacket::write not implemented") // } // pub async fn read( // buf: &mut T, // ) -> Result { // let server_id = buf.read_utf_with_len(20).await?; // let public_key = buf.read_byte_array().await?; // let nonce = buf.read_byte_array().await?; // Ok(ClientboundHelloPacket { // server_id, // public_key, // nonce, // } // .get()) // } // }