diff --git a/worldedit-bukkit/adapters/adapter-1_20_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R2/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_20_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R2/PaperweightPlacementStateProcessor.java index 24b0fe129d..e87757fd1b 100644 --- a/worldedit-bukkit/adapters/adapter-1_20_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R2/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_20_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R2/PaperweightPlacementStateProcessor.java @@ -34,11 +34,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_20_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R3/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_20_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R3/PaperweightPlacementStateProcessor.java index fd12e5f380..11d2b0c783 100644 --- a/worldedit-bukkit/adapters/adapter-1_20_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R3/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_20_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R3/PaperweightPlacementStateProcessor.java @@ -34,11 +34,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_20_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R4/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_20_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R4/PaperweightPlacementStateProcessor.java index cf52c30cf8..720d0547db 100644 --- a/worldedit-bukkit/adapters/adapter-1_20_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R4/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_20_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R4/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlacementStateProcessor.java index 14ae451a6c..b2b6c074f1 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlacementStateProcessor.java index 6a77322a67..aea0458cc7 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlacementStateProcessor.java index 1cee9692bf..5619bd5b41 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlacementStateProcessor.java index 23d649a456..898559a3b0 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlacementStateProcessor.java index 6d83af0ba0..9d3b1dd60d 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlacementStateProcessor.java b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlacementStateProcessor.java index ff656a5f2a..daae5de4c3 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlacementStateProcessor.java +++ b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlacementStateProcessor.java @@ -35,11 +35,7 @@ public class PaperweightPlacementStateProcessor extends PlacementStateProcessor public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Region region) { super(extent, mask, region); - World world = ExtentTraverser.getWorldFromExtent(extent); - if (world == null) { - throw new UnsupportedOperationException( - "World is required for PlacementStateProcessor but none found in given extent."); - } + World world = getWorldFromExtent(extent); BukkitWorld bukkitWorld; if (world instanceof WorldWrapper wrapper) { bukkitWorld = (BukkitWorld) wrapper.getParent(); diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/processor/PlacementStateProcessor.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/processor/PlacementStateProcessor.java index 165a1b3159..3028c5f3ce 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/processor/PlacementStateProcessor.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/processor/PlacementStateProcessor.java @@ -13,6 +13,7 @@ import com.fastasyncworldedit.core.queue.IChunkGet; import com.fastasyncworldedit.core.queue.IChunkSet; import com.fastasyncworldedit.core.registry.state.PropertyKey; +import com.fastasyncworldedit.core.util.ExtentTraverser; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.AbstractDelegateExtent; import com.sk89q.worldedit.extent.Extent; @@ -24,6 +25,7 @@ import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.registry.state.Property; import com.sk89q.worldedit.util.Direction; +import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockCategories; import com.sk89q.worldedit.world.block.BlockCategory; @@ -114,6 +116,18 @@ protected PlacementStateProcessor( this.finished = finished; } + protected static World getWorldFromExtent(Extent extent) throws UnsupportedOperationException { + World world = ExtentTraverser.getWorldFromExtent(extent); + if (world == null) { + throw new UnsupportedOperationException( + "World is required for PlacementStateProcessor but none found in given extent (" + extent + .getClass() + .getName() + ")."); + } + return world; + + } + private static void setup() { NullExtent nullExtent = new NullExtent( com.sk89q.worldedit.extent.NullExtent.INSTANCE, diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/ExtentTraverser.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/ExtentTraverser.java index 9b584fa5df..a436a2a3c9 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/ExtentTraverser.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/util/ExtentTraverser.java @@ -12,6 +12,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.lang.reflect.Field; +import java.util.Optional; public class ExtentTraverser { @@ -45,7 +46,8 @@ public static World getWorldFromExtent(Extent extent) { } else if (extent instanceof ParallelQueueExtent pqe) { return ((SingleThreadQueueExtent) pqe.getExtent()).getWorld(); } else { - return new ExtentTraverser<>(extent).findAndGet(World.class); + return Optional.ofNullable(new ExtentTraverser<>(extent).findAndGet(World.class)).orElseGet(() -> Optional.ofNullable( + new ExtentTraverser<>(extent).findAndGet(EditSession.class)).map(EditSession::getWorld).orElse(null)); } }