Better synchronisation of build/mine attempts when the player isn't allowed to

This commit is contained in:
Ciaran Gultnieks 2011-05-16 11:34:06 +01:00
parent 50c48219a7
commit 7cdd988f88

@ -2174,8 +2174,6 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
{ {
if(datasize < 17) if(datasize < 17)
return; return;
if((player->privs & PRIV_BUILD) == 0)
return;
/* /*
length: 17 length: 17
[0] u16 command [0] u16 command
@ -2281,6 +2279,10 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
cannot_remove_node = true; cannot_remove_node = true;
} }
// Make sure the player is allowed to do it
if((player->privs & PRIV_BUILD) == 0)
cannot_remove_node = true;
/* /*
If node can't be removed, set block to be re-sent to If node can't be removed, set block to be re-sent to
client and quit. client and quit.
@ -2427,7 +2429,8 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
try{ try{
// Don't add a node if this is not a free space // Don't add a node if this is not a free space
MapNode n2 = m_env.getMap().getNode(p_over); MapNode n2 = m_env.getMap().getNode(p_over);
if(content_buildable_to(n2.d) == false) if(content_buildable_to(n2.d) == false
|| (player->privs & PRIV_BUILD) ==0)
{ {
// Client probably has wrong data. // Client probably has wrong data.
// Set block not sent, so that client will get // Set block not sent, so that client will get