package org.arkham.cs.cosmetics; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.UUID; import org.arkham.cs.CosmeticSuite; import org.arkham.cs.gui.Category; import org.arkham.cs.interfaces.Button; import org.arkham.cs.utils.PlayerMetaDataUtil; import org.arkham.cs.utils.Rank; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; public class BlockTrail extends Button { private Rank rank; public static HashMap<UUID, BlockTrail> blocks = new HashMap<>(); private static HashMap<Rank, List<BlockTrail>> blocksByRank = new HashMap<>(); /** * * @param slot * @param permission * @param item */ public BlockTrail(int slot, String permission, ItemStack item, Rank rank){ super(slot, Category.CURSE_BLOCKS, permission, item); this.rank = rank; List<BlockTrail> cbs = blocksByRank.get(rank); if(cbs == null){ cbs = new ArrayList<>(); } cbs.add(this); if(rank == Rank.SUPERHERO){ cbs.addAll(blocksByRank.get(Rank.HERO)); } blocksByRank.put(rank, cbs); } public BlockTrail(int i, ItemStack item, Rank rank, String permission){ this(i, permission, item, rank); } public Rank getRank(){ return rank; } @Override public void onClick(Player player) { PlayerMetaDataUtil.removeFromSwitching(player); if(blocks.containsKey(player.getUniqueId()) && blocks.get(player.getUniqueId()).equals(this)){ // Cancel effect... blocks.remove(player.getUniqueId()); player.sendMessage(CosmeticSuite.PREFIX + "Your have disabled your block trail."); } else { blocks.put(player.getUniqueId(), this); String item = getPermission().replace("cosmetics.cursedblocks.", "").replace("_", " "); player.sendMessage(CosmeticSuite.PREFIX + "Your new block trail is: " + ChatColor.UNDERLINE + item); } player.closeInventory(); } public static BlockTrail get(Player player){ return blocks.get(player.getUniqueId()); } public static List<BlockTrail> getByRank(Rank rank){ return blocksByRank.get(rank); } }