From 3c737e23005c531ef2978532cdaf089072c16008 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 6 Aug 2019 21:43:24 +1000 Subject: [PATCH] Clear the world override if the selector is called on another world. --- .../src/main/java/com/sk89q/worldedit/LocalSession.java | 6 ++++++ .../com/sk89q/worldedit/command/tool/SelectionWand.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java index 3500323da8..0b85b6cd27 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java @@ -326,6 +326,9 @@ public RegionSelector getRegionSelector(World world) { if (selector.getWorld() == null || !selector.getWorld().equals(world)) { selector.setWorld(world); selector.clear(); + if (hasWorldOverride() && !world.equals(getWorldOverride())) { + setWorldOverride(null); + } } return selector; } @@ -341,6 +344,9 @@ public void setRegionSelector(World world, RegionSelector selector) { checkNotNull(selector); selector.setWorld(world); this.selector = selector; + if (hasWorldOverride() && !world.equals(getWorldOverride())) { + setWorldOverride(null); + } } /** diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/SelectionWand.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/SelectionWand.java index 43b5f1ea07..fcc83209c1 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/SelectionWand.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/SelectionWand.java @@ -34,8 +34,8 @@ public class SelectionWand implements DoubleActionBlockTool { @Override public boolean actSecondary(Platform server, LocalConfiguration config, Player player, LocalSession session, Location clicked) { RegionSelector selector = session.getRegionSelector(player.getWorld()); - BlockVector3 blockPoint = clicked.toVector().toBlockPoint(); + if (selector.selectPrimary(blockPoint, ActorSelectorLimits.forActor(player))) { selector.explainPrimarySelection(player, session, blockPoint); } @@ -46,6 +46,7 @@ public boolean actSecondary(Platform server, LocalConfiguration config, Player p public boolean actPrimary(Platform server, LocalConfiguration config, Player player, LocalSession session, Location clicked) { RegionSelector selector = session.getRegionSelector(player.getWorld()); BlockVector3 blockPoint = clicked.toVector().toBlockPoint(); + if (selector.selectSecondary(blockPoint, ActorSelectorLimits.forActor(player))) { selector.explainSecondarySelection(player, session, blockPoint); }