3
0
Mirror von https://github.com/PaperMC/Velocity.git synchronisiert 2024-11-06 00:00:47 +01:00

Add matchPlayer and matchServer

Dieser Commit ist enthalten in:
Crypnotic 2019-03-02 13:25:37 -06:00
Ursprung c8e3e7ff94
Commit b35fd05d2e
2 geänderte Dateien mit 47 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -76,6 +76,22 @@ public interface ProxyServer {
*/
Collection<RegisteredServer> getAllServers();
/**
* Matches all {@link Player}s whose names start with the provided partial name.
*
* @param partialName the partial name to check for
* @return a collection of mathed {@link Player}s
*/
Collection<Player> matchPlayer(String partialName);
/**
* Matches all {@link RegisteredServer}s whose names start with the provided partial name.
*
* @param partialName the partial name to check for
* @return a collection of mathed {@link RegisteredServer}s
*/
Collection<RegisteredServer> matchServer(String partialName);
/**
* Registers a server with this proxy. A server with this name should not already exist.
*

Datei anzeigen

@ -50,13 +50,16 @@ import java.nio.file.Paths;
import java.security.KeyPair;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import net.kyori.text.Component;
import net.kyori.text.TextComponent;
import net.kyori.text.serializer.GsonComponentSerializer;
@ -442,6 +445,34 @@ public class VelocityServer implements ProxyServer {
}
}
@Override
public Collection<Player> matchPlayer(String partialName) {
Objects.requireNonNull(partialName);
Optional<Player> exactMatch = getPlayer(partialName);
if (exactMatch.isPresent()) {
return Collections.singleton(exactMatch.get());
}
return getAllPlayers().stream().filter(p -> p.getUsername()
.regionMatches(true, 0, partialName, 0, partialName.length()))
.collect(Collectors.toList());
}
@Override
public Collection<RegisteredServer> matchServer(String partialName) {
Objects.requireNonNull(partialName);
Optional<RegisteredServer> exactMatch = getServer(partialName);
if (exactMatch.isPresent()) {
return Collections.singleton(exactMatch.get());
}
return getAllServers().stream().filter(s -> s.getServerInfo().getName()
.regionMatches(true, 0, partialName, 0, partialName.length()))
.collect(Collectors.toList());
}
@Override
public Collection<Player> getAllPlayers() {
return ImmutableList.copyOf(connectionsByUuid.values());