Add matchPlayer API

This commit is contained in:
md_5 2014-06-23 17:26:30 +10:00
parent 59ba644623
commit e54388a5e0
2 changed files with 37 additions and 0 deletions

View File

@ -282,4 +282,14 @@ public abstract class ProxyServer
*/
public abstract ProxyConfig getConfig();
/**
* Attempts to match any players with the given name, and returns a list of
* all possible matches.
*
* @param name the (partial) name to match
* @return list of all possible players, singleton if there is an exact
* match
*/
public abstract Collection<ProxiedPlayer> matchPlayer(String name);
}

View File

@ -1,5 +1,9 @@
package net.md_5.bungee;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.gson.GsonBuilder;
import net.md_5.bungee.api.Favicon;
import net.md_5.bungee.api.ServerPing;
@ -581,8 +585,31 @@ public class BungeeCord extends ProxyServer
return new Custom( player );
}
@Override
public Collection<String> getDisabledCommands()
{
return config.getDisabledCommands();
}
@Override
public Collection<ProxiedPlayer> matchPlayer(final String partialName)
{
Preconditions.checkNotNull( partialName, "partialName" );
ProxiedPlayer exactMatch = getPlayer( partialName );
if ( exactMatch != null )
{
return Collections.singleton( exactMatch );
}
return Sets.newHashSet( Iterables.find( getPlayers(), new Predicate<ProxiedPlayer>()
{
@Override
public boolean apply(ProxiedPlayer input)
{
return input.getName().toLowerCase().contains( partialName.toLowerCase() );
}
} ) );
}
}