diff --git a/sponge111/src/main/java/com/boydti/fawe/sponge/v1_11/SpongeChunk_1_11.java b/sponge111/src/main/java/com/boydti/fawe/sponge/v1_11/SpongeChunk_1_11.java index 519581f1..e44231cf 100644 --- a/sponge111/src/main/java/com/boydti/fawe/sponge/v1_11/SpongeChunk_1_11.java +++ b/sponge111/src/main/java/com/boydti/fawe/sponge/v1_11/SpongeChunk_1_11.java @@ -259,6 +259,7 @@ public class SpongeChunk_1_11 extends CharFaweChunk { // Trim tiles if (!tiles.isEmpty()) { synchronized (SpongeChunk_1_11.class) { + List invalidate = null; Set> entryset = tiles.entrySet(); Iterator> iterator = entryset.iterator(); while (iterator.hasNext()) { @@ -274,10 +275,14 @@ public class SpongeChunk_1_11 extends CharFaweChunk { } int k = FaweCache.CACHE_J[ly][lz][lx]; if (array[k] != 0) { - synchronized (SpongeChunk_1_11.class) { - iterator.remove(); - tile.getValue().invalidate(); - } + iterator.remove(); + if (invalidate == null) invalidate = new ArrayList<>(); + invalidate.add(tile.getValue()); + } + } + if (invalidate != null) { + for (TileEntity tile : invalidate) { + tile.invalidate(); } } } diff --git a/sponge112/src/main/java/com/boydti/fawe/sponge/v1_12/SpongeChunk_1_12.java b/sponge112/src/main/java/com/boydti/fawe/sponge/v1_12/SpongeChunk_1_12.java index 956eb8d1..0e5ec1a6 100644 --- a/sponge112/src/main/java/com/boydti/fawe/sponge/v1_12/SpongeChunk_1_12.java +++ b/sponge112/src/main/java/com/boydti/fawe/sponge/v1_12/SpongeChunk_1_12.java @@ -259,6 +259,7 @@ public class SpongeChunk_1_12 extends CharFaweChunk { // Trim tiles if (!tiles.isEmpty()) { synchronized (SpongeChunk_1_12.class) { + List invalidate = null; Set> entryset = tiles.entrySet(); Iterator> iterator = entryset.iterator(); while (iterator.hasNext()) { @@ -274,10 +275,14 @@ public class SpongeChunk_1_12 extends CharFaweChunk { } int k = FaweCache.CACHE_J[ly][lz][lx]; if (array[k] != 0) { - synchronized (SpongeChunk_1_12.class) { - iterator.remove(); - tile.getValue().invalidate(); - } + iterator.remove(); + if (invalidate == null) invalidate = new ArrayList<>(); + invalidate.add(tile.getValue()); + } + } + if (invalidate != null) { + for (TileEntity tile : invalidate) { + tile.invalidate(); } } }