Fixed an assert in bucket placement
git-svn-id: http://mc-server.googlecode.com/svn/trunk@746 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
f321b311a4
commit
1f42ef9a1e
@ -16,42 +16,57 @@ public:
|
|||||||
{
|
{
|
||||||
switch(m_ItemID)
|
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);
|
BLOCKTYPE ClickedBlock = a_World->GetBlock(a_X, a_Y, a_Z);
|
||||||
LOG("Bucket Clicked BlockID: %d", ClickedBlock);
|
LOG("Bucket Clicked BlockID: %d", ClickedBlock);
|
||||||
ENUM_ITEM_ID NewItem = E_ITEM_EMPTY;
|
ENUM_ITEM_ID NewItem = E_ITEM_EMPTY;
|
||||||
switch (ClickedBlock)
|
switch (ClickedBlock)
|
||||||
{
|
{
|
||||||
case E_BLOCK_WATER:
|
case E_BLOCK_WATER:
|
||||||
case E_BLOCK_STATIONARY_WATER:
|
case E_BLOCK_STATIONARY_WATER:
|
||||||
NewItem = E_ITEM_WATER_BUCKET;
|
{
|
||||||
break;
|
NewItem = E_ITEM_WATER_BUCKET;
|
||||||
case E_BLOCK_LAVA:
|
break;
|
||||||
case E_BLOCK_STATIONARY_LAVA:
|
}
|
||||||
NewItem = E_ITEM_LAVA_BUCKET;
|
case E_BLOCK_LAVA:
|
||||||
break;
|
case E_BLOCK_STATIONARY_LAVA:
|
||||||
|
{
|
||||||
|
NewItem = E_ITEM_LAVA_BUCKET;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cItem Item(a_Item->m_ItemID, 1);
|
cItem Item(a_Item->m_ItemID, 1);
|
||||||
if (NewItem != E_ITEM_EMPTY
|
if (
|
||||||
&& (a_Player->GetGameMode() == 1 || (a_Player->GetInventory().RemoveItem(Item))))
|
(NewItem != E_ITEM_EMPTY) &&
|
||||||
|
(
|
||||||
|
((a_Player->GetGameMode() == 1) ||
|
||||||
|
a_Player->GetInventory().RemoveItem(Item))
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
//Give New Bucket
|
// Give New Bucket
|
||||||
cItem Item(NewItem, 1);
|
cItem Item(NewItem, 1);
|
||||||
a_Player->GetInventory().AddItem(Item);
|
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);
|
a_Player->GetWorld()->SetBlock(a_X, a_Y, a_Z, E_BLOCK_AIR, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case E_ITEM_WATER_BUCKET:
|
case E_ITEM_WATER_BUCKET:
|
||||||
case E_ITEM_LAVA_BUCKET:
|
case E_ITEM_LAVA_BUCKET:
|
||||||
{
|
{
|
||||||
BLOCKTYPE NewBlock = (m_ItemID == E_ITEM_LAVA_BUCKET) ? E_BLOCK_LAVA : E_BLOCK_WATER;
|
BLOCKTYPE NewBlock = (m_ItemID == E_ITEM_LAVA_BUCKET) ? E_BLOCK_LAVA : E_BLOCK_WATER;
|
||||||
|
if (a_Dir >= 0)
|
||||||
AddDirection(a_X, a_Y, a_Z, a_Dir);
|
{
|
||||||
|
AddDirection(a_X, a_Y, a_Z, a_Dir);
|
||||||
|
}
|
||||||
if(a_World->GetBlock(a_X, a_Y, a_Z) == E_BLOCK_AIR)
|
if(a_World->GetBlock(a_X, a_Y, a_Z) == E_BLOCK_AIR)
|
||||||
{
|
{
|
||||||
cItem Item(a_Item->m_ItemID, 1);
|
cItem Item(a_Item->m_ItemID, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user