From a88f6b84308e9edde72385926f4a90fa3977d114 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Wed, 26 Dec 2018 18:15:17 +1000 Subject: [PATCH] Minor improvements to the server side CUI --- .../com/sk89q/worldedit/LocalSession.java | 24 +++++++++---------- .../selector/CuboidRegionSelector.java | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) 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 9b117c918..5d1c50806 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/LocalSession.java @@ -657,23 +657,25 @@ public class LocalSession { return; // If it's not enabled, ignore this. } - // Remove the old block. - if (cuiTemporaryBlock != null) { - player.sendFakeBlock(cuiTemporaryBlock, null); - cuiTemporaryBlock = null; - } - BaseBlock block = ServerCUIHandler.createStructureBlock(player); if (block != null) { // If it's null, we don't need to do anything. The old was already removed. Map tags = block.getNbtData().getValue(); - cuiTemporaryBlock = BlockVector3.at( + BlockVector3 tempCuiTemporaryBlock = BlockVector3.at( ((IntTag) tags.get("x")).getValue(), ((IntTag) tags.get("y")).getValue(), ((IntTag) tags.get("z")).getValue() ); - + if (cuiTemporaryBlock != null && !tempCuiTemporaryBlock.equals(cuiTemporaryBlock)) { + // Update the existing block if it's the same location + player.sendFakeBlock(cuiTemporaryBlock, null); + } + cuiTemporaryBlock = tempCuiTemporaryBlock; player.sendFakeBlock(cuiTemporaryBlock, block); + } else if (cuiTemporaryBlock != null) { + // Remove the old block + player.sendFakeBlock(cuiTemporaryBlock, null); + cuiTemporaryBlock = null; } } @@ -713,10 +715,8 @@ public class LocalSession { public void dispatchCUISelection(Actor actor) { checkNotNull(actor); - if (!hasCUISupport) { - if (useServerCUI) { - updateServerCUI(actor); - } + if (!hasCUISupport && useServerCUI) { + updateServerCUI(actor); return; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java index 9eab91500..c9fd982a9 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/selector/CuboidRegionSelector.java @@ -228,6 +228,8 @@ public class CuboidRegionSelector implements RegionSelector, CUIRegion { public void clear() { position1 = null; position2 = null; + region.setPos1(BlockVector3.ZERO); + region.setPos2(BlockVector3.ZERO); } @Override