package net.t2code.commandguiv2.Spigot.useItem; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import net.t2code.commandguiv2.Spigot.Main; import net.t2code.commandguiv2.Spigot.config.config.SelectConfig; import net.t2code.commandguiv2.Spigot.config.languages.SelectMessages; import net.t2code.commandguiv2.Util; import net.t2code.t2codelib.SPIGOT.api.items.T2CitemBuilder; import net.t2code.t2codelib.SPIGOT.api.items.T2CitemVersion; import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion; import org.bukkit.Material; 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 UseItem { public static void giveUseItem(Player player) { Integer slot; if (protection(player, false)) return; if (SelectConfig.getUseItem_InventorySlotEnforce()) { slot = SelectConfig.getUseItem_InventorySlot(); } else { slot = Events.useItemSlotHashMap.get(player.getName()); } if (SelectConfig.getUseItem_InventorySlot_FreeSlot()) { player.getInventory().addItem(itemStack(player)); } else { T2Csend.debug(Main.getPlugin(), "setUseItem: " + player.getName() + " Slot: " + Integer.parseInt(String.valueOf(slot - 1))); player.getInventory().setItem(slot - 1, itemStack(player)); } } public static void addUseItem(Player player) { if (protection(player, false)) return; if (SelectConfig.getUseItem_InventorySlot_FreeSlot()) { player.getInventory().addItem(itemStack(player)); } else player.getInventory().addItem(itemStack(player)); } private static ItemStack itemStack(Player player) { ItemStack item = null; if (SelectConfig.getUseItem_PlayerHead_Enable()) { if (T2CmcVersion.isMc1_8() || T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12()) { T2Csend.player(player, Util.getPrefix() + "§c Playerheads for UseItem are only available from version §61.13§c!"); T2Csend.error(Main.getPlugin(), "Playerheads for UseItem are only available from version 1.13!"); } else { SkullMeta playerheadmeta = null; if (SelectConfig.getUseItem_Base64_Enable()) { item = T2CitemBuilder.base64(SelectConfig.getUseItem_Base64value()); playerheadmeta = (SkullMeta) item.getItemMeta(); } else { item = T2CitemVersion.getHeadIS(); playerheadmeta = (SkullMeta) item.getItemMeta(); String p; if (SelectConfig.getUseItem_PlayerWhoHasOpenedTheGUI()) { p = player.getName(); } else p = SelectConfig.getUseItem_PlayerName(); playerheadmeta.setOwner(p); } if (Main.PaPi) { playerheadmeta.setLore(T2Creplace.replace(Util.getPrefix(), player, SelectConfig.getUseItem_Lore())); } else playerheadmeta.setLore(T2Creplace.replace(Util.getPrefix(), SelectConfig.getUseItem_Lore())); playerheadmeta.setDisplayName(SelectConfig.getUseItem_Name()); item.setItemMeta(playerheadmeta); } } else { item = new ItemStack(Material.valueOf(SelectConfig.getUseItem_Material())); ItemMeta itemMeta = item.getItemMeta(); itemMeta.setDisplayName(SelectConfig.getUseItem_Name()); if (Main.PaPi) { itemMeta.setLore(T2Creplace.replace(Util.getPrefix(), player, SelectConfig.getUseItem_Lore())); } else itemMeta.setLore(T2Creplace.replace(Util.getPrefix(), SelectConfig.getUseItem_Lore())); item.setItemMeta(itemMeta); item.setAmount(1); } return item; } public static boolean protection(Player player, Boolean interact) { if (SelectConfig.getUseItemGameModeProtection()) { if (SelectConfig.getUseItemGameModeMode().equalsIgnoreCase("blacklist") && SelectConfig.getUseItemGameModeList().contains(player.getGameMode().toString())) { if (interact) { T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode); } else if (!SelectConfig.getUseItemGameModeRemoveItemWhenItIsDisabled()) removeItem(player); return true; } if (SelectConfig.getUseItemGameModeMode().equalsIgnoreCase("whitelist") && !SelectConfig.getUseItemGameModeList().contains(player.getGameMode().toString())) { if (interact) { T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode); } else if (!SelectConfig.getUseItemGameModeRemoveItemWhenItIsDisabled()) removeItem(player); return true; } } if (SelectConfig.getUseItemWorldProtection()) { if (SelectConfig.getUseItemWorldMode().equalsIgnoreCase("blacklist") && SelectConfig.getUseItemWorldList().contains(player.getWorld().getName())) { if (interact) { T2Csend.player(player, SelectMessages.UseItemDisabledInWorld); } else if (!SelectConfig.getUseItemWorldRemoveItemWhenItIsDisabled()) removeItem(player); return true; } if (SelectConfig.getUseItemWorldMode().equalsIgnoreCase("whitelist") && !SelectConfig.getUseItemWorldList().contains(player.getWorld().getName())) { if (interact) { T2Csend.player(player, SelectMessages.UseItemDisabledInWorld); } else if (!SelectConfig.getUseItemWorldRemoveItemWhenItIsDisabled()) removeItem(player); return true; } } return false; } public static void removeItem(Player player) { T2Csend.debug(Main.getPlugin(), "World disabled: " + player.getName() + " " + player.getWorld().toString()); for (int iam = 0; iam < player.getInventory().getSize() - 5; iam++) { ItemStack itm = player.getInventory().getItem(iam); if (itm != null) { if (itm.getType() == Material.valueOf(SelectConfig.getUseItem_Material()) || itm.getType() == T2CitemVersion.getHead()) { if (itm.getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { player.getInventory().remove(itm); player.updateInventory(); break; } } } } } }