diff --git a/pom.xml b/pom.xml
index 61c0d38..c200e43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.t2code
T2CodeLib
- 16.1
+ 16.2
@@ -221,6 +221,12 @@
4.5.14
compile
+
+ org.json
+ json
+ 20230227
+ compile
+
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/items/T2CitemBuilder.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/items/T2CitemBuilder.java
index bceaed7..60b5631 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/items/T2CitemBuilder.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/items/T2CitemBuilder.java
@@ -3,13 +3,23 @@ package net.t2code.t2codelib.SPIGOT.api.items;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion;
+import net.t2code.t2codelib.SPIGOT.system.bstats.Metrics;
+import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
+import org.bukkit.profile.PlayerProfile;
+import org.bukkit.profile.PlayerTextures;
import java.lang.reflect.Field;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Base64;
+
+import org.json.JSONObject;
+
import java.util.List;
import java.util.UUID;
@@ -66,7 +76,13 @@ public class T2CitemBuilder {
inventory.setItem(slot, item);
}
- public static ItemStack base64(String base64Value, Integer amount, String displayName, List lore) {
+ public static ItemStack base64(String base64Value) {
+ if (!T2CmcVersion.minMc1_20() || T2CmcVersion.isNms1_20_R1()) {
+ return base64Old(base64Value);
+ } else return base64New(base64Value);
+ }
+
+ private static ItemStack base64Old(String base64Value) {
ItemStack itemStack = new ItemStack(T2CitemVersion.getHead());
SkullMeta itemMeta = (SkullMeta) itemStack.getItemMeta();
@@ -81,11 +97,33 @@ public class T2CitemBuilder {
e.printStackTrace();
}
- itemMeta.setDisplayName(displayName);
- itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
-
- itemStack.setAmount(amount);
return itemStack;
}
+
+ private static ItemStack base64New(String base64Value) {
+ ItemStack itemStack = new ItemStack(T2CitemVersion.getHead());
+ SkullMeta itemMeta = (SkullMeta) itemStack.getItemMeta();
+
+ PlayerProfile profile = Bukkit.createPlayerProfile(UUID.randomUUID());
+ PlayerTextures textures = profile.getTextures();
+ try {
+ textures.setSkin(new URL(base64Convert(base64Value)));
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ profile.setTextures(textures);
+ itemMeta.setOwnerProfile(profile);
+ itemStack.setItemMeta(itemMeta);
+ return itemStack;
+ }
+
+ private static String base64Convert(String base64Value) {
+ String jsonString = new String(Base64.getDecoder().decode(base64Value));
+ JSONObject obj = new JSONObject(jsonString);
+ String output = obj.getJSONObject("textures").getJSONObject("SKIN").getString("url");
+ if (output.startsWith("http://textures.minecraft.net/texture/")){
+ return output;
+ } else return "http://textures.minecraft.net/texture/d5d20330da59c207d78352838e91a48ea1e42b45a9893226144b251fe9b9d535";
+ }
}