From d6ee4b6e1e51a31a780c04e7a7b2cb4cd33fe126 Mon Sep 17 00:00:00 2001 From: ice_iix Date: Sat, 27 Jun 2020 16:59:50 -0700 Subject: [PATCH] Handle LoginSuccess_UUID, split LoginSuccess_String --- protocol/src/protocol/packet.rs | 2 +- protocol/src/protocol/versions/v15w39c.rs | 2 +- protocol/src/protocol/versions/v18w50a.rs | 2 +- protocol/src/protocol/versions/v19w02a.rs | 2 +- protocol/src/protocol/versions/v1_10_2.rs | 2 +- protocol/src/protocol/versions/v1_11_2.rs | 2 +- protocol/src/protocol/versions/v1_12_2.rs | 2 +- protocol/src/protocol/versions/v1_13_2.rs | 2 +- protocol/src/protocol/versions/v1_14.rs | 2 +- protocol/src/protocol/versions/v1_14_1.rs | 2 +- protocol/src/protocol/versions/v1_14_2.rs | 2 +- protocol/src/protocol/versions/v1_14_3.rs | 2 +- protocol/src/protocol/versions/v1_14_4.rs | 2 +- protocol/src/protocol/versions/v1_15.rs | 2 +- protocol/src/protocol/versions/v1_7_10.rs | 2 +- protocol/src/protocol/versions/v1_8_9.rs | 2 +- protocol/src/protocol/versions/v1_9.rs | 2 +- protocol/src/protocol/versions/v1_9_2.rs | 2 +- src/server/mod.rs | 31 ++++++++++++++++++++--- 19 files changed, 46 insertions(+), 21 deletions(-) diff --git a/protocol/src/protocol/packet.rs b/protocol/src/protocol/packet.rs index 3e0a5da..f870e71 100644 --- a/protocol/src/protocol/packet.rs +++ b/protocol/src/protocol/packet.rs @@ -1984,7 +1984,7 @@ state_packets!( /// LoginSuccess is sent by the server if the player successfully /// authenicates with the session servers (online mode) or straight /// after LoginStart (offline mode). - packet LoginSuccess { + packet LoginSuccess_String { /// String encoding of a uuid (with hyphens) field uuid: String =, field username: String =, diff --git a/protocol/src/protocol/versions/v15w39c.rs b/protocol/src/protocol/versions/v15w39c.rs index fc293cf..dd4e34b 100644 --- a/protocol/src/protocol/versions/v15w39c.rs +++ b/protocol/src/protocol/versions/v15w39c.rs @@ -122,7 +122,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v18w50a.rs b/protocol/src/protocol/versions/v18w50a.rs index 1855f59..e597cd9 100644 --- a/protocol/src/protocol/versions/v18w50a.rs +++ b/protocol/src/protocol/versions/v18w50a.rs @@ -152,7 +152,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v19w02a.rs b/protocol/src/protocol/versions/v19w02a.rs index f1e8498..0b2f614 100644 --- a/protocol/src/protocol/versions/v19w02a.rs +++ b/protocol/src/protocol/versions/v19w02a.rs @@ -154,7 +154,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_10_2.rs b/protocol/src/protocol/versions/v1_10_2.rs index 4e93e7d..e049b8c 100644 --- a/protocol/src/protocol/versions/v1_10_2.rs +++ b/protocol/src/protocol/versions/v1_10_2.rs @@ -126,7 +126,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v1_11_2.rs b/protocol/src/protocol/versions/v1_11_2.rs index 88e9e26..e3c46cb 100644 --- a/protocol/src/protocol/versions/v1_11_2.rs +++ b/protocol/src/protocol/versions/v1_11_2.rs @@ -126,7 +126,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v1_12_2.rs b/protocol/src/protocol/versions/v1_12_2.rs index e0e248d..9fcd6f4 100644 --- a/protocol/src/protocol/versions/v1_12_2.rs +++ b/protocol/src/protocol/versions/v1_12_2.rs @@ -133,7 +133,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v1_13_2.rs b/protocol/src/protocol/versions/v1_13_2.rs index 739a8fc..ff71cbc 100644 --- a/protocol/src/protocol/versions/v1_13_2.rs +++ b/protocol/src/protocol/versions/v1_13_2.rs @@ -149,7 +149,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_14.rs b/protocol/src/protocol/versions/v1_14.rs index 9641abf..d7732c6 100644 --- a/protocol/src/protocol/versions/v1_14.rs +++ b/protocol/src/protocol/versions/v1_14.rs @@ -159,7 +159,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_14_1.rs b/protocol/src/protocol/versions/v1_14_1.rs index 9641abf..d7732c6 100644 --- a/protocol/src/protocol/versions/v1_14_1.rs +++ b/protocol/src/protocol/versions/v1_14_1.rs @@ -159,7 +159,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_14_2.rs b/protocol/src/protocol/versions/v1_14_2.rs index 9641abf..d7732c6 100644 --- a/protocol/src/protocol/versions/v1_14_2.rs +++ b/protocol/src/protocol/versions/v1_14_2.rs @@ -159,7 +159,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_14_3.rs b/protocol/src/protocol/versions/v1_14_3.rs index 1acf40d..d30ac34 100644 --- a/protocol/src/protocol/versions/v1_14_3.rs +++ b/protocol/src/protocol/versions/v1_14_3.rs @@ -159,7 +159,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_14_4.rs b/protocol/src/protocol/versions/v1_14_4.rs index b191d0f..2a89ed7 100644 --- a/protocol/src/protocol/versions/v1_14_4.rs +++ b/protocol/src/protocol/versions/v1_14_4.rs @@ -160,7 +160,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_15.rs b/protocol/src/protocol/versions/v1_15.rs index 226c91c..357d047 100644 --- a/protocol/src/protocol/versions/v1_15.rs +++ b/protocol/src/protocol/versions/v1_15.rs @@ -160,7 +160,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression 0x04 => LoginPluginRequest } diff --git a/protocol/src/protocol/versions/v1_7_10.rs b/protocol/src/protocol/versions/v1_7_10.rs index 10c31a9..d637f27 100644 --- a/protocol/src/protocol/versions/v1_7_10.rs +++ b/protocol/src/protocol/versions/v1_7_10.rs @@ -110,7 +110,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest_i16 - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String } } status Status { diff --git a/protocol/src/protocol/versions/v1_8_9.rs b/protocol/src/protocol/versions/v1_8_9.rs index dbf0911..8b116c5 100644 --- a/protocol/src/protocol/versions/v1_8_9.rs +++ b/protocol/src/protocol/versions/v1_8_9.rs @@ -120,7 +120,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v1_9.rs b/protocol/src/protocol/versions/v1_9.rs index 3b7f247..fbfda80 100644 --- a/protocol/src/protocol/versions/v1_9.rs +++ b/protocol/src/protocol/versions/v1_9.rs @@ -127,7 +127,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/protocol/src/protocol/versions/v1_9_2.rs b/protocol/src/protocol/versions/v1_9_2.rs index fae28bc..4a10424 100644 --- a/protocol/src/protocol/versions/v1_9_2.rs +++ b/protocol/src/protocol/versions/v1_9_2.rs @@ -127,7 +127,7 @@ protocol_packet_ids!( clientbound Clientbound { 0x00 => LoginDisconnect 0x01 => EncryptionRequest - 0x02 => LoginSuccess + 0x02 => LoginSuccess_String 0x03 => SetInitialCompression } } diff --git a/src/server/mod.rs b/src/server/mod.rs index a15d0cb..8619af2 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -147,7 +147,7 @@ impl Server { verify_token = Rc::new(val.verify_token.data); break; } - protocol::packet::Packet::LoginSuccess(val) => { + protocol::packet::Packet::LoginSuccess_String(val) => { warn!("Server is running in offline mode"); debug!("Login: {} {}", val.username, val.uuid); let mut read = conn.clone(); @@ -164,6 +164,24 @@ impl Server { Some(rx), )); } + // TODO: avoid duplication + protocol::packet::Packet::LoginSuccess_UUID(val) => { + warn!("Server is running in offline mode"); + debug!("Login: {} {:?}", val.username, val.uuid); + let mut read = conn.clone(); + let mut write = conn.clone(); + read.state = protocol::State::Play; + write.state = protocol::State::Play; + let rx = Self::spawn_reader(read); + return Ok(Server::new( + protocol_version, + forge_mods, + val.uuid, + resources, + Some(write), + Some(rx), + )); + } protocol::packet::Packet::LoginDisconnect(val) => { return Err(protocol::Error::Disconnect(val.reason)) } @@ -210,8 +228,15 @@ impl Server { read.set_compresssion(val.threshold.0); write.set_compresssion(val.threshold.0); } - protocol::packet::Packet::LoginSuccess(val) => { + protocol::packet::Packet::LoginSuccess_String(val) => { debug!("Login: {} {}", val.username, val.uuid); + uuid = protocol::UUID::from_str(&val.uuid); + read.state = protocol::State::Play; + write.state = protocol::State::Play; + break; + } + protocol::packet::Packet::LoginSuccess_UUID(val) => { + debug!("Login: {} {:?}", val.username, val.uuid); uuid = val.uuid; read.state = protocol::State::Play; write.state = protocol::State::Play; @@ -229,7 +254,7 @@ impl Server { Ok(Server::new( protocol_version, forge_mods, - protocol::UUID::from_str(&uuid), + uuid, resources, Some(write), Some(rx),