diff options
Diffstat (limited to 'source/ClientHandle.cpp')
-rw-r--r-- | source/ClientHandle.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/source/ClientHandle.cpp b/source/ClientHandle.cpp index 155eac38a..526d00b98 100644 --- a/source/ClientHandle.cpp +++ b/source/ClientHandle.cpp @@ -555,11 +555,8 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, ch cItemHandler * ItemHandler = cItemHandler::GetItemHandler(m_Player->GetEquippedItem()); if (ItemHandler->IsFood()) { - if (PlgMgr->CallHookPlayerEating(*m_Player)) - { - // A plugin doesn't agree with the action. The plugin itself is responsible for handling the consequences (possible inventory mismatch) - return; - } + m_Player->AbortEating(); + return; } else { @@ -569,7 +566,7 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, ch return; } } - LOGINFO("%s: Status SHOOT / EAT not implemented", __FUNCTION__); + LOGINFO("%s: Status SHOOT not implemented", __FUNCTION__); return; } @@ -804,15 +801,19 @@ void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, c } else if (ItemHandler->IsFood()) { - cItem Item; - Item.m_ItemType = Equipped.m_ItemType; - Item.m_ItemCount = 1; - if (ItemHandler->EatItem(m_Player, &Item)) + if (m_Player->IsSatiated()) + { + // The player is satiated, they cannot eat + return; + } + m_Player->StartEating(); + if (PlgMgr->CallHookPlayerEating(*m_Player)) { - ItemHandler->OnFoodEaten(World, m_Player, &Item); - m_Player->GetInventory().RemoveOneEquippedItem(); + // A plugin won't let us eat, abort (send the proper packets to the client, too): + m_Player->AbortEating(); return; } + return; } else { @@ -1490,6 +1491,15 @@ void cClientHandle::SendDisconnect(const AString & a_Reason) +void cClientHandle::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) +{ + m_Protocol->SendEditSign(a_BlockX, a_BlockY, a_BlockZ); +} + + + + + void cClientHandle::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) { m_Protocol->SendEntityEquipment(a_Entity, a_SlotNum, a_Item); |