From 2d3013d1d35a2bcba63cffd9012898defff26f93 Mon Sep 17 00:00:00 2001 From: changyong guo Date: Sun, 24 Jun 2018 17:24:10 +0800 Subject: Support swap item between main hand and offhand by press key "F" (#4241) Hi, I found cuberite don't support to press key "F" to swap items on main hand and offhand, so I implemented this feature. Best regards Changyong --- src/ClientHandle.cpp | 9 ++++++++- src/Entities/Entity.h | 3 +++ src/Entities/Player.h | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp index a895dd3b3..ff649ea4d 100644 --- a/src/ClientHandle.cpp +++ b/src/ClientHandle.cpp @@ -1188,7 +1188,14 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, eB case DIG_STATUS_SWAP_ITEM_IN_HAND: { - // TODO: Not yet implemented + + cItem EquippedItem = m_Player->GetEquippedItem(); + cItem OffhandItem = m_Player->GetOffHandEquipedItem(); + + cInventory & Intentory = m_Player->GetInventory(); + Intentory.SetShieldSlot(EquippedItem); + Intentory.SetHotbarSlot(Intentory.GetEquippedSlotNum(), OffhandItem); + return; } diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h index 9abf75968..7ac12c95b 100644 --- a/src/Entities/Entity.h +++ b/src/Entities/Entity.h @@ -351,6 +351,9 @@ public: /** Returns the currently equipped boots; empty item if none */ virtual cItem GetEquippedBoots(void) const { return cItem(); } + /** Returns the currently offhand equipped item; empty item if none */ + virtual cItem GetOffHandEquipedItem(void) const { return cItem(); } + /** Applies damage to the armor after the armor blocked the given amount */ virtual void ApplyArmorDamage(int DamageBlocked); diff --git a/src/Entities/Player.h b/src/Entities/Player.h index 32a4b0348..f04f90a2b 100644 --- a/src/Entities/Player.h +++ b/src/Entities/Player.h @@ -71,6 +71,9 @@ public: /** Returns the currently equipped boots; empty item if none */ virtual cItem GetEquippedBoots(void) const override { return m_Inventory.GetEquippedBoots(); } + /** Returns the currently offhand equipped item; empty item if none */ + virtual cItem GetOffHandEquipedItem(void) const override { return m_Inventory.GetShieldSlot(); } + virtual void ApplyArmorDamage(int DamageBlocked) override; // tolua_begin -- cgit v1.2.3