diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_14/BukkitGetBlocks_1_14.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_14/BukkitGetBlocks_1_14.java index 32365cfbd..4d14bfe92 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_14/BukkitGetBlocks_1_14.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_14/BukkitGetBlocks_1_14.java @@ -262,10 +262,6 @@ public class BukkitGetBlocks_1_14 extends CharGetBlocks { char[] setArr = set.load(layer); ChunkSection newSection; ChunkSection existingSection = sections[layer]; - - //ensure that the server doesn't try to tick the chunksection while we're editing it. - BukkitAdapter_1_14.fieldTickingBlockCount.set(existingSection, (short) 0); - if (existingSection == null) { newSection = BukkitAdapter_1_14.newChunkSection(layer, setArr); if (BukkitAdapter_1_14.setSectionAtomic(sections, null, newSection, layer)) { @@ -279,6 +275,10 @@ public class BukkitGetBlocks_1_14 extends CharGetBlocks { } } } + + //ensure that the server doesn't try to tick the chunksection while we're editing it. + BukkitAdapter_1_14.fieldTickingBlockCount.set(existingSection, (short) 0); + DelegateLock lock = BukkitAdapter_1_14.applyLock(existingSection); synchronized (this) { synchronized (lock) { diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java index 37ce658a7..abf00c2fb 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15/BukkitGetBlocks_1_15.java @@ -270,10 +270,6 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { char[] setArr = set.load(layer); ChunkSection newSection; ChunkSection existingSection = sections[layer]; - - //ensure that the server doesn't try to tick the chunksection while we're editing it. - BukkitAdapter_1_15.fieldTickingBlockCount.set(existingSection, (short) 0); - if (existingSection == null) { newSection = BukkitAdapter_1_15.newChunkSection(layer, setArr); if (BukkitAdapter_1_15.setSectionAtomic(sections, null, newSection, layer)) { @@ -287,6 +283,10 @@ public class BukkitGetBlocks_1_15 extends CharGetBlocks { } } } + + //ensure that the server doesn't try to tick the chunksection while we're editing it. + BukkitAdapter_1_15.fieldTickingBlockCount.set(existingSection, (short) 0); + DelegateLock lock = BukkitAdapter_1_15.applyLock(existingSection); synchronized (this) { synchronized (lock) { diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java index e8fb25b4a..ea0d2c089 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_15_2/BukkitGetBlocks_1_15_2.java @@ -282,10 +282,6 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { char[] setArr = set.load(layer); ChunkSection newSection; ChunkSection existingSection = sections[layer]; - - //ensure that the server doesn't try to tick the chunksection while we're editing it. - BukkitAdapter_1_15_2.fieldTickingBlockCount.set(existingSection, (short) 0); - if (existingSection == null) { newSection = BukkitAdapter_1_15_2.newChunkSection(layer, setArr); if (BukkitAdapter_1_15_2.setSectionAtomic(sections, null, newSection, layer)) { @@ -299,7 +295,11 @@ public class BukkitGetBlocks_1_15_2 extends CharGetBlocks { } } } + BukkitAdapter_1_15_2.fieldTickingBlockCount.set(existingSection, (short) 0); + + //ensure that the server doesn't try to tick the chunksection while we're editing it. DelegateLock lock = BukkitAdapter_1_15_2.applyLock(existingSection); + synchronized (this) { synchronized (lock) { lock.untilFree();