diff options
author | Novatux <nathanael.courant@laposte.net> | 2013-11-23 15:35:49 +0100 |
---|---|---|
committer | Novatux <nathanael.courant@laposte.net> | 2013-11-30 18:37:56 +0100 |
commit | d879a539cd19ddd1ee34afec2512fb2238de2822 (patch) | |
tree | 68105678426cb1a498bfe3ba4354506a9a560409 /src/client.cpp | |
parent | 752e11e11411d72868a406d35538adc5d1126655 (diff) | |
download | minetest-d879a539cd19ddd1ee34afec2512fb2238de2822.tar.gz minetest-d879a539cd19ddd1ee34afec2512fb2238de2822.tar.bz2 minetest-d879a539cd19ddd1ee34afec2512fb2238de2822.zip |
Add minetest.swap_node
Diffstat (limited to 'src/client.cpp')
-rw-r--r-- | src/client.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/client.cpp b/src/client.cpp index 5e8f20620..a9a1f6dd9 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1262,7 +1262,13 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id) MapNode n; n.deSerialize(&data[8], ser_version); - addNode(p, n); + bool remove_metadata = true; + u32 index = 8 + MapNode::serializedLength(ser_version); + if ((datasize >= index+1) && data[index]){ + remove_metadata = false; + } + + addNode(p, n, remove_metadata); } else if(command == TOCLIENT_BLOCKDATA) { @@ -2514,7 +2520,7 @@ void Client::removeNode(v3s16 p) } } -void Client::addNode(v3s16 p, MapNode n) +void Client::addNode(v3s16 p, MapNode n, bool remove_metadata) { TimeTaker timer1("Client::addNode()"); @@ -2523,7 +2529,7 @@ void Client::addNode(v3s16 p, MapNode n) try { //TimeTaker timer3("Client::addNode(): addNodeAndUpdate"); - m_env.getMap().addNodeAndUpdate(p, n, modified_blocks); + m_env.getMap().addNodeAndUpdate(p, n, modified_blocks, remove_metadata); } catch(InvalidPositionException &e) {} |