Fix protocol versions being handled incorrectly

This commit is contained in:
timvisee 2021-11-23 16:12:33 +01:00
parent 51d3ecf148
commit b8744aaf57
No known key found for this signature in database
GPG Key ID: B8DB720BC383E172
9 changed files with 14 additions and 14 deletions

View File

@ -335,7 +335,7 @@ async fn wait_for_server_join_game_no_timeout(
Ok(Some(packet)) => packet,
Ok(None) => break,
Err(_) => {
error!(target: "lazymc::lobby", "Closing connection, error occurred");
error!(target: "lazymc::probe", "Closing connection, error occurred");
break;
}
};
@ -344,15 +344,15 @@ async fn wait_for_server_join_game_no_timeout(
if packets::play::join_game::is_packet(client_info, packet.id) {
// Parse join game data
let join_game_data = JoinGameData::from_packet(client_info, packet).map_err(|err| {
warn!(target: "lazymc::lobby", "Failed to parse join game packet: {:?}", err);
warn!(target: "lazymc::probe", "Failed to parse join game packet: {:?}", err);
})?;
return Ok(join_game_data);
}
// Show unhandled packet warning
debug!(target: "lazymc::lobby", "Got unhandled packet from server in wait_for_server_join_game:");
debug!(target: "lazymc::lobby", "- Packet ID: 0x{:02X} ({})", packet.id, packet.id);
debug!(target: "lazymc::probe", "Got unhandled packet from server in wait_for_server_join_game:");
debug!(target: "lazymc::probe", "- Packet ID: 0x{:02X} ({})", packet.id, packet.id);
}
// Gracefully close connection

View File

@ -33,7 +33,7 @@ impl JoinGameData {
/// Extract join game data from given packet.
pub fn from_packet(client_info: &ClientInfo, packet: RawPacket) -> Result<Self, DecodeError> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
Ok(v1_16_3::game::JoinGame::decode(&mut packet.data.as_slice())?.into())
}
_ => Ok(v1_17::game::JoinGame::decode(&mut packet.data.as_slice())?.into()),
@ -74,7 +74,7 @@ impl From<v1_17::game::JoinGame> for JoinGameData {
/// Check whether the packet ID matches.
pub fn is_packet(client_info: &ClientInfo, packet_id: u8) -> bool {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => packet_id == v1_16_3::game::JoinGame::PACKET_ID,
Some(p) if p < v1_17::PROTOCOL => packet_id == v1_16_3::game::JoinGame::PACKET_ID,
_ => packet_id == v1_17::game::JoinGame::PACKET_ID,
}
}
@ -102,7 +102,7 @@ pub async fn lobby_send(
let status = server.status().await;
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::JoinGame {
// Player ID must be unique, if it collides with another server entity ID the player gets

View File

@ -21,7 +21,7 @@ pub async fn send(
let id = KEEP_ALIVE_ID.fetch_add(1, Ordering::Relaxed);
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(v1_16_3::game::ClientBoundKeepAlive { id }, client, writer).await
}
_ => packet::write_packet(v1_17::game::ClientBoundKeepAlive { id }, client, writer).await,

View File

@ -11,7 +11,7 @@ pub async fn send(
writer: &mut WriteHalf<'_>,
) -> Result<(), ()> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::PlayerPositionAndLook {
x: 0.0,

View File

@ -16,7 +16,7 @@ pub async fn lobby_send(
data: JoinGameData,
) -> Result<(), ()> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::Respawn {
dimension: data.dimension.unwrap_or_else(|| {

View File

@ -19,7 +19,7 @@ pub async fn send(
writer: &mut WriteHalf<'_>,
) -> Result<(), ()> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::ClientBoundPluginMessage {
channel: CHANNEL.into(),

View File

@ -12,7 +12,7 @@ pub async fn send(
sound_name: &str,
) -> Result<(), ()> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::NamedSoundEffect {
sound_name: sound_name.into(),

View File

@ -15,7 +15,7 @@ pub async fn send(
writer: &mut WriteHalf<'_>,
) -> Result<(), ()> {
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => {
Some(p) if p < v1_17::PROTOCOL => {
packet::write_packet(
v1_16_3::game::TimeUpdate {
world_age: 0,

View File

@ -29,7 +29,7 @@ pub async fn send(
let subtitle = text.lines().skip(1).collect::<Vec<_>>().join("\n");
match client_info.protocol() {
Some(p) if p <= v1_16_3::PROTOCOL => send_v1_16_3(client, writer, title, &subtitle).await,
Some(p) if p < v1_17::PROTOCOL => send_v1_16_3(client, writer, title, &subtitle).await,
_ => send_v1_17(client, writer, title, &subtitle).await,
}
}