diff --git a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandContexts.java b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandContexts.java index 1f490ba8..480ea29d 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandContexts.java +++ b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandContexts.java @@ -32,6 +32,7 @@ import org.jvnet.hk2.annotations.Service; @Service public class MVCommandContexts extends PaperCommandContexts { + private final MVCommandManager mvCommandManager; private final DestinationsProvider destinationsProvider; private final MVWorldManager worldManager; private final MVCoreConfig config; @@ -44,11 +45,13 @@ public class MVCommandContexts extends PaperCommandContexts { MVCoreConfig config ) { super(mvCommandManager); + this.mvCommandManager = mvCommandManager; this.destinationsProvider = destinationsProvider; this.worldManager = worldManager; this.config = config; registerIssuerOnlyContext(BukkitCommandIssuer.class, BukkitCommandExecutionContext::getIssuer); + registerIssuerOnlyContext(MVCommandIssuer.class, this::parseMVCommandIssuer); registerOptionalContext(ContentFilter.class, this::parseContentFilter); registerContext(ParsedDestination.class, this::parseDestination); registerContext(GameRule.class, this::parseGameRule); @@ -60,6 +63,13 @@ public class MVCommandContexts extends PaperCommandContexts { registerIssuerAwareContext(Player[].class, this::parsePlayerArray); } + private MVCommandIssuer parseMVCommandIssuer(BukkitCommandExecutionContext context) { + if (context.getIssuer() instanceof MVCommandIssuer) { + return (MVCommandIssuer) context.getIssuer(); + } + return mvCommandManager.getCommandIssuer(context.getSender()); + } + private ContentFilter parseContentFilter(BukkitCommandExecutionContext context) { if (Strings.isNullOrEmpty(context.getFirstArg())) { return DefaultContentFilter.get();