summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2014-03-27 18:13:52 +0100
committermadmaxoft <github@xoft.cz>2014-03-27 18:13:52 +0100
commitbbebb3a2cdbd888e63e4a40b1bcc730105c11377 (patch)
tree4597232dcb5c732b1a70649c725caec07e59bde5
parentPrefabs support connectors, rotations and merge strategy. (diff)
downloadcuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar.gz
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar.bz2
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar.lz
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar.xz
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.tar.zst
cuberite-bbebb3a2cdbd888e63e4a40b1bcc730105c11377.zip
-rw-r--r--src/Chunk.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Chunk.cpp b/src/Chunk.cpp
index 957d7d575..bd4cb9937 100644
--- a/src/Chunk.cpp
+++ b/src/Chunk.cpp
@@ -2510,6 +2510,17 @@ cChunk * cChunk::GetNeighborChunk(int a_BlockX, int a_BlockZ)
cChunk * cChunk::GetRelNeighborChunk(int a_RelX, int a_RelZ)
{
+ // If the relative coords are too far away, use the parent's chunk lookup instead:
+ if ((a_RelX < 128) || (a_RelX > 128) || (a_RelZ < -128) || (a_RelZ > 128))
+ {
+ int BlockX = m_PosX * cChunkDef::Width + a_RelX;
+ int BlockZ = m_PosZ * cChunkDef::Width + a_RelZ;
+ int BlockY, ChunkX, ChunkZ;
+ AbsoluteToRelative(BlockX, BlockY, BlockZ, ChunkX, ChunkZ);
+ return m_ChunkMap->GetChunkNoLoad(ChunkX, ZERO_CHUNK_Y, ChunkZ);
+ }
+
+ // Walk the neighbors:
bool ReturnThis = true;
if (a_RelX < 0)
{