From 17d89ad2168acbb27881795b821daa54eb0163f1 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 23 Feb 2019 21:23:35 -0500 Subject: [PATCH] More work towards relocating OnlinePlayer context This context was conflicting with each other over multiple ACF modules, so if someone wanted to use multiple ACF's in same jar, it would clash and not work. The PR to move these was incomplete and this finishes fixing the context handlers to support new and old. --- .../aikar/commands/BukkitCommandContexts.java | 12 ++-- .../contexts}/OnlinePlayer.java | 6 +- .../aikar/commands/contexts/OnlinePlayer.java | 4 +- .../aikar/commands/BungeeCommandContexts.java | 28 ++++++--- .../bungee/contexts/OnlinePlayer.java | 59 ++++++++++++++++++ .../contexts/OnlineProxiedPlayer.java | 61 +++---------------- .../java/co/aikar/acfexample/SomeCommand.java | 2 +- .../aikar/commands/SpongeCommandContexts.java | 7 ++- .../aikar/commands/contexts/OnlinePlayer.java | 4 +- .../contexts}/OnlinePlayer.java | 6 +- .../commands/VelocityCommandContexts.java | 31 ++++++---- .../aikar/commands/contexts/OnlinePlayer.java | 4 +- .../contexts}/OnlinePlayer.java | 6 +- 13 files changed, 128 insertions(+), 102 deletions(-) rename bukkit/src/main/java/co/aikar/commands/{contexts/bukkit => bukkit/contexts}/OnlinePlayer.java (93%) create mode 100644 bungee/src/main/java/co/aikar/commands/bungee/contexts/OnlinePlayer.java rename sponge/src/main/java/co/aikar/commands/{contexts/sponge => sponge/contexts}/OnlinePlayer.java (93%) rename velocity/src/main/java/co/aikar/commands/{contexts/velocity => velocity/contexts}/OnlinePlayer.java (93%) 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