aboutsummaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
authordarkrose <lisa@ltmnet.com>2011-09-22 19:11:48 +1000
committerdarkrose <lisa@ltmnet.com>2011-09-22 19:11:48 +1000
commit582e450bad08006dff141216351b81d3eb9270b7 (patch)
tree0c76a61f5e36f8e4414d220637ff90eacde4eb86 /src/map.cpp
parentae6d83a41ed958b65ec7f6584d7b042ae6a6e51f (diff)
downloadminetest-582e450bad08006dff141216351b81d3eb9270b7.tar.xz
added locking chests - clean patch
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp19
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