From db70ea1cbfc961ca63f1b04fb0ab85ec0478b419 Mon Sep 17 00:00:00 2001 From: Edvin Bryntesson Date: Thu, 5 Sep 2024 14:58:48 +0200 Subject: [PATCH] add checking gamemode for middleclick dragging --- pumpkin-inventory/src/container_click.rs | 2 +- pumpkin/src/client/container.rs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pumpkin-inventory/src/container_click.rs b/pumpkin-inventory/src/container_click.rs index cd5559dcb..b9ad246d6 100644 --- a/pumpkin-inventory/src/container_click.rs +++ b/pumpkin-inventory/src/container_click.rs @@ -131,7 +131,7 @@ pub enum DropType { SingleItem, FullStack, } -#[derive(Debug)] +#[derive(Debug, PartialEq)] pub enum MouseDragType { Left, Right, diff --git a/pumpkin/src/client/container.rs b/pumpkin/src/client/container.rs index a51383ced..68f849c82 100644 --- a/pumpkin/src/client/container.rs +++ b/pumpkin/src/client/container.rs @@ -3,7 +3,7 @@ use crate::server::Server; use itertools::Itertools; use pumpkin_core::text::TextComponent; use pumpkin_core::GameMode; -use pumpkin_inventory::container_click::{KeyClick, MouseClick, MouseDragState}; +use pumpkin_inventory::container_click::{KeyClick, MouseClick, MouseDragState, MouseDragType}; use pumpkin_inventory::drag_handler::DragHandler; use pumpkin_inventory::window_property::{WindowProperty, WindowPropertyTrait}; use pumpkin_inventory::{container_click, InventoryError, OptionallyCombinedContainer}; @@ -300,11 +300,12 @@ impl Player { .unwrap_or(player_id as u64); match mouse_drag_state { MouseDragState::Start(drag_type) => { - drag_handler.new_drag(container_id, player_id, drag_type)? - } - MouseDragState::AddSlot(slot) => { - drag_handler.add_slot(container_id, player_id, slot)? + if drag_type == MouseDragType::Middle && self.gamemode != GameMode::Creative { + Err(InventoryError::PermissionError)? + } + drag_handler.new_drag(container_id, player_id, drag_type) } + MouseDragState::AddSlot(slot) => drag_handler.add_slot(container_id, player_id, slot), MouseDragState::End => { let mut container = OptionallyCombinedContainer::new(&mut self.inventory, opened_container); @@ -313,10 +314,9 @@ impl Player { &mut container, &container_id, player_id, - )? + ) } } - Ok(()) } pub fn get_open_container<'a>(