Always use root locale for case conversions

This commit is contained in:
md_5
2018-10-28 12:09:37 +11:00
parent 27f926cfc7
commit ed6b03d24a
9 changed files with 25 additions and 17 deletions

View File

@@ -16,6 +16,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
@@ -75,10 +76,10 @@ public class PluginManager
*/
public void registerCommand(Plugin plugin, Command command)
{
commandMap.put( command.getName().toLowerCase(), command );
commandMap.put( command.getName().toLowerCase( Locale.ROOT ), command );
for ( String alias : command.getAliases() )
{
commandMap.put( alias.toLowerCase(), command );
commandMap.put( alias.toLowerCase( Locale.ROOT ), command );
}
commandsByPlugin.put( plugin, command );
}
@@ -126,12 +127,12 @@ public class PluginManager
{
String[] split = commandLine.split( " ", -1 );
// Check for chat that only contains " "
if ( split.length == 0 )
if ( split.length == 0 || split[0].isEmpty() )
{
return false;
}
String commandName = split[0].toLowerCase();
String commandName = split[0].toLowerCase( Locale.ROOT );
if ( sender instanceof ProxiedPlayer && proxy.getDisabledCommands().contains( commandName ) )
{
return false;

View File

@@ -3,6 +3,7 @@ package net.md_5.bungee.command;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import java.util.Locale;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@@ -29,13 +30,13 @@ public abstract class PlayerCommand extends Command implements TabExecutor
@Override
public Iterable<String> onTabComplete(CommandSender sender, String[] args)
{
final String lastArg = ( args.length > 0 ) ? args[args.length - 1].toLowerCase() : "";
final String lastArg = ( args.length > 0 ) ? args[args.length - 1].toLowerCase( Locale.ROOT ) : "";
return Iterables.transform( Iterables.filter( ProxyServer.getInstance().getPlayers(), new Predicate<ProxiedPlayer>()
{
@Override
public boolean apply(ProxiedPlayer player)
{
return player.getName().toLowerCase().startsWith( lastArg );
return player.getName().toLowerCase( Locale.ROOT ).startsWith( lastArg );
}
} ), new Function<ProxiedPlayer, String>()
{

View File

@@ -1,6 +1,7 @@
package net.md_5.bungee.util;
import gnu.trove.strategy.HashingStrategy;
import java.util.Locale;
class CaseInsensitiveHashingStrategy implements HashingStrategy
{
@@ -10,12 +11,12 @@ class CaseInsensitiveHashingStrategy implements HashingStrategy
@Override
public int computeHashCode(Object object)
{
return ( (String) object ).toLowerCase().hashCode();
return ( (String) object ).toLowerCase( Locale.ROOT ).hashCode();
}
@Override
public boolean equals(Object o1, Object o2)
{
return o1.equals( o2 ) || ( o1 instanceof String && o2 instanceof String && ( (String) o1 ).toLowerCase().equals( ( (String) o2 ).toLowerCase() ) );
return o1.equals( o2 ) || ( o1 instanceof String && o2 instanceof String && ( (String) o1 ).toLowerCase( Locale.ROOT ).equals( ( (String) o2 ).toLowerCase( Locale.ROOT ) ) );
}
}