From 463fa48aec7a9f1c7101245c43c6895bf3734465 Mon Sep 17 00:00:00 2001 From: peterbell10 Date: Sat, 23 Sep 2017 17:47:46 +0100 Subject: [PATCH] cBlockArea: Fix performance regression (#4045) --- src/BlockArea.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/BlockArea.cpp b/src/BlockArea.cpp index b32851afc..5e66e4aec 100644 --- a/src/BlockArea.cpp +++ b/src/BlockArea.cpp @@ -835,7 +835,14 @@ void cBlockArea::Fill(int a_DataTypes, BLOCKTYPE a_BlockType, NIBBLETYPE a_Block // If the area contains block entities, remove those not matching and replace with whatever block entity block was filled if (HasBlockEntities() && ((a_DataTypes & baTypes) != 0)) { - RescanBlockEntities(); + if (cBlockEntity::IsBlockEntityBlockType(a_BlockType)) + { + RescanBlockEntities(); + } + else + { + ClearBlockEntities(*m_BlockEntities); + } } } @@ -888,7 +895,14 @@ void cBlockArea::FillRelCuboid(int a_MinRelX, int a_MaxRelX, int a_MinRelY, int // If the area contains block entities, remove those in the affected cuboid and replace with whatever block entity block was filled: if (HasBlockEntities() && ((a_DataTypes & baTypes) != 0)) { - RescanBlockEntities(); + if (cBlockEntity::IsBlockEntityBlockType(a_BlockType)) + { + RescanBlockEntities(); + } + else + { + ClearBlockEntities(*m_BlockEntities); + } } }