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

View File

@ -1,9 +1,13 @@
use std::net::SocketAddr; use std::net::SocketAddr;
use pumpkin_protocol::bedrock::{ 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}, server::raknet::open_connection::{SOpenConnectionRequest1, SOpenConnectionRequest2},
}; };
use pumpkin_world::CURRENT_BEDROCK_MC_PROTOCOL;
use tokio::net::UdpSocket; use tokio::net::UdpSocket;
use crate::{net::bedrock::BedrockClient, server::Server}; use crate::{net::bedrock::BedrockClient, server::Server};
@ -11,10 +15,23 @@ use crate::{net::bedrock::BedrockClient, server::Server};
impl BedrockClient { impl BedrockClient {
pub async fn handle_open_connection_1( pub async fn handle_open_connection_1(
server: &Server, server: &Server,
_packet: SOpenConnectionRequest1, packet: SOpenConnectionRequest1,
addr: SocketAddr, addr: SocketAddr,
socket: &UdpSocket, 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( Self::send_offline_packet(
&COpenConnectionReply1::new(server.server_guid, false, 1400), &COpenConnectionReply1::new(server.server_guid, false, 1400),
addr, addr,