Make client know about reverted disallowed diggings
authorPerttu Ahola <celeron55@gmail.com>
Mon, 9 Apr 2012 18:13:22 +0000 (21:13 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Mon, 9 Apr 2012 18:13:22 +0000 (21:13 +0300)
src/server.cpp

index d7b55a46829b99e60eaafcc937b08514920541e3..389f6282fcd28c7c778cc8e030865b4484fddfc0 100644 (file)
@@ -2955,8 +2955,13 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                */
                if(!checkPriv(player->getName(), "interact"))
                {
-                       infostream<<"Ignoring interaction from player "<<player->getName()
-                                       <<" (no interact privilege)"<<std::endl;
+                       actionstream<<player->getName()<<" attempted to interact with "
+                                       <<pointed.dump()<<" without 'interact' privilege"
+                                       <<std::endl;
+                       // Re-send block to revert change on client-side
+                       RemoteClient *client = getClient(peer_id);
+                       v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_under, BS));
+                       client->SetBlockNotSent(blockpos);
                        return;
                }
 
@@ -3041,6 +3046,14 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                                }
                                if(n.getContent() != CONTENT_IGNORE)
                                        scriptapi_node_on_dig(m_lua, p_under, n, playersao);
+
+                               if (m_env->getMap().getNode(p_under).getContent() != CONTENT_AIR)
+                               {
+                                       // Re-send block to revert change on client-side
+                                       RemoteClient *client = getClient(peer_id);
+                                       v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_under, BS));
+                                       client->SetBlockNotSent(blockpos);
+                               }
                        }
                } // action == 2