- // virtual from NodeContainer
- bool isValidPosition(v3s16 p)
- {
- v3s16 blockpos = getNodeBlockPos(p);
-
- if(blockpos.X != 0 || blockpos.Z != 0)
- return false;
-
- MapBlock *blockref;
- try{
- blockref = getBlockNoCreate(blockpos.Y);
- }
- catch(InvalidPositionException &e)
- {
- return false;
- }
-
- return true;
- }
-
- // virtual from NodeContainer
- MapNode getNode(v3s16 p)
- {
- v3s16 blockpos = getNodeBlockPos(p);
- if(blockpos.X != 0 || blockpos.Z != 0)
- throw InvalidPositionException
- ("MapSector only allows Y");
-
- MapBlock * blockref = getBlockNoCreate(blockpos.Y);
- v3s16 relpos = p - blockpos*MAP_BLOCKSIZE;
-
- return blockref->getNode(relpos);
- }
- // virtual from NodeContainer
- void setNode(v3s16 p, MapNode & n)
- {
- v3s16 blockpos = getNodeBlockPos(p);
- if(blockpos.X != 0 || blockpos.Z != 0)
- throw InvalidPositionException
- ("MapSector only allows Y");
-
- MapBlock * blockref = getBlockNoCreate(blockpos.Y);
- v3s16 relpos = p - blockpos*MAP_BLOCKSIZE;
- blockref->setNode(relpos, n);
- }
-
- // DEPRECATED?
- virtual f32 getGroundHeight(v2s16 p, bool generate=false)
- {
- return GROUNDHEIGHT_NOTFOUND_SETVALUE;
- }
- virtual void setGroundHeight(v2s16 p, f32 y, bool generate=false)
- {
- }
-
- // When true, sector metadata is changed from the one on disk
- // (sector metadata = all but blocks)
- // Basically, this should be changed to true in every setter method