From 7f5757eccff7b81c17443ea4e0b4ce86e2d5dc04 Mon Sep 17 00:00:00 2001 From: LogicParrot Date: Mon, 18 Apr 2016 13:30:23 +0300 Subject: Reduced unnecessary block updates --- src/Blocks/BlockButton.h | 4 ++-- src/Blocks/BlockLeaves.h | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'src/Blocks') diff --git a/src/Blocks/BlockButton.h b/src/Blocks/BlockButton.h index b67ae7c97..6a162e331 100644 --- a/src/Blocks/BlockButton.h +++ b/src/Blocks/BlockButton.h @@ -33,7 +33,7 @@ public: // Set p the ON bit to on Meta |= 0x08; - a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta); + a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta, false); a_WorldInterface.WakeUpSimulators(a_BlockX, a_BlockY, a_BlockZ); a_WorldInterface.GetBroadcastManager().BroadcastSoundEffect("random.click", x, y, z, 0.5f, 0.6f); @@ -44,7 +44,7 @@ public: if (a_World.GetBlock(a_BlockX, a_BlockY, a_BlockZ) == m_BlockType) { // Block hasn't change in the meantime; set its meta - a_World.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, a_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) & 0x07); + a_World.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, a_World.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) & 0x07, false); a_World.WakeUpSimulators(a_BlockX, a_BlockY, a_BlockZ); a_World.BroadcastSoundEffect("random.click", x, y, z, 0.5f, 0.5f); } diff --git a/src/Blocks/BlockLeaves.h b/src/Blocks/BlockLeaves.h index 653fd19bb..84e186b4c 100644 --- a/src/Blocks/BlockLeaves.h +++ b/src/Blocks/BlockLeaves.h @@ -75,11 +75,12 @@ public: virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_WhichNeighbor) override { - // Unset 0x8 bit so this block gets checked for decay: NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ); - if ((Meta & 0x08) != 0) + + // Set 0x8 bit so this block gets checked for decay: + if ((Meta & 0x08) == 0) { - a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta & 0x7, false, false); + a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta | 0x8, true, false); } } @@ -92,7 +93,7 @@ public: return; } - if ((Meta & 0x8) != 0) + if ((Meta & 0x8) == 0) { // These leaves have been checked for decay lately and nothing around them changed return; @@ -116,10 +117,8 @@ public: if (HasNearLog(Area, BlockX, a_RelY, BlockZ)) { - // Wood found, the leaves stay; mark them as checked. - // There is no point in saving this to disk or informing the client - // So we use SetMetaQuiet - a_Chunk.SetMeta(a_RelX, a_RelY, a_RelZ, Meta | 0x8, false, false); + // Wood found, the leaves stay; unset the check bit + a_Chunk.SetMeta(a_RelX, a_RelY, a_RelZ, Meta ^ 0x8, true, false); return; } -- cgit v1.2.3