diff --git a/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java b/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java index bfd34a21..867f656d 100644 --- a/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java +++ b/sponge/src/main/java/co/aikar/commands/SpongeCommandContexts.java @@ -30,6 +30,10 @@ import org.jetbrains.annotations.Nullable; import org.spongepowered.api.command.CommandSource; import org.spongepowered.api.entity.living.player.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + @SuppressWarnings("WeakerAccess") public class SpongeCommandContexts extends CommandContexts { @@ -51,7 +55,30 @@ public class SpongeCommandContexts extends CommandContexts { + SpongeCommandIssuer issuer = c.getIssuer(); + final String search = c.popFirstArg(); + boolean allowMissing = c.hasFlag("allowmissing"); + Set players = new HashSet<>(); + Pattern split = ACFPatterns.COMMA; + String splitter = c.getFlagValue("splitter", (String) null); + if (splitter != null) { + split = Pattern.compile(Pattern.quote(splitter)); + } + for (String lookup : split.split(search)) { + OnlinePlayer player = getOnlinePlayer(issuer, lookup, allowMissing); + if (player != null) { + players.add(player); + } + } + if (players.isEmpty() && !c.hasFlag("allowempty")) { + issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER, + "{search}", search); + throw new InvalidCommandArgument(false); + } + return players.toArray(new OnlinePlayer[players.size()]); + }); } @Nullable