From f6a3f088ac1cd9526e6b93e03ea9929658478565 Mon Sep 17 00:00:00 2001 From: mat Date: Fri, 10 Dec 2021 16:16:59 +0000 Subject: it compiles --- .../src/packets/handshake/client_intention_packet.rs | 14 +++++++------- minecraft-protocol/src/packets/mod.rs | 13 +++++++------ .../packets/status/clientbound_status_response_packet.rs | 9 ++++----- .../packets/status/serverbound_status_request_packet.rs | 8 ++++---- 4 files changed, 22 insertions(+), 22 deletions(-) (limited to 'minecraft-protocol/src/packets') diff --git a/minecraft-protocol/src/packets/handshake/client_intention_packet.rs b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs index 401dbbac..0f14ed48 100644 --- a/minecraft-protocol/src/packets/handshake/client_intention_packet.rs +++ b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs @@ -8,19 +8,19 @@ use crate::{ packets::{ConnectionProtocol, Packet, PacketTrait}, }; -#[derive(Hash)] -pub struct ClientIntentionPacket<'a> { +#[derive(Hash, Clone)] +pub struct ClientIntentionPacket { pub protocol_version: u32, - pub hostname: &'a String, + pub hostname: String, pub port: u16, /// 1 for status, 2 for login pub intention: ConnectionProtocol, } #[async_trait] -impl<'a> PacketTrait for ClientIntentionPacket<'a> { - fn get(&self) -> Packet { - Packet::ClientIntentionPacket(*self) +impl PacketTrait for ClientIntentionPacket { + fn get(self) -> Packet { + Packet::ClientIntentionPacket(self) } fn write(&self, buf: &mut Vec) { @@ -32,7 +32,7 @@ impl<'a> PacketTrait for ClientIntentionPacket<'a> { async fn read( buf: &mut BufReader, - ) -> Result, String> { + ) -> Result { Err("ClientIntentionPacket::parse not implemented".to_string()) // Ok(ClientIntentionPacket {}.get()) } diff --git a/minecraft-protocol/src/packets/mod.rs b/minecraft-protocol/src/packets/mod.rs index 76f9128e..0d8b6883 100644 --- a/minecraft-protocol/src/packets/mod.rs +++ b/minecraft-protocol/src/packets/mod.rs @@ -16,11 +16,12 @@ pub enum ConnectionProtocol { Login = 2, } -pub enum Packet<'a> { +#[derive(Clone)] +pub enum Packet { // game // handshake - ClientIntentionPacket(handshake::client_intention_packet::ClientIntentionPacket<'a>), + ClientIntentionPacket(handshake::client_intention_packet::ClientIntentionPacket), // login @@ -34,7 +35,7 @@ pub enum Packet<'a> { } // TODO: do all this with macros so it's less repetitive -impl Packet<'_> { +impl Packet { fn get_inner_packet(&self) -> &dyn PacketTrait { match self { Packet::ClientIntentionPacket(packet) => packet, @@ -57,7 +58,7 @@ impl Packet<'_> { protocol: ConnectionProtocol, flow: PacketFlow, buf: &mut BufReader, - ) -> Result, String> { + ) -> Result { match protocol { ConnectionProtocol::Handshake => match id { 0x00 => Ok( @@ -96,11 +97,11 @@ impl Packet<'_> { #[async_trait] pub trait PacketTrait { /// Return a version of the packet that you can actually use for stuff - fn get(&self) -> Packet; + fn get(self) -> Packet; fn write(&self, buf: &mut Vec) -> (); async fn read( buf: &mut BufReader, - ) -> Result, String> + ) -> Result where Self: Sized; } diff --git a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs index 38747cc8..28ac9b16 100644 --- a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs +++ b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs @@ -14,18 +14,17 @@ pub struct ClientboundStatusResponsePacket { #[async_trait] impl PacketTrait for ClientboundStatusResponsePacket { - fn get(&self) -> Packet { - Packet::ClientboundStatusResponsePacket(self.clone()) + fn get(self) -> Packet { + Packet::ClientboundStatusResponsePacket(self) } fn write(&self, _buf: &mut Vec) {} async fn read( buf: &mut BufReader, - ) -> Result, String> { + ) -> Result { let status = mc_buf::read_utf(buf).await?; // this.status = GsonHelper.fromJson(GSON, friendlyByteBuf.readUtf(32767), ServerStatus.class); - let packet = ClientboundStatusResponsePacket { status }.get(); - Ok(packet) + Ok(ClientboundStatusResponsePacket { status }.get()) } } diff --git a/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs index b3c87968..1a301a4d 100644 --- a/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs +++ b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs @@ -7,19 +7,19 @@ use crate::{ packets::{Packet, PacketTrait}, }; -#[derive(Hash)] +#[derive(Hash, Clone)] pub struct ServerboundStatusRequestPacket {} #[async_trait] impl PacketTrait for ServerboundStatusRequestPacket { - fn get(&self) -> Packet { - Packet::ServerboundStatusRequestPacket(*self) + fn get(self) -> Packet { + Packet::ServerboundStatusRequestPacket(self) } fn write(&self, _buf: &mut Vec) {} async fn read( buf: &mut BufReader, - ) -> Result, String> { + ) -> Result { Err("ServerboundStatusRequestPacket::read not implemented".to_string()) } } -- cgit v1.2.3