diff options
author | kwolekr <kwolekr@minetest.net> | 2015-01-15 16:20:05 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-01-15 16:48:56 -0500 |
commit | 9736548720a96c9c7f739edb0435d9ba4ad80652 (patch) | |
tree | 3f92b63d017e9baac042ed3837bbdf040d40c73f /src/database-redis.cpp | |
parent | 0330cec7ec55126c9cc441373cde1253bed895ee (diff) | |
download | minetest-9736548720a96c9c7f739edb0435d9ba4ad80652.tar.gz minetest-9736548720a96c9c7f739edb0435d9ba4ad80652.tar.bz2 minetest-9736548720a96c9c7f739edb0435d9ba4ad80652.zip |
Add ability to delete MapBlocks from map
Also add a Lua API and chatcommand for this
Diffstat (limited to 'src/database-redis.cpp')
-rw-r--r-- | src/database-redis.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/database-redis.cpp b/src/database-redis.cpp index 028a0ab4d..b086f899d 100644 --- a/src/database-redis.cpp +++ b/src/database-redis.cpp @@ -123,6 +123,30 @@ std::string Database_Redis::loadBlock(v3s16 blockpos) return str; } +bool Database_Redis::deleteBlock(v3s16 blockpos) +{ + std::string tmp = i64tos(getBlockAsInteger(blockpos)); + + redisReply *reply = (redisReply *)redisCommand(ctx, "HDEL %s %s", + hash.c_str(), tmp.c_str()); + if (!reply) { + errorstream << "WARNING: deleteBlock: redis command 'HDEL' failed on " + "block " << PP(blockpos) << ": " << ctx->errstr << std::endl; + freeReplyObject(reply); + return false; + } + + if (reply->type == REDIS_REPLY_ERROR) { + errorstream << "WARNING: deleteBlock: deleting block " << PP(blockpos) + << "failed" << std::endl; + freeReplyObject(reply); + return false; + } + + freeReplyObject(reply); + return true; +} + void Database_Redis::listAllLoadableBlocks(std::list<v3s16> &dst) { redisReply *reply; |