Fixed an assert in bucket placement

git-svn-id: http://mc-server.googlecode.com/svn/trunk@746 0a769ca7-a7f5-676a-18bf-c427514a06d6
master
madmaxoft@gmail.com 2012-08-17 10:54:13 +00:00
parent f321b311a4
commit 1f42ef9a1e
1 changed files with 34 additions and 19 deletions

View File

@ -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);