mirror of
https://github.com/lucko/LuckPerms.git
synced 2025-08-30 17:49:48 +02:00
Fix toLowerCase/toUpperCase locale sensitivity
This commit is contained in:
@@ -46,6 +46,7 @@ import java.lang.reflect.Field;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
@@ -239,7 +240,7 @@ public class LuckPermsPermissionAttachment extends PermissionAttachment {
|
||||
Objects.requireNonNull(name, "name is null");
|
||||
Preconditions.checkArgument(!name.isEmpty(), "name is empty");
|
||||
|
||||
String permission = name.toLowerCase();
|
||||
String permission = name.toLowerCase(Locale.ROOT);
|
||||
|
||||
Boolean previous = this.perms.put(permission, value);
|
||||
if (previous != null && previous == value) {
|
||||
@@ -264,7 +265,7 @@ public class LuckPermsPermissionAttachment extends PermissionAttachment {
|
||||
Objects.requireNonNull(name, "name is null");
|
||||
Preconditions.checkArgument(!name.isEmpty(), "name is empty");
|
||||
|
||||
String permission = name.toLowerCase();
|
||||
String permission = name.toLowerCase(Locale.ROOT);
|
||||
|
||||
Boolean previous = this.perms.remove(permission);
|
||||
if (previous == null) {
|
||||
|
@@ -43,6 +43,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -140,7 +141,7 @@ public final class LuckPermsDefaultsMap implements Map<Boolean, Set<Permission>>
|
||||
protected @NonNull Map<String, Boolean> supply() {
|
||||
Map<String, Boolean> builder = new HashMap<>();
|
||||
for (Permission perm : LuckPermsDefaultsMap.this.get(this.op)) {
|
||||
String name = perm.getName().toLowerCase();
|
||||
String name = perm.getName().toLowerCase(Locale.ROOT);
|
||||
builder.put(name, true);
|
||||
for (Map.Entry<String, Boolean> child : LuckPermsDefaultsMap.this.plugin.getPermissionMap().getChildPermissions(name, true).entrySet()) {
|
||||
builder.putIfAbsent(child.getKey(), child.getValue());
|
||||
|
@@ -40,6 +40,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -180,7 +181,7 @@ public final class LuckPermsPermissionMap extends ForwardingMap<String, Permissi
|
||||
continue;
|
||||
}
|
||||
|
||||
String key = e.getKey().toLowerCase();
|
||||
String key = e.getKey().toLowerCase(Locale.ROOT);
|
||||
|
||||
if (accumulator.containsKey(key)) {
|
||||
continue; // Prevent infinite loops
|
||||
|
@@ -38,6 +38,7 @@ import org.bukkit.event.server.PluginEnableEvent;
|
||||
import org.bukkit.event.server.RemoteServerCommandEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class BukkitPlatformListener implements Listener {
|
||||
@@ -51,17 +52,17 @@ public class BukkitPlatformListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerCommand(PlayerCommandPreprocessEvent e) {
|
||||
handleCommand(e.getPlayer(), e.getMessage().toLowerCase(), e);
|
||||
handleCommand(e.getPlayer(), e.getMessage().toLowerCase(Locale.ROOT), e);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onServerCommand(ServerCommandEvent e) {
|
||||
handleCommand(e.getSender(), e.getCommand().toLowerCase(), e);
|
||||
handleCommand(e.getSender(), e.getCommand().toLowerCase(Locale.ROOT), e);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onRemoteServerCommand(RemoteServerCommandEvent e) {
|
||||
handleCommand(e.getSender(), e.getCommand().toLowerCase(), e);
|
||||
handleCommand(e.getSender(), e.getCommand().toLowerCase(Locale.ROOT), e);
|
||||
}
|
||||
|
||||
private void handleCommand(CommandSender sender, String cmdLine, Cancellable event) {
|
||||
|
@@ -49,6 +49,7 @@ import net.luckperms.api.query.Flag;
|
||||
import net.luckperms.api.query.QueryOptions;
|
||||
import net.milkbowl.vault.chat.Chat;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -254,7 +255,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat {
|
||||
|
||||
private void setMeta(PermissionHolder holder, String key, Object value, String world) {
|
||||
if (key.equalsIgnoreCase(Prefix.NODE_KEY) || key.equalsIgnoreCase(Suffix.NODE_KEY)) {
|
||||
setChatMeta(holder, ChatMetaType.valueOf(key.toUpperCase()), value == null ? null : value.toString(), world);
|
||||
setChatMeta(holder, ChatMetaType.valueOf(key.toUpperCase(Locale.ROOT)), value == null ? null : value.toString(), world);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -277,7 +278,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat {
|
||||
private QueryOptions createQueryOptionsForWorldSet(String world) {
|
||||
ImmutableContextSet.Builder context = new ImmutableContextSetImpl.BuilderImpl();
|
||||
if (world != null && !world.isEmpty() && !world.equalsIgnoreCase("global")) {
|
||||
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase());
|
||||
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
context.add(DefaultContextKeys.SERVER_KEY, this.vaultPermission.getVaultServer());
|
||||
|
||||
|
@@ -59,6 +59,7 @@ import net.milkbowl.vault.permission.Permission;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -348,7 +349,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
||||
// remove already accumulated worlds
|
||||
context.removeAll(DefaultContextKeys.WORLD_KEY);
|
||||
// add the vault world
|
||||
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase());
|
||||
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
// if we're using a special vault server
|
||||
|
Reference in New Issue
Block a user