2
0
Эх сурвалжийг харах

Updating custom head management

RedstoneFuture 1 долоо хоног өмнө
parent
commit
310182484f

+ 2 - 39
missilewars-plugin/src/main/java/de/butzlabben/missilewars/menus/MenuItem.java

@@ -1,11 +1,9 @@
 package de.butzlabben.missilewars.menus;
 
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.properties.Property;
-import de.butzlabben.missilewars.Logger;
 import de.butzlabben.missilewars.configuration.ActionSet;
 import de.butzlabben.missilewars.configuration.PluginMessages;
 import de.butzlabben.missilewars.player.MWPlayer;
+import de.redstoneworld.redutilities.items.HeadHelper;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
@@ -16,13 +14,9 @@ import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemFlag;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.inventory.meta.SkullMeta;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.UUID;
 
 @RequiredArgsConstructor
 public class MenuItem {
@@ -52,7 +46,7 @@ public class MenuItem {
         
         // basehead-<base64 (Value field in the head's give command)>
         if (materialName.startsWith("basehead-")) {
-            tempItem = getCustomHead(materialName.split("-")[1]);
+            tempItem = HeadHelper.getCustomHead(materialName.split("-")[1]);
             
         } else if (materialName.equalsIgnoreCase("{player-team-item}")) {
             tempItem = mwPlayer.getTeam().getMenuItem();
@@ -80,37 +74,6 @@ public class MenuItem {
         mwPlayer.getPlayer().getInventory().setItem(slot, itemStack);
     }
     
-    public static ItemStack getCustomHead(String base64Texture) {
-        ItemStack headItem = new ItemStack(Material.PLAYER_HEAD);
-        SkullMeta skullMeta = (SkullMeta) headItem.getItemMeta();
-        setSkinViaBase64(skullMeta, base64Texture);
-        headItem.setItemMeta(skullMeta);
-        return headItem;
-    }
-
-    /**
-     * A method used to set the skin of a player skull via a base64 encoded string.
-     *
-     * Source: <a href="https://www.spigotmc.org/threads/generated-texture-to-heads.512604/#post-4198463">Post by BoBoBalloon</a>
-     *
-     * @param meta the skull meta to modify
-     * @param base64 the base64 encoded string
-     */
-    private static void setSkinViaBase64(SkullMeta meta, String base64) {
-        try {
-            Method setProfile = meta.getClass().getDeclaredMethod("setProfile", GameProfile.class);
-            setProfile.setAccessible(true);
-
-            GameProfile profile = new GameProfile(UUID.randomUUID(), "skull-texture");
-            profile.getProperties().put("textures", new Property("textures", base64));
-
-            setProfile.invoke(meta, profile);
-        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
-            Logger.ERROR.log("There was a severe internal reflection error when attempting to set the skin of a player skull via base64!");
-            e.printStackTrace();
-        }
-    }
-    
     private void updatePapiValues(Player player) {
         finalDisplayName = PluginMessages.getPapiMessage(displayName, player);
 

+ 5 - 4
missilewars-plugin/src/main/java/de/butzlabben/missilewars/menus/inventory/MapVoteMenu.java

@@ -11,6 +11,7 @@ import de.butzlabben.missilewars.game.Game;
 import de.butzlabben.missilewars.menus.MenuItem;
 import de.butzlabben.missilewars.menus.MenuUtils;
 import de.butzlabben.missilewars.player.MWPlayer;
+import de.redstoneworld.redutilities.items.HeadHelper;
 import org.bukkit.Material;
 import org.bukkit.inventory.ItemStack;
 
@@ -33,10 +34,10 @@ public class MapVoteMenu {
     GuiItem backwardsItem;
     GuiItem forwardsItem;
     
-    final ItemStack backwardsItemActive = MenuItem.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDliMmJlZTM5YjZlZjQ3ZTE4MmQ2ZjFkY2E5ZGVhODQyZmNkNjhiZGE5YmFjYzZhNmQ2NmE4ZGNkZjNlYyJ9fX0=");
-    final ItemStack backwardsItemInactive = MenuItem.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTQyZmRlOGI4MmU4YzFiOGMyMmIyMjY3OTk4M2ZlMzVjYjc2YTc5Nzc4NDI5YmRhZGFiYzM5N2ZkMTUwNjEifX19");
-    final ItemStack forwardsItemActive = MenuItem.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTQxZmY2YmM2N2E0ODEyMzJkMmU2NjllNDNjNGYwODdmOWQyMzA2NjY1YjRmODI5ZmI4Njg5MmQxM2I3MGNhIn19fQ==");
-    final ItemStack forwardsItemInactive = MenuItem.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDA2MjYyYWYxZDVmNDE0YzU5NzA1NWMyMmUzOWNjZTE0OGU1ZWRiZWM0NTU1OWEyZDZiODhjOGQ2N2I5MmVhNiJ9fX0=");
+    final ItemStack backwardsItemActive = HeadHelper.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDliMmJlZTM5YjZlZjQ3ZTE4MmQ2ZjFkY2E5ZGVhODQyZmNkNjhiZGE5YmFjYzZhNmQ2NmE4ZGNkZjNlYyJ9fX0=");
+    final ItemStack backwardsItemInactive = HeadHelper.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTQyZmRlOGI4MmU4YzFiOGMyMmIyMjY3OTk4M2ZlMzVjYjc2YTc5Nzc4NDI5YmRhZGFiYzM5N2ZkMTUwNjEifX19");
+    final ItemStack forwardsItemActive = HeadHelper.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTQxZmY2YmM2N2E0ODEyMzJkMmU2NjllNDNjNGYwODdmOWQyMzA2NjY1YjRmODI5ZmI4Njg5MmQxM2I3MGNhIn19fQ==");
+    final ItemStack forwardsItemInactive = HeadHelper.getCustomHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDA2MjYyYWYxZDVmNDE0YzU5NzA1NWMyMmUzOWNjZTE0OGU1ZWRiZWM0NTU1OWEyZDZiODhjOGQ2N2I5MmVhNiJ9fX0=");
     
     public MapVoteMenu(MWPlayer mwPlayer) {
         this.mwPlayer = mwPlayer;