Pumpkin/pumpkin/src/net/java/handshake.rs
Alexander Medvedev e45ab613f4 chore: parse translations at compile time
not finished but its much safer and nicer now
2026-02-08 13:22:36 +01:00

35 lines
1.4 KiB
Rust

use pumpkin_data::{packet::CURRENT_MC_PROTOCOL, translation};
use pumpkin_protocol::{ConnectionState, java::server::handshake::SHandShake};
use pumpkin_util::{text::TextComponent, version::MinecraftVersion};
use pumpkin_world::{CURRENT_MC_VERSION, LOWEST_SUPPRORTED_PROTOCOL_VERSION};
use crate::net::java::JavaClient;
impl JavaClient {
pub async fn handle_handshake(&self, handshake: SHandShake) {
let version = handshake.protocol_version.0 as u32;
*self.server_address.lock().await = handshake.server_address;
self.version.store(MinecraftVersion::from_protocol(version));
log::debug!("Handshake: next state is {:?}", &handshake.next_state);
self.connection_state.store(handshake.next_state);
if self.connection_state.load() != ConnectionState::Status {
let protocol = version;
if protocol < LOWEST_SUPPRORTED_PROTOCOL_VERSION {
self.kick(TextComponent::translate(
translation::MULTIPLAYER_DISCONNECT_OUTDATED_CLIENT,
[TextComponent::text(CURRENT_MC_VERSION.to_string())],
))
.await;
} else if protocol > CURRENT_MC_PROTOCOL {
self.kick(TextComponent::translate(
translation::MULTIPLAYER_DISCONNECT_OUTDATED_SERVER,
[TextComponent::text(CURRENT_MC_VERSION.to_string())],
))
.await;
}
}
}
}