mirror of
https://github.com/aikar/commands.git
synced 2026-05-31 06:11:55 +00:00
Optimize OfflinePlayer context (#306)
* Only allow valid usernames in OfflinePlayer context resolver * optimize OfflinePlayer context resolver
This commit is contained in:
@@ -43,6 +43,8 @@ import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static co.aikar.commands.ACFBukkitUtil.isValidName;
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
public class BukkitCommandContexts extends CommandContexts<BukkitCommandExecutionContext> {
|
||||
|
||||
@@ -129,11 +131,22 @@ public class BukkitCommandContexts extends CommandContexts<BukkitCommandExecutio
|
||||
});
|
||||
registerContext(OfflinePlayer.class, c -> {
|
||||
String name = c.popFirstArg();
|
||||
UUID uuid = null;
|
||||
OfflinePlayer offlinePlayer;
|
||||
if (c.hasFlag("uuid")) {
|
||||
uuid = UUID.fromString(name);
|
||||
UUID uuid;
|
||||
try {
|
||||
uuid = UUID.fromString(name);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new InvalidCommandArgument(MinecraftMessageKeys.NO_PLAYER_FOUND_OFFLINE,
|
||||
"{search}", name);
|
||||
}
|
||||
offlinePlayer = Bukkit.getOfflinePlayer(uuid);
|
||||
} else {
|
||||
if (!isValidName(name)) {
|
||||
throw new InvalidCommandArgument(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);
|
||||
}
|
||||
offlinePlayer = Bukkit.getOfflinePlayer(name);
|
||||
}
|
||||
OfflinePlayer offlinePlayer = uuid != null ? Bukkit.getOfflinePlayer(uuid) : Bukkit.getOfflinePlayer(name);
|
||||
if (offlinePlayer == null || (!offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline())) {
|
||||
throw new InvalidCommandArgument(MinecraftMessageKeys.NO_PLAYER_FOUND_OFFLINE,
|
||||
"{search}", name);
|
||||
|
||||
Reference in New Issue
Block a user