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/map.cpp | |
parent | 752e11e11411d72868a406d35538adc5d1126655 (diff) | |
download | hax-minetest-server-d879a539cd19ddd1ee34afec2512fb2238de2822.tar.gz hax-minetest-server-d879a539cd19ddd1ee34afec2512fb2238de2822.zip |
Add minetest.swap_node
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/map.cpp b/src/map.cpp index 0f9c82c3c..c85876a75 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -931,7 +931,8 @@ void Map::updateLighting(std::map<v3s16, MapBlock*> & a_blocks, /* */ void Map::addNodeAndUpdate(v3s16 p, MapNode n, - std::map<v3s16, MapBlock*> &modified_blocks) + std::map<v3s16, MapBlock*> &modified_blocks, + bool remove_metadata) { INodeDefManager *ndef = m_gamedef->ndef(); @@ -1018,8 +1019,9 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, /* Remove node metadata */ - - removeNodeMetadata(p); + if (remove_metadata) { + removeNodeMetadata(p); + } /* Set the node on the map @@ -1319,17 +1321,17 @@ void Map::removeNodeAndUpdate(v3s16 p, } } -bool Map::addNodeWithEvent(v3s16 p, MapNode n) +bool Map::addNodeWithEvent(v3s16 p, MapNode n, bool remove_metadata) { MapEditEvent event; - event.type = MEET_ADDNODE; + event.type = remove_metadata ? MEET_ADDNODE : MEET_SWAPNODE; event.p = p; event.n = n; bool succeeded = true; try{ std::map<v3s16, MapBlock*> modified_blocks; - addNodeAndUpdate(p, n, modified_blocks); + addNodeAndUpdate(p, n, modified_blocks, remove_metadata); // Copy modified_blocks to event for(std::map<v3s16, MapBlock*>::iterator |