Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
25 kB
0
Indexable
Never
package org.lifestealsmp.itemskinner;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin implements Listener{
	
	private FileConfiguration data;
    private File dfile;
    
    private FileConfiguration furnitures;
    private File ffile;
    
    private FileConfiguration hats;
    private File hfile;
    
    private FileConfiguration armors;
    private File afile;
    
    private FileConfiguration tools;
    private File tfile;

    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        saveDefaultConfig();

        setupFiles();
    }

    public void setupFiles() {
        // data.yml setup
        dfile = new File(this.getDataFolder(), "data.yml");
        setupFile(dfile);
        data = YamlConfiguration.loadConfiguration(dfile);
        
        // furnitures.yml setup
        ffile = new File(this.getDataFolder(), "furnitures.yml");
        setupFile(ffile);
        furnitures = YamlConfiguration.loadConfiguration(ffile);

        // hats.yml setup
        hfile = new File(this.getDataFolder(), "hats.yml");
        setupFile(hfile);
        hats = YamlConfiguration.loadConfiguration(hfile);

        // armors.yml setup
        afile = new File(this.getDataFolder(), "armors.yml");
        setupFile(afile);
        armors = YamlConfiguration.loadConfiguration(afile);
        
        // tools.yml setup
        tfile = new File(this.getDataFolder(), "tools.yml");
        setupFile(tfile);
        tools = YamlConfiguration.loadConfiguration(tfile);
    }

    public void setupFile(File file) {
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                Bukkit.getServer().getLogger().severe(ChatColor.RED + "Could not create " + file.getName() + "!");
            }
        }
    }

    public FileConfiguration getData() {
        return data;
    }

    public FileConfiguration getFurnitures() {
        return furnitures;
    }

    public FileConfiguration getHats() {
        return hats;
    }

    public FileConfiguration getArmors() {
        return armors;
    }

    public FileConfiguration getTools() {
        return tools;
    }

    public void saveData() {
        saveFile(data, dfile);
    }

    public void saveFurnitures() {
        saveFile(furnitures, ffile);
    }

    public void saveHats() {
        saveFile(hats, hfile);
    }

    public void saveArmors() {
        saveFile(armors, afile);
    }

    public void saveTools() {
        saveFile(tools, tfile);
    }

    public void saveFile(FileConfiguration config, File file) {
        try {
            config.save(file);
        } catch (IOException e) {
            Bukkit.getServer().getLogger().severe(ChatColor.RED + "Could not save " + file.getName() + "!");
        }
    }

    public void reloadData() {
        data = YamlConfiguration.loadConfiguration(dfile);
    }

    public void reloadFurnitures() {
        furnitures = YamlConfiguration.loadConfiguration(ffile);
    }

    public void reloadHats() {
        hats = YamlConfiguration.loadConfiguration(hfile);
    }

    public void reloadArmors() {
        armors = YamlConfiguration.loadConfiguration(afile);
    }

    public void reloadTools() {
        tools = YamlConfiguration.loadConfiguration(tfile);
    }
	
	@Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if(cmd.getName().equalsIgnoreCase("skin") || cmd.getName().equalsIgnoreCase("skins")) {
			if (sender instanceof Player) {
				Player player = (Player) sender;
				SkinStationInventory(player);
			} else {
	            sender.sendMessage("This command can only be run by a player!");
	        }
		}
		return false;
	}
	
	public void SkinStationInventory(Player player) {
		Inventory inv = Bukkit.createInventory(null, 27, "Skin Station");
		ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);

		// Fill empty slots with the blank item
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }
	    // Create the Furniture item
	    ItemStack furniture = new ItemStack(Material.PAPER);
	    ItemMeta furnitureMeta = furniture.getItemMeta();
	    furnitureMeta.setDisplayName("Furniture");
	    furnitureMeta.setCustomModelData(10029);
	    furnitureMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    furniture.setItemMeta(furnitureMeta);

	    // Create the Hats item
	    ItemStack hats = new ItemStack(Material.LEATHER_HELMET);
	    ItemMeta hatsMeta = hats.getItemMeta();
	    hatsMeta.setDisplayName("Hats");
	    hatsMeta.setCustomModelData(10005);
	    hatsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    hats.setItemMeta(hatsMeta);

	    // Create the Armor item
	    ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
	    ItemMeta armorMeta = armor.getItemMeta();
	    armorMeta.setDisplayName("Armor");
	    armorMeta.setCustomModelData(10121);
	    armorMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    armor.setItemMeta(armorMeta);

	    // Create the Tools item
	    ItemStack tools = new ItemStack(Material.DIAMOND_SWORD);
	    ItemMeta toolsMeta = tools.getItemMeta();
	    toolsMeta.setDisplayName("Tools");
	    toolsMeta.addEnchant(Enchantment.DURABILITY, 1, true);
	    toolsMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
	    toolsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    tools.setItemMeta(toolsMeta);

	    // Add the items to the specified slots (0-based index)
	    inv.setItem(10, furniture); // Slot 11
	    inv.setItem(12, hats);      // Slot 13
	    inv.setItem(14, armor);     // Slot 15
	    inv.setItem(16, tools);     // Slot 17
	    player.openInventory(inv);
	}
	
	private Map<UUID, Integer> currentPages = new HashMap<>();
	private Map<UUID, Map<String, Long>> lastFurnitureClaim = new HashMap<>();


	public void FurnitureInventory(Player player, int page) {
	    Inventory inv = Bukkit.createInventory(null, 27, "Furniture Skins");
	    ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
	    
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back Page");
	    backButton.setItemMeta(backMeta);
	    
	    ItemStack forwardButton = new ItemStack(Material.GREEN_WOOL);
	    ItemMeta forwardMeta = forwardButton.getItemMeta();
	    forwardMeta.setDisplayName("Next Page");
	    forwardButton.setItemMeta(forwardMeta);
	    
	    inv.setItem(21, backButton);
	    inv.setItem(23, forwardButton);

	    String uuid = player.getUniqueId().toString();

	    FileConfiguration dataConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "data.yml"));
	    List<String> playerFurnitures = dataConfig.contains(uuid) ? dataConfig.getStringList(uuid + ".Furnitures") : new ArrayList<>();

	    int startIndex = page * 18;
	    int endIndex = Math.min(startIndex + 18, playerFurnitures.size());

	    Map<String, Long> playerFurnitureCooldowns = lastFurnitureClaim.getOrDefault(player.getUniqueId(), new HashMap<>());

	    for (int i = startIndex; i < endIndex; i++) {
	        String furniture = playerFurnitures.get(i);
	        
	        if (getFurnitures().contains(furniture)) {
	            String itemType = getFurnitures().getString(furniture + ".Item_Type");
	            int customModelData = getFurnitures().getInt(furniture + ".Custom Model Data");
	            String displayName = getFurnitures().getString(furniture + ".Display_Name");
	            int cooldownMinutes = getFurnitures().getInt(furniture + ".Cooldown");

	            ItemStack itemStack = new ItemStack(Material.valueOf(itemType));
	            ItemMeta meta = itemStack.getItemMeta();

	            meta.setCustomModelData(customModelData);
	            meta.setDisplayName(displayName);
	            
	            long lastClaimTime = playerFurnitureCooldowns.getOrDefault(furniture, 0L);
	            long remainingCooldownMillis = (cooldownMinutes * 60 * 1000) - (System.currentTimeMillis() - lastClaimTime);
	            
	            if (remainingCooldownMillis > 0) {
	                long remainingMinutes = TimeUnit.MILLISECONDS.toMinutes(remainingCooldownMillis);
	                List<String> lore = new ArrayList<>();
	                lore.add("Cooldown: " + remainingMinutes + " mins");
	                meta.setLore(lore);
	            }
	            
	            meta.getPersistentDataContainer().set(new NamespacedKey(this, "furnitureKey"), PersistentDataType.STRING, furniture);
	            itemStack.setItemMeta(meta);
	            inv.addItem(itemStack);
	        }
	    }
	    
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }

	    player.openInventory(inv);
	}

	
	private Map<UUID, Integer> hatCurrentPages = new HashMap<>();
	private Map<UUID, Map<String, Long>> lastHatClaim = new HashMap<>();

	public void HatsInventory(Player player, int page) {
	    Inventory inv = Bukkit.createInventory(null, 27, "Hat Skins");
	    ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
	    
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back Page");
	    backButton.setItemMeta(backMeta);

	    ItemStack forwardButton = new ItemStack(Material.GREEN_WOOL);
	    ItemMeta forwardMeta = forwardButton.getItemMeta();
	    forwardMeta.setDisplayName("Next Page");
	    forwardButton.setItemMeta(forwardMeta);
	    
	    inv.setItem(21, backButton);
	    inv.setItem(23, forwardButton);

	    String uuid = player.getUniqueId().toString();

	    FileConfiguration dataConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "data.yml"));
	    List<String> playerHats = dataConfig.contains(uuid) ? dataConfig.getStringList(uuid + ".Hats") : new ArrayList<>();

	    int startIndex = page * 18;
	    int endIndex = Math.min(startIndex + 18, playerHats.size());

	    Map<String, Long> playerHatCooldowns = lastHatClaim.getOrDefault(player.getUniqueId(), new HashMap<>());

	    for (int i = startIndex; i < endIndex; i++) {
	        String hat = playerHats.get(i);
	        
	        if (getHats().contains(hat)) {
	            String itemType = getHats().getString(hat + ".Item_Type");
	            int customModelData = getHats().getInt(hat + ".Custom Model Data");
	            String displayName = getHats().getString(hat + ".Display_Name");
	            int cooldownMinutes = getHats().getInt(hat + ".Cooldown");

	            ItemStack itemStack = new ItemStack(Material.valueOf(itemType));
	            ItemMeta meta = itemStack.getItemMeta();

	            meta.setCustomModelData(customModelData);
	            meta.setDisplayName(displayName);
	            
	            long lastClaimTime = playerHatCooldowns.getOrDefault(hat, 0L);
	            long remainingCooldownMillis = (cooldownMinutes * 60 * 1000) - (System.currentTimeMillis() - lastClaimTime);
	            
	            if (remainingCooldownMillis > 0) {
	                long remainingMinutes = TimeUnit.MILLISECONDS.toMinutes(remainingCooldownMillis);
	                List<String> lore = new ArrayList<>();
	                lore.add("Cooldown: " + remainingMinutes + " mins");
	                meta.setLore(lore);
	            }
	            
	            meta.getPersistentDataContainer().set(new NamespacedKey(this, "hatKey"), PersistentDataType.STRING, hat);
	            itemStack.setItemMeta(meta);
	            inv.addItem(itemStack);
	        }
	    }

	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }

	    player.openInventory(inv);
	}
	
	public void ArmorInventory(Player player) {
		Inventory inv = Bukkit.createInventory(null, 27, "Armor Skins");
		ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);

		// Fill empty slots with the blank item
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back");
	    backButton.setItemMeta(backMeta);
	    
	    inv.setItem(21, backButton);
	    player.openInventory(inv);
	}
	
	public void ToolInventory(Player player) {
		Inventory inv = Bukkit.createInventory(null, 27, "Tool Skins");
		ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);

		// Fill empty slots with the blank item
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back");
	    backButton.setItemMeta(backMeta);
	    
	    inv.setItem(21, backButton);
	    player.openInventory(inv);
	}
	
	public void ArmorCategoriesInventory(Player player) {
	    Inventory inv = Bukkit.createInventory(null, 27, "Armor Categories");
	    ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);

	    // Fill empty slots with the blank item
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }

	    // Creating the Diamond Helmet item
	    ItemStack helmet = new ItemStack(Material.DIAMOND_HELMET);
	    ItemMeta helmetMeta = helmet.getItemMeta();
	    helmetMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    helmet.setItemMeta(helmetMeta);

	    // Creating the Diamond Chestplate item
	    ItemStack chestplate = new ItemStack(Material.DIAMOND_CHESTPLATE);
	    ItemMeta chestplateMeta = chestplate.getItemMeta();
	    chestplateMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    chestplate.setItemMeta(chestplateMeta);

	    // Creating the Diamond Leggings item
	    ItemStack leggings = new ItemStack(Material.DIAMOND_LEGGINGS);
	    ItemMeta leggingsMeta = leggings.getItemMeta();
	    leggingsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    leggings.setItemMeta(leggingsMeta);

	    // Creating the Diamond Boots item
	    ItemStack boots = new ItemStack(Material.DIAMOND_BOOTS);
	    ItemMeta bootsMeta = boots.getItemMeta();
	    bootsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    boots.setItemMeta(bootsMeta);

	    // Setting the items to the respective slots in the inventory
	    inv.setItem(10, helmet);      // Slot 10 (0-based index)
	    inv.setItem(12, chestplate); // Slot 12 (0-based index)
	    inv.setItem(14, leggings);   // Slot 14 (0-based index)
	    inv.setItem(16, boots);      // Slot 16 (0-based index)

	    // Adding the back button
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back");
	    backButton.setItemMeta(backMeta);

	    inv.setItem(22, backButton); // Slot 21 (0-based index)

	    player.openInventory(inv);
	}
	
	public void ToolCategoriesInventory(Player player) {
	    Inventory inv = Bukkit.createInventory(null, 27, "Tool Categories");
	    ItemStack blank = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);

	    // Fill empty slots with the blank item
	    for (int i = 0; i < inv.getSize(); i++) {
	        if (inv.getItem(i) == null) {
	            inv.setItem(i, blank);
	        }
	    }

	    // Creating the Diamond Pickaxe item
	    ItemStack pickaxe = new ItemStack(Material.DIAMOND_PICKAXE);
	    ItemMeta pickaxeMeta = pickaxe.getItemMeta();
	    pickaxeMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    pickaxe.setItemMeta(pickaxeMeta);

	    // Creating the Diamond Sword item
	    ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
	    ItemMeta swordMeta = sword.getItemMeta();
	    swordMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    sword.setItemMeta(swordMeta);

	    // Creating the Diamond Axe item
	    ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
	    ItemMeta axeMeta = axe.getItemMeta();
	    axeMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    axe.setItemMeta(axeMeta);

	    // Creating the Diamond Shovel item
	    ItemStack shovel = new ItemStack(Material.DIAMOND_SHOVEL);
	    ItemMeta shovelMeta = shovel.getItemMeta();
	    shovelMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
	    shovel.setItemMeta(shovelMeta);

	    // Setting the items to the respective slots in the inventory
	    inv.setItem(10, pickaxe);  // Slot 10 (0-based index)
	    inv.setItem(12, sword);   // Slot 12 (0-based index)
	    inv.setItem(14, axe);     // Slot 14 (0-based index)
	    inv.setItem(16, shovel);  // Slot 16 (0-based index)

	    // Adding the back button
	    ItemStack backButton = new ItemStack(Material.RED_WOOL);
	    ItemMeta backMeta = backButton.getItemMeta();
	    backMeta.setDisplayName("Back");
	    backButton.setItemMeta(backMeta);

	    inv.setItem(22, backButton); // Slot 21 (0-based index)

	    player.openInventory(inv);
	}
	
	@EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
		Player player = (Player) event.getWhoClicked();
		if(event.getView().getTitle().startsWith("Skin Station")) {
			event.setCancelled(true);
			if(event.getSlot() == 10) {
				FurnitureInventory(player, 0);
			}
			if(event.getSlot() == 12) {
				HatsInventory(player, 0);
			}
			if(event.getSlot() == 14) {
				ArmorCategoriesInventory(player);
				
			}
			if(event.getSlot() == 16) {
				ToolCategoriesInventory(player);
			}
		}
		if(event.getView().getTitle().startsWith("Furniture Skins")) {
	        event.setCancelled(true);
	        
	        int currentPage = currentPages.getOrDefault(player.getUniqueId(), 0);

	        if(event.getSlot() == 21) {
	            if(currentPage > 0) {
	                FurnitureInventory(player, currentPage - 1);
	                currentPages.put(player.getUniqueId(), currentPage - 1);
	            } else {
	                SkinStationInventory(player); // You have this function elsewhere in your code.
	            }
	        } else if (event.getSlot() == 23) {
	            FurnitureInventory(player, currentPage + 1);
	            currentPages.put(player.getUniqueId(), currentPage + 1);
	        } else {
	            ItemStack clickedItem = event.getCurrentItem();
	            if (clickedItem != null && clickedItem.hasItemMeta()) {
	                NamespacedKey key = new NamespacedKey(this, "furnitureKey");
	                String furniture = clickedItem.getItemMeta().getPersistentDataContainer().get(key, PersistentDataType.STRING);
	                
	                if (furniture != null) {
	                    Map<String, Long> playerCooldowns = lastFurnitureClaim.getOrDefault(player.getUniqueId(), new HashMap<>());
	                    long lastClaimTime = playerCooldowns.getOrDefault(furniture, 0L);
	                    int cooldownMinutes = getFurnitures().getInt(furniture + ".Cooldown");
	                    long remainingCooldownMillis = (cooldownMinutes * 60 * 1000) - (System.currentTimeMillis() - lastClaimTime);
	                    
	                    if (remainingCooldownMillis <= 0) {
	                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "iagive " + player.getName() + " " + furniture + " 1");
	                        playerCooldowns.put(furniture, System.currentTimeMillis());
	                        lastFurnitureClaim.put(player.getUniqueId(), playerCooldowns);

	                        // Refresh the inventory to display the cooldown lore.
	                        FurnitureInventory(player, currentPage);
	                        player.sendMessage(ChatColor.GREEN + "You've claimed " + ChatColor.BOLD + furniture + ChatColor.GREEN + "!");
	                    } else {
	                        player.sendMessage(ChatColor.RED + "This item is on cooldown. Please wait.");
	                    }
	                }
	            }
	        }
	    }
		if(event.getView().getTitle().startsWith("Hat Skins")) {
		    event.setCancelled(true);
		    
		    int currentPage = hatCurrentPages.getOrDefault(player.getUniqueId(), 0);

		    if(event.getSlot() == 21) {
		        if(currentPage > 0) {
		            HatsInventory(player, currentPage - 1);
		            hatCurrentPages.put(player.getUniqueId(), currentPage - 1);
		        } else {
		            SkinStationInventory(player); // You have this function elsewhere in your code.
		        }
		    } else if (event.getSlot() == 23) {
		        HatsInventory(player, currentPage + 1);
		        hatCurrentPages.put(player.getUniqueId(), currentPage + 1);
		    } else {
		        ItemStack clickedItem = event.getCurrentItem();
		        if (clickedItem != null && clickedItem.hasItemMeta()) {
		            NamespacedKey key = new NamespacedKey(this, "hatKey");
		            String hat = clickedItem.getItemMeta().getPersistentDataContainer().get(key, PersistentDataType.STRING);
		            
		            if (hat != null) {
		                Map<String, Long> playerCooldowns = lastHatClaim.getOrDefault(player.getUniqueId(), new HashMap<>());
		                long lastClaimTime = playerCooldowns.getOrDefault(hat, 0L);
		                int cooldownMinutes = getHats().getInt(hat + ".Cooldown");
		                long remainingCooldownMillis = (cooldownMinutes * 60 * 1000) - (System.currentTimeMillis() - lastClaimTime);
		                
		                if (remainingCooldownMillis <= 0) {
		                    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "iagive " + player.getName() + " " + hat + " 1");
		                    playerCooldowns.put(hat, System.currentTimeMillis());
		                    lastHatClaim.put(player.getUniqueId(), playerCooldowns);

		                    // Refresh the inventory to display the cooldown lore.
		                    HatsInventory(player, currentPage);
		                    player.sendMessage(ChatColor.GREEN + "You've claimed " + ChatColor.BOLD + hat + ChatColor.GREEN + "!");
		                } else {
		                    player.sendMessage(ChatColor.RED + "This item is on cooldown. Please wait.");
		                }
		            }
		        }
		    }
		}
		if(event.getView().getTitle().startsWith("Armor Skins")) {
			event.setCancelled(true);
			if(event.getSlot() == 21) {
				SkinStationInventory(player);
			}
		}
		if(event.getView().getTitle().startsWith("Tool Skins")) {
			event.setCancelled(true);
			if(event.getSlot() == 21) {
				SkinStationInventory(player);
			}
		}
		if(event.getView().getTitle().startsWith("Armor Categories")) {
			event.setCancelled(true);
			if(event.getSlot() == 22) {
				SkinStationInventory(player);
			}
		}
		if(event.getView().getTitle().startsWith("Tool Categories")) {
			event.setCancelled(true);
			if(event.getSlot() == 22) {
				SkinStationInventory(player);
			}
		}
	}
	
	@EventHandler
	public void onInventoryClose(InventoryCloseEvent event) {
	    if (event.getView().getTitle().startsWith("Furniture Skins")) {
	        currentPages.remove(event.getPlayer().getUniqueId());
	    }
	}

}