package de.jatitv.commandguiv2.Spigot.system; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import de.jatitv.commandguiv2.Spigot.Main; import de.jatitv.commandguiv2.Spigot.system.config.config.SelectConfig; import de.jatitv.commandguiv2.Spigot.system.database.Select_Database; import de.jatitv.commandguiv2.Util; import net.t2code.lib.Spigot.Lib.items.ItemVersion; import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.lib.Spigot.Lib.minecraftVersion.MCVersion; import net.t2code.lib.Spigot.Lib.replace.Replace; import org.bukkit.Material; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; import java.lang.reflect.Field; import java.util.UUID; public class Give_UseItem { private static String prefix = Util.Prefix; public static void onGive(Player player) { Integer slot; if (SelectConfig.UseItem_InventorySlotEnforce){ slot = SelectConfig.UseItem_InventorySlot; } else { if (Select_Database.selectSlot(player) == null) { slot = SelectConfig.UseItem_InventorySlot; } else { slot = Select_Database.selectSlot(player); } } if (SelectConfig.UseItem_InventorySlot_FreeSlot) { player.getInventory().addItem(itemStack(player)); } else player.getInventory().setItem(slot - 1, itemStack(player)); } public static void onGiveADD(Player player) { if (SelectConfig.UseItem_InventorySlot_FreeSlot) { player.getInventory().addItem(itemStack(player)); } else player.getInventory().addItem(itemStack(player)); } private static ItemStack itemStack(Player player) { ItemStack item = null; if (SelectConfig.UseItem_PlayerHead_Enable) { if (MCVersion.minecraft1_8 || MCVersion.minecraft1_9 || MCVersion.minecraft1_10 || MCVersion.minecraft1_11 || MCVersion.minecraft1_12) { send.player(player, Main.prefix + "§c Playerheads for UseItem are only available from version §61.13§c!"); send.error(Main.plugin, "Playerheads for UseItem are only available from version 1.13!"); } else { item = ItemVersion.getHeadIS(); SkullMeta playerheadmeta = (SkullMeta) item.getItemMeta(); playerheadmeta.setDisplayName(SelectConfig.UseItem_Name); if (SelectConfig.UseItem_Base64_Enable) { if (Main.PaPi) { playerheadmeta.setLore(Replace.replace(prefix, player, SelectConfig.UseItem_Lore)); } else playerheadmeta.setLore(Replace.replace(prefix, SelectConfig.UseItem_Lore)); GameProfile profile = new GameProfile(UUID.randomUUID(), ""); profile.getProperties().put("textures", new Property("textures", SelectConfig.UseItem_Base64value)); Field profileField = null; try { profileField = playerheadmeta.getClass().getDeclaredField("profile"); profileField.setAccessible(true); profileField.set(playerheadmeta, profile); } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { e.printStackTrace(); } } else { String p; if (SelectConfig.UseItem_PlayerWhoHasOpenedTheGUI) { p = player.getName(); } else p = SelectConfig.UseItem_PlayerName; playerheadmeta.setOwner(p); if (Main.PaPi) { playerheadmeta.setLore(Replace.replace(prefix, player, SelectConfig.UseItem_Lore)); } else playerheadmeta.setLore(Replace.replace(prefix, SelectConfig.UseItem_Lore)); } item.setItemMeta(playerheadmeta); } } else { item = new ItemStack(Material.valueOf(SelectConfig.UseItem_Material)); ItemMeta itemMeta = item.getItemMeta(); itemMeta.setDisplayName(SelectConfig.UseItem_Name); if (Main.PaPi) { itemMeta.setLore(Replace.replace(prefix, player, SelectConfig.UseItem_Lore)); } else itemMeta.setLore(Replace.replace(prefix, SelectConfig.UseItem_Lore)); item.setItemMeta(itemMeta); item.setAmount(1); } return item; } }