mirror of
https://github.com/aikar/commands.git
synced 2026-05-31 06:11:55 +00:00
Support looking up offline players
This commit is contained in:
@@ -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>.
|
||||
|
||||
Reference in New Issue
Block a user