From 13a47fa743b26018275f5f9dde6f8e1a2a3c7f3c Mon Sep 17 00:00:00 2001
From: Pyrbu <pyrmcserver@gmail.com>
Date: Sat, 20 Jul 2024 23:34:13 +0200
Subject: [PATCH] fix fetching descriptor deserialization when name contains
 ";"

---
 .../main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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 3c63364..65e6e7d 100644
--- a/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java
+++ b/plugin/src/main/java/lol/pyr/znpcsplus/skin/BaseSkinDescriptor.java
@@ -9,6 +9,7 @@ import lol.pyr.znpcsplus.skin.descriptor.PrefetchedDescriptor;
 import org.bukkit.entity.Player;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 
@@ -21,7 +22,7 @@ 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")) return new FetchingDescriptor(skinCache, arr[1]);
+        else if (arr[0].equalsIgnoreCase("fetching")) return new FetchingDescriptor(skinCache, String.join(";", Arrays.copyOfRange(arr, 1, arr.length)));
         else if (arr[0].equalsIgnoreCase("prefetched")) {
             List<TextureProperty> properties = new ArrayList<>();
             for (int i = 0; i < (arr.length - 1) / 3; i++) {