From cf87169737fdeeee7d4b160688bbed7194e46147 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 24 May 2013 07:30:39 +0000 Subject: Refactored cInventory to use cItemGrid for the actual Storage This makes the API more orthogonal and is easier to use in the plugins. Also changes in the inventory are now propagated to the needed places (armor updates to BroadcastEntityEquipment etc.) even when the inventory is changed by a plugin. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1503 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Items/ItemBucket.h | 12 ++++-------- source/Items/ItemDye.h | 6 +++--- source/Items/ItemSlab.h | 3 +-- source/Items/ItemSpawnEgg.h | 3 +-- 4 files changed, 9 insertions(+), 15 deletions(-) (limited to 'source/Items') diff --git a/source/Items/ItemBucket.h b/source/Items/ItemBucket.h index 098742724..4792fa62d 100644 --- a/source/Items/ItemBucket.h +++ b/source/Items/ItemBucket.h @@ -81,8 +81,7 @@ public: } // Remove the bucket from the inventory - cItem Item(a_Item.m_ItemType, 1); - if (!a_Player->GetInventory().RemoveItem(Item)) + if (!a_Player->GetInventory().RemoveOneEquippedItem()) { LOG("Clicked with an empty bucket, but cannot remove one from the inventory? WTF?"); ASSERT(!"Inventory bucket mismatch"); @@ -90,8 +89,7 @@ public: } // Give new bucket, filled with fluid: - Item.m_ItemType = NewItem; - Item.m_ItemCount = 1; + cItem Item(NewItem, 1); a_Player->GetInventory().AddItem(Item); // Remove water / lava block @@ -131,15 +129,13 @@ public: if (a_Player->GetGameMode() != gmCreative) { // Remove fluid bucket, add empty bucket: - cItem Item(a_Item.m_ItemType, 1); - if (!a_Player->GetInventory().RemoveItem(Item)) + if (!a_Player->GetInventory().RemoveOneEquippedItem()) { LOG("Clicked with a full bucket, but cannot remove one from the inventory? WTF?"); ASSERT(!"Inventory bucket mismatch"); return false; } - Item.m_ItemType = E_ITEM_BUCKET; - Item.m_ItemCount = 1; + cItem Item(E_ITEM_BUCKET, 1); if (!a_Player->GetInventory().AddItem(Item)) { return false; diff --git a/source/Items/ItemDye.h b/source/Items/ItemDye.h index ab9ff3f60..e4c31fa4b 100644 --- a/source/Items/ItemDye.h +++ b/source/Items/ItemDye.h @@ -22,15 +22,15 @@ public: virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override { // TODO: Handle coloring the sheep, too (OnItemUseOnEntity maybe) + // Handle growing the plants: if (a_Item.m_ItemDamage == E_META_DYE_WHITE) { if (a_World->GrowRipePlant(a_BlockX, a_BlockY, a_BlockZ, true)) { - if (a_Player->GetGameMode() != eGameMode_Creative) + if (a_Player->GetGameMode() != gmCreative) { - cItem Item(a_Item.m_ItemType, 1, a_Item.m_ItemDamage); - a_Player->GetInventory().RemoveItem(Item); + a_Player->GetInventory().RemoveOneEquippedItem(); return true; } } diff --git a/source/Items/ItemSlab.h b/source/Items/ItemSlab.h index 9f4760053..9b3aaed03 100644 --- a/source/Items/ItemSlab.h +++ b/source/Items/ItemSlab.h @@ -36,8 +36,7 @@ public: } else { - cItem Item(a_Item.m_ItemType, 1); - if (a_Player->GetInventory().RemoveItem(Item)) + if (a_Player->GetInventory().RemoveOneEquippedItem()) { a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, Block - 1, Meta); // Block - 1 simple hack to save one if statement return true; diff --git a/source/Items/ItemSpawnEgg.h b/source/Items/ItemSpawnEgg.h index c6fa363bb..7f5b253ef 100644 --- a/source/Items/ItemSpawnEgg.h +++ b/source/Items/ItemSpawnEgg.h @@ -38,8 +38,7 @@ public: if (a_Player->GetGameMode() != 1) { // The mob was spawned, "use" the item: - cItem Equipped(a_Player->GetEquippedItem()); - a_Player->GetInventory().RemoveItem(Equipped); + a_Player->GetInventory().RemoveOneEquippedItem(); } return true; } -- cgit v1.2.3