From daaafeefea75268b4dd9c4404e1a797e13a9ff99 Mon Sep 17 00:00:00 2001 From: Edvin Bryntesson Date: Thu, 5 Sep 2024 19:18:48 +0200 Subject: [PATCH] actually fixed deadlock --- pumpkin/src/client/container.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pumpkin/src/client/container.rs b/pumpkin/src/client/container.rs index a981db95d..3cb36a8ba 100644 --- a/pumpkin/src/client/container.rs +++ b/pumpkin/src/client/container.rs @@ -110,7 +110,6 @@ impl Player { let mut opened_container = self .get_open_container(server) .map(|container| container.lock().unwrap()); - let mut opened_container = opened_container.as_deref_mut(); let drag_handler = &server.drag_handler; let current_state_id = if let Some(container) = opened_container.as_ref() { @@ -144,18 +143,20 @@ impl Player { match click.click_type { ClickType::MouseClick(mouse_click) => { - self.mouse_click(opened_container, mouse_click, click.slot) + self.mouse_click(opened_container.as_deref_mut(), mouse_click, click.slot) + } + ClickType::ShiftClick => { + self.shift_mouse_click(opened_container.as_deref_mut(), click.slot) } - ClickType::ShiftClick => self.shift_mouse_click(opened_container, click.slot), ClickType::KeyClick(key_click) => match click.slot { container_click::Slot::Normal(slot) => { - self.number_button_pressed(opened_container, key_click, slot) + self.number_button_pressed(opened_container.as_deref_mut(), key_click, slot) } container_click::Slot::OutsideInventory => Err(InventoryError::InvalidPacket), }, ClickType::CreativePickItem => { if let container_click::Slot::Normal(slot) = click.slot { - self.creative_pick_item(opened_container, slot) + self.creative_pick_item(opened_container.as_deref_mut(), slot) } else { Err(InventoryError::InvalidPacket) } @@ -168,10 +169,11 @@ impl Player { } } ClickType::MouseDrag { drag_state } => { - self.mouse_drag(drag_handler, opened_container, drag_state) + self.mouse_drag(drag_handler, opened_container.as_deref_mut(), drag_state) } ClickType::DropType(_drop_type) => todo!(), }?; + std::mem::drop(opened_container); if let container_click::Slot::Normal(slot) = click.slot { self.send_container_changes(server, slot).await?; } @@ -357,7 +359,6 @@ impl Player { CSetContainerSlot::new(*container.window_type() as i8, state_id, slot_index, &slot); player.client.send_packet(&packet) } - dbg!("got here"); Ok(()) }