From 5616f02751bf13456f196130e692b5bc02a8a997 Mon Sep 17 00:00:00 2001 From: Alexander Medvedev Date: Mon, 4 May 2026 18:54:58 +0200 Subject: [PATCH] chore(bedrock): send Gamemode packet on gamemode switch --- .../src/bedrock/client/set_player_gamemode.rs | 6 ++--- pumpkin/src/entity/player.rs | 24 +++++++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/pumpkin-protocol/src/bedrock/client/set_player_gamemode.rs b/pumpkin-protocol/src/bedrock/client/set_player_gamemode.rs index c754101fb..cfcf3b584 100644 --- a/pumpkin-protocol/src/bedrock/client/set_player_gamemode.rs +++ b/pumpkin-protocol/src/bedrock/client/set_player_gamemode.rs @@ -1,9 +1,9 @@ -use crate::{codec::var_int::VarInt, serial::PacketWrite}; +use crate::serial::PacketWrite; use pumpkin_macros::packet; +use pumpkin_util::GameMode; #[derive(PacketWrite)] #[packet(62)] pub struct CSetPlayerGamemode { - // https://mojang.github.io/bedrock-protocol-docs/html/SetPlayerGameTypePacket.html - pub gamemode: VarInt, + pub gamemode: GameMode, } diff --git a/pumpkin/src/entity/player.rs b/pumpkin/src/entity/player.rs index 38e8eca3f..3d803c556 100644 --- a/pumpkin/src/entity/player.rs +++ b/pumpkin/src/entity/player.rs @@ -2522,11 +2522,25 @@ impl Player { )) .await; - self.client - .enqueue_packet(&CGameEvent::new( - GameEvent::ChangeGameMode, - gamemode as i32 as f32, - )).await; + match &self.client { + crate::net::ClientPlatform::Java(client) => { + client + .enqueue_packet(&CGameEvent::new( + GameEvent::ChangeGameMode, + gamemode as i32 as f32, + )) + .await; + } + crate::net::ClientPlatform::Bedrock(client) => { + client + .send_game_packet( + &pumpkin_protocol::bedrock::client::set_player_gamemode::CSetPlayerGamemode { + gamemode, + }, + ) + .await; + } + } true }