1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add minetest.swap_node

This commit is contained in:
Novatux 2013-11-23 15:35:49 +01:00
parent 752e11e114
commit d879a539cd
12 changed files with 82 additions and 29 deletions

View file

@ -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