Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.minelazz.moretnts.utils;
- import org.apache.commons.codec.binary.*;
- import org.bukkit.inventory.*;
- import com.mojang.authlib.*;
- import com.mojang.authlib.properties.*;
- import java.util.*;
- import com.google.common.base.*;
- import org.bukkit.*;
- import org.bukkit.inventory.meta.*;
- import java.lang.reflect.*;
- public class HeadCreator
- {
- private static final Base64 m_base64;
- private static HashMap<String, ItemStack> map;
- static {
- m_base64 = new Base64();
- HeadCreator.map = new HashMap<String, ItemStack>();
- }
- public static GameProfile createGameProfile(final String s, final String s2) {
- final GameProfile gameProfile = new GameProfile(getUUID(s2), s2);
- final PropertyMap properties = gameProfile.getProperties();
- if (properties == null) {
- return null;
- }
- properties.put((Object)"textures", (Object)new Property("textures", new String(HeadCreator.m_base64.encode(String.format("{textures:{SKIN:{url:\"%s\"}}}", s).getBytes()))));
- return gameProfile;
- }
- private static UUID getUUID(final String s) {
- return UUID.nameUUIDFromBytes(("MoreTNTs:" + s).getBytes(Charsets.UTF_8));
- }
- public static ItemStack createItemStack(final String s, final String s2) {
- if (HeadCreator.map.containsKey(s)) {
- return HeadCreator.map.get(s);
- }
- final GameProfile gameProfile = createGameProfile(s, s2);
- if (gameProfile == null) {
- return null;
- }
- final ItemStack itemStack = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
- final ItemMeta itemMeta = itemStack.getItemMeta();
- if (!set(itemMeta.getClass(), itemMeta, "profile", gameProfile)) {
- return null;
- }
- itemStack.setItemMeta(itemMeta);
- HeadCreator.map.put(s, itemStack);
- return itemStack;
- }
- public static boolean set(final Class<?> clazz, final Object o, final String s, final Object o2) {
- try {
- final Field declaredField = clazz.getDeclaredField(s);
- final boolean accessible = declaredField.isAccessible();
- final Field declaredField2 = Field.class.getDeclaredField("modifiers");
- final int modifiers = declaredField2.getModifiers();
- final boolean b = (modifiers & 0x10) == 0x10;
- if (!accessible) {
- declaredField.setAccessible(true);
- }
- if (b) {
- declaredField2.setAccessible(true);
- declaredField2.setInt(declaredField, modifiers & 0xFFFFFFEF);
- }
- try {
- declaredField.set(o, o2);
- }
- finally {
- if (b) {
- declaredField2.setInt(declaredField, modifiers | 0x10);
- }
- if (!accessible) {
- declaredField.setAccessible(false);
- }
- }
- if (b) {
- declaredField2.setInt(declaredField, modifiers | 0x10);
- }
- if (!accessible) {
- declaredField.setAccessible(false);
- }
- return true;
- }
- catch (Exception ex) {
- ex.printStackTrace();
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement