summaryrefslogtreecommitdiffstats
path: root/src/BlockArea.cpp
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2015-05-01 11:49:41 +0200
committerMattes D <github@xoft.cz>2015-05-01 11:49:41 +0200
commit259132d17e53ec99c4eb00cd856260d14ea1234d (patch)
treebcb6ff9fc661b0fc1d8ad492f12c874227b4d949 /src/BlockArea.cpp
parentMerge pull request #1923 from mc-server/ReadWholeFileFix (diff)
parentAdded cBlockArea:CountNonAirBlocks API function. (diff)
downloadcuberite-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.cpp31
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: