Fix getting MapBlocks for abs(z) > 2048 with sqlite3 backend (fixed #31)

This commit is contained in:
sfan5 2016-09-18 14:33:13 +02:00
parent ae9321de1e
commit 4db3040f2a
2 changed files with 4 additions and 2 deletions

View File

@ -62,8 +62,8 @@ void DBSQLite3::getBlocksOnZ(std::map<int16_t, BlockList> &blocks, int16_t zPos)
int result; int result;
// Magic numbers! // Magic numbers!
int64_t minPos = (zPos * 0x1000000) - 0x800000; int64_t minPos = encodeBlockPos(BlockPos(0, -2048, zPos));
int64_t maxPos = (zPos * 0x1000000) + 0x7FFFFF; int64_t maxPos = encodeBlockPos(BlockPos(0, 2048, zPos)) - 1;
SQLOK(bind_int64(stmt_get_blocks_z, 1, minPos)); SQLOK(bind_int64(stmt_get_blocks_z, 1, minPos));
SQLOK(bind_int64(stmt_get_blocks_z, 2, maxPos)); SQLOK(bind_int64(stmt_get_blocks_z, 2, maxPos));

2
db.h
View File

@ -16,6 +16,8 @@ public:
int16_t y; int16_t y;
int16_t z; int16_t z;
BlockPos() : x(0), y(0), z(0) {}
BlockPos(int16_t x, int16_t y, int16_t z) : x(x), y(y), z(z) {}
bool operator < (const BlockPos &p) const bool operator < (const BlockPos &p) const
{ {
if (z > p.z) { if (z > p.z) {