Support looking up offline players

This commit is contained in:
Aikar
2018-01-05 19:49:53 -05:00
parent a1c9382251
commit f591117733
3 changed files with 17 additions and 0 deletions
@@ -28,6 +28,7 @@ import co.aikar.commands.contexts.OnlinePlayer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.command.BlockCommandSender;
import org.bukkit.command.CommandSender;
@@ -38,6 +39,7 @@ 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;
@@ -120,6 +122,19 @@ public class BukkitCommandContexts extends CommandContexts<BukkitCommandExecutio
return onlinePlayer != null ? onlinePlayer.getPlayer() : null;
}
});
registerContext(OfflinePlayer.class, c -> {
String name = c.popFirstArg();
UUID uuid = null;
if (c.hasFlag("uuid")) {
uuid = UUID.fromString(name);
}
OfflinePlayer offlinePlayer = uuid != null ? Bukkit.getOfflinePlayer(uuid) : Bukkit.getOfflinePlayer(name);
if (offlinePlayer == null) {
throw new InvalidCommandArgument(MinecraftMessageKeys.NO_PLAYER_FOUND_OFFLINE,
"{search}", name);
}
return offlinePlayer;
});
registerContext(ChatColor.class, c -> {
String first = c.popFirstArg();
Stream<ChatColor> colors = Stream.of(ChatColor.values());
@@ -34,6 +34,7 @@ public enum MinecraftMessageKeys implements MessageKeyProvider {
IS_NOT_A_VALID_NAME,
MULTIPLE_PLAYERS_MATCH,
NO_PLAYER_FOUND_SERVER,
NO_PLAYER_FOUND_OFFLINE,
NO_PLAYER_FOUND,
LOCATION_PLEASE_SPECIFY_WORLD,
LOCATION_PLEASE_SPECIFY_XYZ,
@@ -31,6 +31,7 @@ acf-minecraft.username_too_short = Error: Username too short, must be at least t
acf-minecraft.is_not_a_valid_name = Error: <c2>{name}</c2> is not a valid username.
acf-minecraft.multiple_players_match = Error: Multiple players matched <c2>{search}</c2> <c3>({all})</c3>, please be more specific.
acf-minecraft.no_player_found_server = No player matching <c2>{search}</c2> is connected to this server.
acf-minecraft.no_player_found_offline = No player matching <c2>{search}</c2> could be found.
acf-minecraft.no_player_found = No player matching <c2>{search}</c2> could be found.
acf-minecraft.location_please_specify_world = Error: Please specify world. Example: <c2>world:x,y,z</c2>.
acf-minecraft.location_please_specify_xyz = Error: Please x,y,z. Example: <c2>world:x,y,z</c2>.