diff options
author | Tiger Wang <ziwei.tiger@outlook.com> | 2021-01-05 03:13:02 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@outlook.com> | 2021-01-11 17:39:56 +0100 |
commit | 9328afe65c72b29f5cedbf1897ea8559f6b2c42f (patch) | |
tree | 92d9490d062009278ed8d78f8981014e88ba8f05 /src/ChunkMap.cpp | |
parent | zlib -> libdeflate (#5085) (diff) | |
download | cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar.gz cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar.bz2 cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar.lz cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar.xz cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.tar.zst cuberite-9328afe65c72b29f5cedbf1897ea8559f6b2c42f.zip |
Diffstat (limited to '')
-rw-r--r-- | src/ChunkMap.cpp | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/src/ChunkMap.cpp b/src/ChunkMap.cpp index f06dd057f..c5798260b 100644 --- a/src/ChunkMap.cpp +++ b/src/ChunkMap.cpp @@ -337,6 +337,63 @@ bool cChunkMap::IsChunkQueued(int a_ChunkX, int a_ChunkZ) const +bool cChunkMap::IsWeatherSunnyAt(int a_BlockX, int a_BlockZ) const +{ + int ChunkX, ChunkZ, BlockY = 0; + cChunkDef::AbsoluteToRelative(a_BlockX, BlockY, a_BlockZ, ChunkX, ChunkZ); + + cCSLock Lock(m_CSChunks); + const auto Chunk = FindChunk(ChunkX, ChunkZ); + if ((Chunk == nullptr) || !Chunk->IsValid()) + { + return m_World->IsWeatherSunny(); + } + + return Chunk->IsWeatherSunnyAt(a_BlockX, a_BlockZ); +} + + + + + +bool cChunkMap::IsWeatherWetAt(int a_BlockX, int a_BlockZ) const +{ + int ChunkX, ChunkZ, BlockY = 0; + cChunkDef::AbsoluteToRelative(a_BlockX, BlockY, a_BlockZ, ChunkX, ChunkZ); + + cCSLock Lock(m_CSChunks); + const auto Chunk = FindChunk(ChunkX, ChunkZ); + if ((Chunk == nullptr) || !Chunk->IsValid()) + { + return m_World->IsWeatherWet(); + } + + return Chunk->IsWeatherWetAt(a_BlockX, a_BlockZ); +} + + + + + +bool cChunkMap::IsWeatherWetAt(const Vector3i a_Position) const +{ + const auto ChunkPosition = cChunkDef::BlockToChunk(a_Position); + const auto Position = cChunkDef::AbsoluteToRelative(a_Position, ChunkPosition); + + cCSLock Lock(m_CSChunks); + const auto Chunk = FindChunk(ChunkPosition.m_ChunkX, ChunkPosition.m_ChunkZ); + if ((Chunk == nullptr) || !Chunk->IsValid()) + { + return m_World->IsWeatherWet(); + } + + return Chunk->IsWeatherWetAt(Position); +} + + + + + bool cChunkMap::IsChunkValid(int a_ChunkX, int a_ChunkZ) const { cCSLock Lock(m_CSChunks); @@ -647,10 +704,7 @@ EMCSBiome cChunkMap::GetBiomeAt(int a_BlockX, int a_BlockZ) const { return Chunk->GetBiomeAt(X, Z); } - else - { - return m_World->GetGenerator().GetBiomeAt(a_BlockX, a_BlockZ); - } + return EMCSBiome::biInvalidBiome; } |