Fix object position border checking

Borders have to be converted into BS format in order to be accurately comparable to
object positions.
This commit is contained in:
est31 2015-09-16 16:12:59 +02:00
parent f61f817b9c
commit 6c81be51ff
2 changed files with 11 additions and 9 deletions

View File

@ -1495,8 +1495,10 @@ u16 ServerEnvironment::addActiveObjectRaw(ServerActiveObject *object,
}
if (objectpos_over_limit(object->getBasePosition())) {
v3f p = object->getBasePosition();
errorstream << "ServerEnvironment::addActiveObjectRaw(): "
<< "object position outside maximum range" << std::endl;
<< "object position (" << p.X << "," << p.Y << "," << p.Z
<< ") outside maximum range" << std::endl;
if (object->environmentDeletes())
delete object;
return 0;

View File

@ -639,14 +639,14 @@ typedef std::vector<MapBlock*> MapBlockVect;
inline bool objectpos_over_limit(v3f p)
{
const static u16 map_gen_limit = MYMIN(MAX_MAP_GENERATION_LIMIT,
g_settings->getU16("map_generation_limit"));
return (p.X < -map_gen_limit
|| p.X > map_gen_limit
|| p.Y < -map_gen_limit
|| p.Y > map_gen_limit
|| p.Z < -map_gen_limit
|| p.Z > map_gen_limit);
const static float map_gen_limit_bs = MYMIN(MAX_MAP_GENERATION_LIMIT,
g_settings->getU16("map_generation_limit")) * BS;
return (p.X < -map_gen_limit_bs
|| p.X > map_gen_limit_bs
|| p.Y < -map_gen_limit_bs
|| p.Y > map_gen_limit_bs
|| p.Z < -map_gen_limit_bs
|| p.Z > map_gen_limit_bs);
}
inline bool blockpos_over_limit(v3s16 p)