diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/BukkitUuids.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/BukkitUuids.java index 75c374b4..c94a7da0 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/BukkitUuids.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/BukkitUuids.java @@ -35,7 +35,7 @@ import java.util.UUID; public final class BukkitUuids { public static UUID lookupUuid(ProgressLogger log, String s) { - UUID uuid = Uuids.parseNullable(s); + UUID uuid = Uuids.parse(s); if (uuid == null) { try { //noinspection deprecation diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationGroupManager.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationGroupManager.java index aba1a2c2..340fd2df 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationGroupManager.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationGroupManager.java @@ -170,7 +170,7 @@ public class MigrationGroupManager extends SubCommand { } String lastName = user.getLastName(); - if (lastName != null && Uuids.parse(lastName).isPresent()) { + if (lastName != null && Uuids.parse(lastName) != null) { lastName = null; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java index 9cf58c71..b4c20c24 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java @@ -58,7 +58,7 @@ public class CheckCommand extends SingleCommand { String permission = args.get(1); User user; - UUID u = Uuids.parseNullable(target); + UUID u = Uuids.parse(target); if (u != null) { user = plugin.getUserManager().getIfLoaded(u); } else { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java index 636c8c85..97f77f17 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java @@ -68,7 +68,7 @@ public class TreeCommand extends SingleCommand { User user; if (player != null) { - UUID u = Uuids.parseNullable(player); + UUID u = Uuids.parse(player); if (u != null) { user = plugin.getUserManager().getIfLoaded(u); } else { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/user/UserMainCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/user/UserMainCommand.java index 5f3d28c7..1b0fd933 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/user/UserMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/user/UserMainCommand.java @@ -81,7 +81,7 @@ public class UserMainCommand extends MainCommand { } public static UUID parseTargetUuid(String target, LuckPermsPlugin plugin, Sender sender) { - UUID uuid = Uuids.parseNullable(target); + UUID uuid = Uuids.parse(target); if (uuid == null) { if (!plugin.getConfiguration().get(ConfigKeys.ALLOW_INVALID_USERNAMES)) { if (!DataConstraints.PLAYER_USERNAME_TEST.test(target)) { diff --git a/common/src/main/java/me/lucko/luckperms/common/dependencies/DependencyRegistry.java b/common/src/main/java/me/lucko/luckperms/common/dependencies/DependencyRegistry.java index fd63ba30..0ad58603 100644 --- a/common/src/main/java/me/lucko/luckperms/common/dependencies/DependencyRegistry.java +++ b/common/src/main/java/me/lucko/luckperms/common/dependencies/DependencyRegistry.java @@ -77,7 +77,7 @@ public class DependencyRegistry { } // don't load slf4j if it's already present - if (slf4jPresent()) { + if (dependencies.contains(Dependency.SLF4J_API) || dependencies.contains(Dependency.SLF4J_SIMPLE) && slf4jPresent()) { dependencies.remove(Dependency.SLF4J_API); dependencies.remove(Dependency.SLF4J_SIMPLE); } diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/dao/file/SeparatedConfigurateDao.java b/common/src/main/java/me/lucko/luckperms/common/storage/dao/file/SeparatedConfigurateDao.java index f738a87c..d32bb524 100644 --- a/common/src/main/java/me/lucko/luckperms/common/storage/dao/file/SeparatedConfigurateDao.java +++ b/common/src/main/java/me/lucko/luckperms/common/storage/dao/file/SeparatedConfigurateDao.java @@ -165,7 +165,7 @@ public class SeparatedConfigurateDao extends AbstractConfigurateDao { } String user = s.substring(0, s.length() - this.fileExtension.length()); - UUID uuid = Uuids.parseNullable(user); + UUID uuid = Uuids.parse(user); if (uuid == null) { return; } diff --git a/common/src/main/java/me/lucko/luckperms/common/utils/Uuids.java b/common/src/main/java/me/lucko/luckperms/common/utils/Uuids.java index 8b6c34ca..e68f76f8 100644 --- a/common/src/main/java/me/lucko/luckperms/common/utils/Uuids.java +++ b/common/src/main/java/me/lucko/luckperms/common/utils/Uuids.java @@ -27,18 +27,14 @@ package me.lucko.luckperms.common.utils; import org.checkerframework.checker.nullness.qual.Nullable; -import java.util.Optional; import java.util.UUID; import java.util.function.Predicate; -import java.util.regex.Pattern; /** * Utilities for working with {@link UUID}s. */ public final class Uuids { - private static final Pattern UUID_PATTERN = Pattern.compile("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})"); - - public static final Predicate PREDICATE = s -> parseNullable(s) != null; + public static final Predicate PREDICATE = s -> parse(s) != null; public static @Nullable UUID fromString(String s) { try { @@ -48,18 +44,21 @@ public final class Uuids { } } - public static @Nullable UUID parseNullable(String s) { + public static @Nullable UUID parse(String s) { UUID uuid = fromString(s); - if (uuid == null) { - uuid = fromString(UUID_PATTERN.matcher(s).replaceAll("$1-$2-$3-$4-$5")); + if (uuid == null && s.length() == 32) { + try { + uuid = new UUID( + Long.parseUnsignedLong(s.substring(0, 16), 16), + Long.parseUnsignedLong(s.substring(16), 16) + ); + } catch (NumberFormatException e) { + // ignore + } } return uuid; } - public static Optional parse(String s) { - return Optional.ofNullable(parseNullable(s)); - } - private Uuids() {} } diff --git a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java index d56a096b..df38ccfe 100644 --- a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java +++ b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java @@ -130,7 +130,7 @@ public final class WebEditor { return holder; } else if (who.startsWith(USER_ID_PATTERN)) { String user = who.substring(USER_ID_PATTERN.length()); - UUID uuid = Uuids.parseNullable(user); + UUID uuid = Uuids.parse(user); if (uuid == null) { Message.APPLY_EDITS_TARGET_USER_NOT_UUID.send(sender, user); return null; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/managers/SpongeUserManager.java b/sponge/src/main/java/me/lucko/luckperms/sponge/managers/SpongeUserManager.java index 647033bc..c73e1387 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/managers/SpongeUserManager.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/managers/SpongeUserManager.java @@ -137,7 +137,7 @@ public class SpongeUserManager extends AbstractUserManager implement @Override public CompletableFuture loadSubject(String identifier) { - UUID uuid = Uuids.parseNullable(identifier); + UUID uuid = Uuids.parse(identifier); if (uuid == null) { throw new IllegalArgumentException("Identifier is not a UUID: " + identifier); } @@ -152,7 +152,7 @@ public class SpongeUserManager extends AbstractUserManager implement @Override public Optional getSubject(String identifier) { - UUID uuid = Uuids.parseNullable(identifier); + UUID uuid = Uuids.parse(identifier); if (uuid == null) { return Optional.empty(); } @@ -161,7 +161,7 @@ public class SpongeUserManager extends AbstractUserManager implement @Override public CompletableFuture hasRegistered(String identifier) { - UUID uuid = Uuids.parseNullable(identifier); + UUID uuid = Uuids.parse(identifier); if (uuid == null) { return CompletableFuture.completedFuture(false); } @@ -178,7 +178,7 @@ public class SpongeUserManager extends AbstractUserManager implement return CompletableFuture.supplyAsync(() -> { ImmutableSet.Builder ret = ImmutableSet.builder(); for (String id : identifiers) { - UUID uuid = Uuids.parseNullable(id); + UUID uuid = Uuids.parse(id); if (uuid == null) { continue; }