From dabba819025023212e860f8dee1a2766a379ffca Mon Sep 17 00:00:00 2001 From: wizjany Date: Thu, 19 Mar 2020 21:36:54 -0400 Subject: [PATCH] Allow expand to be used by console. (#1264) * Allow expand to be used by console. Also fix direction converter requiring a player. * Revert exception. (cherry picked from commit b4d2db3dee01d6af4f49d6ee1ea015dbd685839c) --- .../worldedit/command/ExpandCommands.java | 19 ++++++++++--------- .../argument/AbstractDirectionConverter.java | 4 +++- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ExpandCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ExpandCommands.java index bc93624e2..96910e63f 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ExpandCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ExpandCommands.java @@ -93,29 +93,30 @@ public class ExpandCommands { .action(parameters -> { expandVert( requireIV(Key.of(LocalSession.class), "localSession", parameters), - requireIV(Key.of(Player.class), "localSession", parameters) + requireIV(Key.of(Actor.class), "actor", parameters), + requireIV(Key.of(World.class), "world", parameters) ); return 1; }) .build(); } - private static void expandVert(LocalSession session, Player player) throws IncompleteRegionException { - Region region = session.getSelection(player.getWorld()); + private static void expandVert(LocalSession session, Actor actor, World world) throws IncompleteRegionException { + Region region = session.getSelection(world); try { int oldSize = region.getArea(); region.expand( - BlockVector3.at(0, (player.getWorld().getMaxY() + 1), 0), - BlockVector3.at(0, -(player.getWorld().getMaxY() + 1), 0)); - session.getRegionSelector(player.getWorld()).learnChanges(); + BlockVector3.at(0, (world.getMaxY() + 1), 0), + BlockVector3.at(0, -(world.getMaxY() + 1), 0)); + session.getRegionSelector(world).learnChanges(); int newSize = region.getArea(); - session.getRegionSelector(player.getWorld()).explainRegionAdjust(player, session); + session.getRegionSelector(world).explainRegionAdjust(actor, session); int changeSize = newSize - oldSize; - player.printInfo( + actor.printInfo( TranslatableComponent.of("worldedit.expand.expanded.vert", TextComponent.of(changeSize)) ); } catch (RegionOperationException e) { - player.printError(TextComponent.of(e.getMessage())); + actor.printError(TextComponent.of(e.getMessage())); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/AbstractDirectionConverter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/AbstractDirectionConverter.java index bd2a28067..06ade3a40 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/AbstractDirectionConverter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/AbstractDirectionConverter.java @@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableSet; import com.sk89q.worldedit.UnknownDirectionException; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.entity.Player; +import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.internal.annotation.Direction; import com.sk89q.worldedit.internal.annotation.MultiDirection; import com.sk89q.worldedit.util.formatting.text.Component; @@ -92,7 +93,8 @@ public abstract class AbstractDirectionConverter implements ArgumentConverter @Override public ConversionResult convert(String argument, InjectedValueAccess context) { - Player player = context.injectedValue(Key.of(Player.class)).orElse(null); + Player player = context.injectedValue(Key.of(Actor.class)) + .filter(Player.class::isInstance).map(Player.class::cast).orElse(null); try { return SuccessfulConversion.fromSingle(convertDirection(argument, player, includeDiagonals)); } catch (Exception e) {