diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-07-29 16:27:19 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-07-29 16:27:19 +0200 |
commit | 8811837aea2a33ba5da424087429864f811bf5e5 (patch) | |
tree | baeedba8fb618766cf7d4e1657d2d48c84f45a59 /src/UI | |
parent | Suggestions (diff) | |
parent | DistortedHeightmap: Now generates gravel in deep ocean. (diff) | |
download | cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar.gz cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar.bz2 cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar.lz cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar.xz cuberite-8811837aea2a33ba5da424087429864f811bf5e5.tar.zst cuberite-8811837aea2a33ba5da424087429864f811bf5e5.zip |
Diffstat (limited to 'src/UI')
-rw-r--r-- | src/UI/SlotArea.cpp | 17 | ||||
-rw-r--r-- | src/UI/SlotArea.h | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/UI/SlotArea.cpp b/src/UI/SlotArea.cpp index 21b6ed0c8..b5f84c24c 100644 --- a/src/UI/SlotArea.cpp +++ b/src/UI/SlotArea.cpp @@ -1866,6 +1866,19 @@ void cSlotAreaArmor::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_C { ASSERT((a_SlotNum >= 0) && (a_SlotNum < GetNumSlots())); + // When the player is in creative mode, the client sends the new item as a_ClickedItem, not the current item in the slot. + if (a_Player.IsGameModeCreative() && (m_ParentWindow.GetWindowType() == cWindow::wtInventory)) + { + if ((a_ClickAction == caDropKey) || (a_ClickAction == caCtrlDropKey)) + { + DropClicked(a_Player, a_SlotNum, (a_ClickAction == caCtrlDropKey)); + return; + } + + SetSlot(a_SlotNum, a_Player, a_ClickedItem); + return; + } + bool bAsync = false; if (GetSlot(a_SlotNum, a_Player) == NULL) { @@ -1913,7 +1926,7 @@ void cSlotAreaArmor::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_C return; } - if (DraggingItem.IsEmpty() || CanPlaceInSlot(a_SlotNum, DraggingItem)) + if (DraggingItem.IsEmpty() || CanPlaceArmorInSlot(a_SlotNum, DraggingItem)) { // Swap contents cItem tmp(DraggingItem); @@ -1932,7 +1945,7 @@ void cSlotAreaArmor::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_C -bool cSlotAreaArmor::CanPlaceInSlot(int a_SlotNum, const cItem & a_Item) +bool cSlotAreaArmor::CanPlaceArmorInSlot(int a_SlotNum, const cItem & a_Item) { switch (a_SlotNum) { diff --git a/src/UI/SlotArea.h b/src/UI/SlotArea.h index 7f37159b7..fa842bb81 100644 --- a/src/UI/SlotArea.h +++ b/src/UI/SlotArea.h @@ -161,7 +161,7 @@ public: /** Called when a player clicks in the window. Parameters taken from the click packet. */ virtual void Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_ClickAction, const cItem & a_ClickedItem) override; - bool CanPlaceInSlot(int a_SlotNum, const cItem & a_Item); + static bool CanPlaceArmorInSlot(int a_SlotNum, const cItem & a_Item); } ; |