From 08d84080fa50426b77f79f5b55bbf5fb5d3ef718 Mon Sep 17 00:00:00 2001 From: Raekye Date: Sun, 25 Jan 2015 18:23:30 -0500 Subject: filter out leaves meta changes from being sent to the client --- src/Chunk.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Chunk.cpp b/src/Chunk.cpp index 979492b46..f5a1f9900 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -1570,6 +1570,10 @@ void cChunk::FastSetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockT if ( a_SendToClients && // ... we are told to do so AND ... ( + !( // ... the old and new blocktypes AREN'T leaves (because the client doesn't need meta updates) + ((OldBlockType == E_BLOCK_LEAVES) && (a_BlockType == E_BLOCK_LEAVES)) || + ((OldBlockType == E_BLOCK_NEW_LEAVES) && (a_BlockType == E_BLOCK_NEW_LEAVES)) + ) || // ... OR ... (OldBlockMeta != a_BlockMeta) || // ... the meta value is different OR ... !( // ... the old and new blocktypes AREN'T liquids (because client doesn't need to distinguish betwixt them): ((OldBlockType == E_BLOCK_STATIONARY_WATER) && (a_BlockType == E_BLOCK_WATER)) || // Replacing stationary water with water -- cgit v1.2.3 From 82a10116ddc60ecf1fac33ee89c0c234a80b5cfb Mon Sep 17 00:00:00 2001 From: Raekye Date: Sun, 25 Jan 2015 19:13:55 -0500 Subject: fix logic bug in cChunk::FastSetBlock filtering out leaves meta changes - send update if it's not a leaves block and (the original checks) --- src/Chunk.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Chunk.cpp b/src/Chunk.cpp index f5a1f9900..a4198c322 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -1573,13 +1573,15 @@ void cChunk::FastSetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockT !( // ... the old and new blocktypes AREN'T leaves (because the client doesn't need meta updates) ((OldBlockType == E_BLOCK_LEAVES) && (a_BlockType == E_BLOCK_LEAVES)) || ((OldBlockType == E_BLOCK_NEW_LEAVES) && (a_BlockType == E_BLOCK_NEW_LEAVES)) - ) || // ... OR ... - (OldBlockMeta != a_BlockMeta) || // ... the meta value is different OR ... - !( // ... the old and new blocktypes AREN'T liquids (because client doesn't need to distinguish betwixt them): - ((OldBlockType == E_BLOCK_STATIONARY_WATER) && (a_BlockType == E_BLOCK_WATER)) || // Replacing stationary water with water - ((OldBlockType == E_BLOCK_WATER) && (a_BlockType == E_BLOCK_STATIONARY_WATER)) || // Replacing water with stationary water - ((OldBlockType == E_BLOCK_STATIONARY_LAVA) && (a_BlockType == E_BLOCK_LAVA)) || // Replacing stationary water with water - ((OldBlockType == E_BLOCK_LAVA) && (a_BlockType == E_BLOCK_STATIONARY_LAVA)) // Replacing water with stationary water + ) && // ... AND ... + ( + (OldBlockMeta != a_BlockMeta) || // ... the meta value is different OR ... + !( // ... the old and new blocktypes AREN'T liquids (because client doesn't need to distinguish betwixt them): + ((OldBlockType == E_BLOCK_STATIONARY_WATER) && (a_BlockType == E_BLOCK_WATER)) || // Replacing stationary water with water + ((OldBlockType == E_BLOCK_WATER) && (a_BlockType == E_BLOCK_STATIONARY_WATER)) || // Replacing water with stationary water + ((OldBlockType == E_BLOCK_STATIONARY_LAVA) && (a_BlockType == E_BLOCK_LAVA)) || // Replacing stationary water with water + ((OldBlockType == E_BLOCK_LAVA) && (a_BlockType == E_BLOCK_STATIONARY_LAVA)) // Replacing water with stationary water + ) ) ) ) -- cgit v1.2.3