diff options
author | Mattes D <github@xoft.cz> | 2015-05-01 11:49:41 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2015-05-01 11:49:41 +0200 |
commit | 259132d17e53ec99c4eb00cd856260d14ea1234d (patch) | |
tree | bcb6ff9fc661b0fc1d8ad492f12c874227b4d949 /src/BlockArea.cpp | |
parent | Merge pull request #1923 from mc-server/ReadWholeFileFix (diff) | |
parent | Added cBlockArea:CountNonAirBlocks API function. (diff) | |
download | cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar.gz cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar.bz2 cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar.lz cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar.xz cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.tar.zst cuberite-259132d17e53ec99c4eb00cd856260d14ea1234d.zip |
Diffstat (limited to '')
-rw-r--r-- | src/BlockArea.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/BlockArea.cpp b/src/BlockArea.cpp index 600940d96..89cf18d4a 100644 --- a/src/BlockArea.cpp +++ b/src/BlockArea.cpp @@ -1634,6 +1634,37 @@ void cBlockArea::GetRelBlockTypeMeta(int a_RelX, int a_RelY, int a_RelZ, BLOCKTY +size_t cBlockArea::CountNonAirBlocks(void) const +{ + // Check if blocktypes are valid: + if (m_BlockTypes == nullptr) + { + LOGWARNING("%s: BlockTypes have not been read!", __FUNCTION__); + return 0; + } + + // Count the blocks: + size_t res = 0; + for (int y = 0; y < m_Size.y; y++) + { + for (int z = 0; z < m_Size.z; z++) + { + for (int x = 0; x < m_Size.x; x++) + { + if (m_BlockTypes[MakeIndex(x, y, z)] != E_BLOCK_AIR) + { + ++res; + } + } // for x + } // for z + } // for y + return res; +} + + + + + void cBlockArea::GetNonAirCropRelCoords(int & a_MinRelX, int & a_MinRelY, int & a_MinRelZ, int & a_MaxRelX, int & a_MaxRelY, int & a_MaxRelZ, BLOCKTYPE a_IgnoreBlockType) { // Check if blocktypes are valid: |