From b8f37feef1612a784c3ccd3fd2d86721da5f85f1 Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Sat, 9 Jun 2018 06:14:53 +1000 Subject: [PATCH] Fix TE CME on sponge --- .../boydti/fawe/sponge/v1_11/SpongeChunk_1_11.java | 13 +++++++++---- .../boydti/fawe/sponge/v1_12/SpongeChunk_1_12.java | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) 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(); } } }