From 2824a92c19811c76d51aa0968c88cd5f50e62290 Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Wed, 10 Oct 2018 12:23:00 -0700 Subject: [PATCH] Fix some minor ordering bugs --- .../src/main/java/com/sk89q/worldedit/EditSession.java | 2 +- .../sk89q/worldedit/extent/reorder/ChunkBatchingExtent.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java index 2049be07d..5b74a8d9e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java @@ -192,7 +192,6 @@ public class EditSession implements Extent { extent = fastModeExtent = new FastModeExtent(world, false); extent = survivalExtent = new SurvivalModeExtent(extent, world); extent = quirkExtent = new BlockQuirkExtent(extent, world); - extent = chunkBatchingExtent = new ChunkBatchingExtent(extent); extent = chunkLoadingExtent = new ChunkLoadingExtent(extent, world); extent = cacheExtent = new LastAccessExtentCache(extent); extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_CHANGE); @@ -201,6 +200,7 @@ public class EditSession implements Extent { // This extent can be skipped by calling rawSetBlock() extent = reorderExtent = new MultiStageReorder(extent, false); + extent = chunkBatchingExtent = new ChunkBatchingExtent(extent); extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_REORDER); // These extents can be skipped by calling smartSetBlock() diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/ChunkBatchingExtent.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/ChunkBatchingExtent.java index c5be5c565..b819bcac4 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/ChunkBatchingExtent.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/ChunkBatchingExtent.java @@ -90,10 +90,14 @@ public class ChunkBatchingExtent extends AbstractDelegateExtent { } return new Operation() { - private final Iterator batchIterator = batches.values().iterator(); + // we get modified between create/resume -- only create this on resume to prevent CME + private Iterator batchIterator; @Override public Operation resume(RunContext run) throws WorldEditException { + if (batchIterator == null) { + batchIterator = batches.values().iterator(); + } if (!batchIterator.hasNext()) { return null; }