public static ProxiedPlayer findPlayerSmart(CommandIssuer issuer, String search) {
CommandSender requester = issuer.getIssuer();
String name = ACFUtil.replace(search, ":confirm", "");
if (name.length() < 3) {
issuer.sendError(MinecraftMessageKeys.USERNAME_TOO_SHORT);
return null;
}
if (!isValidName(name)) {
issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);
return null;
}
List<ProxiedPlayer> matches = new ArrayList<>(ProxyServer.getInstance().matchPlayer(name));
if (matches.size() > 1) {
String allMatches = matches.stream().map(ProxiedPlayer::getName).collect(Collectors.joining(", "));
issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH,
"{search}", name, "{all}", allMatches);
return null;
}
if (matches.isEmpty()) {
issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER,
"{search}", name);
return null;
}
return matches.get(0);
}