diff --git a/bukkit/src/main/java/co/aikar/commands/BukkitCommandContexts.java b/bukkit/src/main/java/co/aikar/commands/BukkitCommandContexts.java index dcedc6aa..4a6df1e3 100644 --- a/bukkit/src/main/java/co/aikar/commands/BukkitCommandContexts.java +++ b/bukkit/src/main/java/co/aikar/commands/BukkitCommandContexts.java @@ -23,8 +23,7 @@ package co.aikar.commands; -import co.aikar.commands.annotation.Optional; -import co.aikar.commands.contexts.bukkit.OnlinePlayer; +import co.aikar.commands.bukkit.contexts.OnlinePlayer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -40,7 +39,6 @@ import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.Set; import java.util.UUID; -import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -51,7 +49,11 @@ public class BukkitCommandContexts extends CommandContexts getOnlinePlayer(c.getIssuer(), c.popFirstArg(), c.hasAnnotation(Optional.class))); + registerContext(OnlinePlayer.class, c -> getOnlinePlayer(c.getIssuer(), c.popFirstArg(), c.isOptional())); + registerContext(co.aikar.commands.contexts.OnlinePlayer.class, c -> { + OnlinePlayer onlinePlayer = getOnlinePlayer(c.getIssuer(), c.popFirstArg(), c.isOptional()); + return onlinePlayer != null ? new co.aikar.commands.contexts.OnlinePlayer(onlinePlayer.getPlayer()) : null; + }); registerContext(OnlinePlayer[].class, (c) -> { BukkitCommandIssuer issuer = c.getIssuer(); final String search = c.popFirstArg(); @@ -92,7 +94,7 @@ public class BukkitCommandContexts extends CommandContexts { - boolean isOptional = c.hasAnnotation(Optional.class); + boolean isOptional = c.isOptional(); CommandSender sender = c.getSender(); boolean isPlayerSender = sender instanceof Player; if (!c.hasFlag("other")) { diff --git a/bukkit/src/main/java/co/aikar/commands/contexts/bukkit/OnlinePlayer.java b/bukkit/src/main/java/co/aikar/commands/bukkit/contexts/OnlinePlayer.java similarity index 93% rename from bukkit/src/main/java/co/aikar/commands/contexts/bukkit/OnlinePlayer.java rename to bukkit/src/main/java/co/aikar/commands/bukkit/contexts/OnlinePlayer.java index c6900783..7d3fc1a3 100644 --- a/bukkit/src/main/java/co/aikar/commands/contexts/bukkit/OnlinePlayer.java +++ b/bukkit/src/main/java/co/aikar/commands/bukkit/contexts/OnlinePlayer.java @@ -21,7 +21,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package co.aikar.commands.contexts.bukkit; +package co.aikar.commands.bukkit.contexts; import org.bukkit.entity.Player; @@ -53,8 +53,6 @@ public class OnlinePlayer { @Override public String toString() { - return "OnlinePlayer{" + - "player=" + player + - '}'; + return "OnlinePlayer{player=" + player + '}'; } } diff --git a/bukkit/src/main/java/co/aikar/commands/contexts/OnlinePlayer.java b/bukkit/src/main/java/co/aikar/commands/contexts/OnlinePlayer.java index df69be83..1825722c 100644 --- a/bukkit/src/main/java/co/aikar/commands/contexts/OnlinePlayer.java +++ b/bukkit/src/main/java/co/aikar/commands/contexts/OnlinePlayer.java @@ -26,10 +26,10 @@ package co.aikar.commands.contexts; import org.bukkit.entity.Player; /** - * @deprecated Use {@link co.aikar.commands.contexts.bukkit.OnlinePlayer instead} + * @deprecated Use {@link co.aikar.commands.bukkit.contexts.OnlinePlayer instead} */ @Deprecated -public class OnlinePlayer extends co.aikar.commands.contexts.bukkit.OnlinePlayer { +public class OnlinePlayer extends co.aikar.commands.bukkit.contexts.OnlinePlayer { public OnlinePlayer(Player player) { super(player); } diff --git a/bungee/src/main/java/co/aikar/commands/BungeeCommandContexts.java b/bungee/src/main/java/co/aikar/commands/BungeeCommandContexts.java index 1f189a85..93a55c94 100644 --- a/bungee/src/main/java/co/aikar/commands/BungeeCommandContexts.java +++ b/bungee/src/main/java/co/aikar/commands/BungeeCommandContexts.java @@ -25,10 +25,11 @@ package co.aikar.commands; import co.aikar.commands.annotation.Optional; -import co.aikar.commands.contexts.OnlineProxiedPlayer; +import co.aikar.commands.bungee.contexts.OnlinePlayer; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; +import org.jetbrains.annotations.Nullable; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -37,15 +38,10 @@ public class BungeeCommandContexts extends CommandContexts { - ProxiedPlayer proxiedPlayer = ACFBungeeUtil.findPlayerSmart(c.getIssuer(), c.popFirstArg()); - if (proxiedPlayer == null) { - if (c.hasAnnotation(Optional.class)) { - return null; - } - throw new InvalidCommandArgument(false); - } - return new OnlineProxiedPlayer(proxiedPlayer); + registerContext(OnlinePlayer.class, this::getOnlinePlayer); + registerContext(co.aikar.commands.contexts.OnlineProxiedPlayer.class, c -> { + OnlinePlayer onlinePlayer = getOnlinePlayer(c); + return onlinePlayer != null ? new co.aikar.commands.contexts.OnlineProxiedPlayer(onlinePlayer.getPlayer()) : null; }); registerIssuerAwareContext(CommandSender.class, BungeeCommandExecutionContext::getSender); registerIssuerAwareContext(ProxiedPlayer.class, (c) -> { @@ -80,4 +76,16 @@ public class BungeeCommandContexts extends CommandContexts