diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java b/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java index 59f6a36..66dd9a4 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java @@ -7,6 +7,7 @@ import lol.pyr.znpcsplus.skin.descriptor.NameFetchingDescriptor; import lol.pyr.znpcsplus.skin.descriptor.MirrorDescriptor; import lol.pyr.znpcsplus.skin.descriptor.PrefetchedDescriptor; import lol.pyr.znpcsplus.skin.descriptor.UUIDFetchingDescriptor; +import lol.pyr.znpcsplus.util.UUIDUtil; import org.bukkit.entity.Player; import java.util.ArrayList; @@ -24,10 +25,10 @@ public interface BaseSkinDescriptor extends SkinDescriptor { static BaseSkinDescriptor deserialize(MojangSkinCache skinCache, String str) { String[] arr = str.split(";"); if (arr[0].equalsIgnoreCase("mirror")) return new MirrorDescriptor(skinCache); - else if (arr[0].equalsIgnoreCase("fetching-name")) - return new NameFetchingDescriptor(skinCache, String.join(";", Arrays.copyOfRange(arr, 1, arr.length))); - else if(arr[0].equalsIgnoreCase("fetching-uuid")) - return new UUIDFetchingDescriptor(skinCache, UUID.fromString(String.join(";", Arrays.copyOfRange(arr, 1, arr.length)))); + else if (arr[0].equalsIgnoreCase("fetching")) { + String value = String.join(";", Arrays.copyOfRange(arr, 1, arr.length)); + return UUIDUtil.isUUID(value) ? new UUIDFetchingDescriptor(skinCache, UUID.fromString(value)) : new NameFetchingDescriptor(skinCache, value); + } else if (arr[0].equalsIgnoreCase("prefetched")) { List properties = new ArrayList<>(); for (int i = 0; i < (arr.length - 1) / 3; i++) { diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/NameFetchingDescriptor.java b/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/NameFetchingDescriptor.java index 48ac7e6..00d4521 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/NameFetchingDescriptor.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/NameFetchingDescriptor.java @@ -39,6 +39,6 @@ public class NameFetchingDescriptor implements BaseSkinDescriptor, SkinDescripto @Override public String serialize() { - return "fetching-name;" + name; + return "fetching;" + name; } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/UUIDFetchingDescriptor.java b/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/UUIDFetchingDescriptor.java index 685c786..d4db046 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/UUIDFetchingDescriptor.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/skin/descriptor/UUIDFetchingDescriptor.java @@ -36,7 +36,7 @@ public class UUIDFetchingDescriptor implements BaseSkinDescriptor, SkinDescripto @Override public String serialize() { - return "fetching-uuid;" + uuid.toString(); + return "fetching;" + uuid.toString(); } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/util/UUIDUtil.java b/plugin/src/main/java/lol/pyr/znpcsplus/util/UUIDUtil.java new file mode 100644 index 0000000..c85b73e --- /dev/null +++ b/plugin/src/main/java/lol/pyr/znpcsplus/util/UUIDUtil.java @@ -0,0 +1,16 @@ +package lol.pyr.znpcsplus.util; + + +import java.util.regex.Pattern; + +public final class UUIDUtil { + + + public final static Pattern UUID_REGEX = + Pattern.compile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); + + public static boolean isUUID(String uuid) { + return UUID_REGEX.matcher(uuid).matches(); + } + +}