diff options
Diffstat (limited to '')
-rw-r--r-- | src/map.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/map.cpp b/src/map.cpp index 7de79c75d..a8e7235cf 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -28,6 +28,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "porting.h" #include "mapgen.h" #include "nodemetadata.h" +#include "content_nodemeta.h" +#include "content_mapnode.h" /* SQLite format specification: @@ -890,7 +892,7 @@ void Map::updateLighting(core::map<v3s16, MapBlock*> & a_blocks, /* */ void Map::addNodeAndUpdate(v3s16 p, MapNode n, - core::map<v3s16, MapBlock*> &modified_blocks) + core::map<v3s16, MapBlock*> &modified_blocks, std::string &player_name) { /*PrintInfo(m_dout); m_dout<<DTIME<<"Map::addNodeAndUpdate(): p=(" @@ -1014,8 +1016,20 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, if(meta_proto) { NodeMetadata *meta = meta_proto->clone(); + /* lockable chest, insert the owner's name */ + if (meta->typeId() == CONTENT_LOCKABLE_CHEST) + { + LockingChestNodeMetadata *lcm = (LockingChestNodeMetadata*)meta; + lcm->setOwner(player_name); + } setNodeMetadata(p, meta); } + else if (n.getContent() == CONTENT_LOCKABLE_CHEST) + { + LockingChestNodeMetadata *lcm = new LockingChestNodeMetadata(); + lcm->setOwner(player_name); + setNodeMetadata(p, (NodeMetadata*)lcm); + } /* If node is under sunlight and doesn't let sunlight through, @@ -1290,7 +1304,8 @@ bool Map::addNodeWithEvent(v3s16 p, MapNode n) bool succeeded = true; try{ core::map<v3s16, MapBlock*> modified_blocks; - addNodeAndUpdate(p, n, modified_blocks); + std::string st = std::string(""); + addNodeAndUpdate(p, n, modified_blocks, st); // Copy modified_blocks to event for(core::map<v3s16, MapBlock*>::Iterator |