does not really fix the issue i guess, but at least you don't get the error anymore
This commit is contained in:
Alexander Medvedev 2026-04-25 18:59:32 +02:00
parent 95df70c448
commit 7a8f11b984
4 changed files with 55 additions and 26 deletions

View File

@ -33,9 +33,9 @@ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
[[package]]
name = "async-compression"
version = "0.4.41"
version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1"
checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac"
dependencies = [
"compression-codecs",
"compression-core",
@ -168,9 +168,9 @@ dependencies = [
[[package]]
name = "compression-codecs"
version = "0.4.37"
version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7"
checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
dependencies = [
"compression-core",
"flate2",
@ -178,9 +178,9 @@ dependencies = [
[[package]]
name = "compression-core"
version = "0.4.31"
version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d"
checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
[[package]]
name = "const-oid"
@ -665,12 +665,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
[[package]]
name = "hkdf"
version = "0.12.4"
@ -876,16 +870,6 @@ dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
name = "once_cell"
version = "1.21.4"
@ -1049,7 +1033,6 @@ dependencies = [
name = "pumpkin-codecs"
version = "0.1.0-dev+26.1"
dependencies = [
"dashmap",
"either",
"serde_json",
"tracing",
@ -1099,6 +1082,7 @@ dependencies = [
"serde",
"thiserror",
"tracing",
"uuid",
]
[[package]]
@ -1172,7 +1156,6 @@ dependencies = [
"futures",
"itertools",
"lz4-java-wrc",
"num_cpus",
"pumpkin-config",
"pumpkin-data",
"pumpkin-nbt",
@ -1189,6 +1172,7 @@ dependencies = [
"tokio-util",
"tracing",
"uuid",
"xxhash-rust",
]
[[package]]
@ -1909,6 +1893,12 @@ dependencies = [
"wasmparser",
]
[[package]]
name = "xxhash-rust"
version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3"
[[package]]
name = "zeroize"
version = "1.8.2"

View File

@ -0,0 +1,21 @@
use crate::{bedrock::RAKNET_MAGIC, serial::PacketWrite};
use pumpkin_macros::packet;
#[derive(PacketWrite)]
#[packet(0x19)]
pub struct CIncompatibleProtocolVersion {
protocol_version: u8,
magic: [u8; 16],
server_guid: u64,
}
impl CIncompatibleProtocolVersion {
#[must_use]
pub const fn new(protocol_version: u8, server_guid: u64) -> Self {
Self {
protocol_version,
magic: RAKNET_MAGIC,
server_guid,
}
}
}

View File

@ -1,3 +1,4 @@
pub mod connection;
pub mod incompatible_protocol;
pub mod open_connection;
pub mod unconnected_pong;

View File

@ -1,9 +1,13 @@
use std::net::SocketAddr;
use pumpkin_protocol::bedrock::{
client::raknet::open_connection::{COpenConnectionReply1, COpenConnectionReply2},
client::raknet::{
incompatible_protocol::CIncompatibleProtocolVersion,
open_connection::{COpenConnectionReply1, COpenConnectionReply2},
},
server::raknet::open_connection::{SOpenConnectionRequest1, SOpenConnectionRequest2},
};
use pumpkin_world::CURRENT_BEDROCK_MC_PROTOCOL;
use tokio::net::UdpSocket;
use crate::{net::bedrock::BedrockClient, server::Server};
@ -11,10 +15,23 @@ use crate::{net::bedrock::BedrockClient, server::Server};
impl BedrockClient {
pub async fn handle_open_connection_1(
server: &Server,
_packet: SOpenConnectionRequest1,
packet: SOpenConnectionRequest1,
addr: SocketAddr,
socket: &UdpSocket,
) {
if packet.protocol_version != CURRENT_BEDROCK_MC_PROTOCOL as u8 {
Self::send_offline_packet(
&CIncompatibleProtocolVersion::new(
CURRENT_BEDROCK_MC_PROTOCOL as u8,
server.server_guid,
),
addr,
socket,
)
.await;
return;
}
Self::send_offline_packet(
&COpenConnectionReply1::new(server.server_guid, false, 1400),
addr,