From 1f42ef9a1eae39b80cc7807166bf276caa3ca0a7 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 17 Aug 2012 10:54:13 +0000 Subject: Fixed an assert in bucket placement git-svn-id: http://mc-server.googlecode.com/svn/trunk@746 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/items/ItemBucket.h | 53 ++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/source/items/ItemBucket.h b/source/items/ItemBucket.h index 60718b2fb..3e233e4f6 100644 --- a/source/items/ItemBucket.h +++ b/source/items/ItemBucket.h @@ -16,42 +16,57 @@ public: { switch(m_ItemID) { - case E_ITEM_BUCKET: + case E_ITEM_BUCKET: { - AddDirection(a_X, a_Y, a_Z, a_Dir); + if (a_Dir >= 0) + { + AddDirection(a_X, a_Y, a_Z, a_Dir); + } BLOCKTYPE ClickedBlock = a_World->GetBlock(a_X, a_Y, a_Z); LOG("Bucket Clicked BlockID: %d", ClickedBlock); ENUM_ITEM_ID NewItem = E_ITEM_EMPTY; switch (ClickedBlock) { - case E_BLOCK_WATER: - case E_BLOCK_STATIONARY_WATER: - NewItem = E_ITEM_WATER_BUCKET; - break; - case E_BLOCK_LAVA: - case E_BLOCK_STATIONARY_LAVA: - NewItem = E_ITEM_LAVA_BUCKET; - break; + case E_BLOCK_WATER: + case E_BLOCK_STATIONARY_WATER: + { + NewItem = E_ITEM_WATER_BUCKET; + break; + } + case E_BLOCK_LAVA: + case E_BLOCK_STATIONARY_LAVA: + { + NewItem = E_ITEM_LAVA_BUCKET; + break; + } } cItem Item(a_Item->m_ItemID, 1); - if (NewItem != E_ITEM_EMPTY - && (a_Player->GetGameMode() == 1 || (a_Player->GetInventory().RemoveItem(Item)))) + if ( + (NewItem != E_ITEM_EMPTY) && + ( + ((a_Player->GetGameMode() == 1) || + a_Player->GetInventory().RemoveItem(Item)) + ) + ) { - //Give New Bucket + // Give New Bucket cItem Item(NewItem, 1); a_Player->GetInventory().AddItem(Item); - //remove water block + // Remove water / lava block a_Player->GetWorld()->SetBlock(a_X, a_Y, a_Z, E_BLOCK_AIR, 0); return true; } + break; } - break; - case E_ITEM_WATER_BUCKET: - case E_ITEM_LAVA_BUCKET: + + case E_ITEM_WATER_BUCKET: + case E_ITEM_LAVA_BUCKET: { BLOCKTYPE NewBlock = (m_ItemID == E_ITEM_LAVA_BUCKET) ? E_BLOCK_LAVA : E_BLOCK_WATER; - - AddDirection(a_X, a_Y, a_Z, a_Dir); + if (a_Dir >= 0) + { + AddDirection(a_X, a_Y, a_Z, a_Dir); + } if(a_World->GetBlock(a_X, a_Y, a_Z) == E_BLOCK_AIR) { cItem Item(a_Item->m_ItemID, 1); -- cgit v1.2.3