From 178d1d2bda75e26a9964d2afa2d7fa1210e7f2ea Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sun, 2 Jan 2022 12:19:13 +0000 Subject: ClientHandle: improve right-click robustness (#5372) * ClientHandle: improve right-click robustness + Add checks for result of GetBlockTypeMeta + Kick if the client sent an invalid block face or coordinate * Update outdated comments --- src/Items/ItemHandler.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/Items/ItemHandler.h') diff --git a/src/Items/ItemHandler.h b/src/Items/ItemHandler.h index da573df9a..8b8c8d2d3 100644 --- a/src/Items/ItemHandler.h +++ b/src/Items/ItemHandler.h @@ -40,13 +40,11 @@ public: /** Called when the player tries to place the item (right mouse button, IsPlaceable() == true). - a_ClickedBlockPos is the (neighbor) block that has been clicked to place this item. - a_ClickedBlockFace is the face of the neighbor that has been clicked to place this item. - a_CursorPos is the position of the player's cursor within a_ClickedBlockFace. - The default handler uses GetBlocksToPlace() and places the returned blocks. - Override if the item needs advanced processing, such as spawning a mob based on the blocks being placed. + a_ClickedPosition is the block that has been clicked to place this item. + a_ClickedBlockFace is the face has been clicked to place this item. + a_CursorPosition is the position of the player's cursor within a_ClickedBlockFace. If the block placement is refused inside this call, it will automatically revert the client-side changes. */ - void OnPlayerPlace(cPlayer & a_Player, const cItem & a_HeldItem, Vector3i a_ClickedBlockPosition, eBlockFace a_ClickedBlockFace, Vector3i a_CursorPosition) const; + void OnPlayerPlace(cPlayer & a_Player, const cItem & a_HeldItem, Vector3i a_ClickedPosition, BLOCKTYPE a_ClickedBlockType, NIBBLETYPE a_ClickedBlockMeta, eBlockFace a_ClickedBlockFace, Vector3i a_CursorPosition) const; /** Called when the player tries to use the item (right mouse button). Descendants can return false to abort the usage (default behavior). */ -- cgit v1.2.3