From e0157663ede63eb000395bc7492773bab7b965d9 Mon Sep 17 00:00:00 2001 From: Edvin Bryntesson Date: Tue, 27 Aug 2024 09:24:17 +0200 Subject: [PATCH] add number button keyclick to packet SClickContainer --- pumpkin/src/client/container.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/pumpkin/src/client/container.rs b/pumpkin/src/client/container.rs index db894d31d..8fef720d7 100644 --- a/pumpkin/src/client/container.rs +++ b/pumpkin/src/client/container.rs @@ -1,7 +1,6 @@ use num_traits::FromPrimitive; use pumpkin_core::text::TextComponent; -use pumpkin_inventory::container_click; -use pumpkin_inventory::container_click::MouseClick; +use pumpkin_inventory::container_click::{KeyClick, MouseClick}; use pumpkin_inventory::window_property::{WindowProperty, WindowPropertyTrait}; use pumpkin_inventory::{container_click, handle_item_change}; use pumpkin_inventory::{Container, WindowType}; @@ -141,6 +140,14 @@ impl Player { self.mouse_click(mouse_click, click.window_type, click.mode.slot) } ClickType::ShiftClick => self.shift_mouse_click(click.window_type, click.mode.slot), + ClickType::KeyClick(key_click) => match click.mode.slot { + container_click::Slot::Normal(slot) => { + self.number_button_pressed(click.window_type, key_click, slot) + } + container_click::Slot::OutsideInventory => { + unimplemented!("This is not a valid state") + } + }, _ => todo!(), } dbg!(&self.carried_item); @@ -225,6 +232,26 @@ impl Player { } }; } + + pub fn number_button_pressed( + &mut self, + window_type: WindowType, + key_click: KeyClick, + slot: usize, + ) { + if window_type == WindowType::Generic9x1 { + let changing_slot = match key_click { + KeyClick::Slot(slot) => slot, + KeyClick::Offhand => 45, + }; + let mut changing_item_slot = self.inventory.get_slot(changing_slot as usize).to_owned(); + let item_slot = self.inventory.get_slot(slot); + if item_slot.is_some() { + handle_item_change(&mut changing_item_slot, item_slot, MouseClick::Left); + *self.inventory.get_slot(changing_slot as usize) = changing_item_slot + } + } + } } /*impl ContainerStruct {