static { //noinspection ConstantConditions COAL_MAP = ImmutableBiMap.<CoalType, Integer>builder() .put(CoalTypes.COAL, 0) .put(CoalTypes.CHARCOAL, 1) .build(); //noinspection ConstantConditions COOKED_FISH_MAP = ImmutableBiMap.<CookedFish, Integer>builder() .put(CookedFishes.COD, 0) .put(CookedFishes.SALMON, 1) .build(); //noinspection deprecation, ConstantConditions DYE_MAP = ImmutableBiMap.<DyeColor, Integer>builder() .put(DyeColors.BLACK, (int) org.bukkit.DyeColor.BLACK.getDyeData()) .put(DyeColors.RED, (int) org.bukkit.DyeColor.RED.getDyeData()) .put(DyeColors.GREEN, (int) org.bukkit.DyeColor.GREEN.getDyeData()) .put(DyeColors.BROWN, (int) org.bukkit.DyeColor.BROWN.getDyeData()) .put(DyeColors.BLUE, (int) org.bukkit.DyeColor.BLUE.getDyeData()) .put(DyeColors.PURPLE, (int) org.bukkit.DyeColor.PURPLE.getDyeData()) .put(DyeColors.CYAN, (int) org.bukkit.DyeColor.CYAN.getDyeData()) .put(DyeColors.SILVER, (int) org.bukkit.DyeColor.SILVER.getDyeData()) .put(DyeColors.GRAY, (int) org.bukkit.DyeColor.GRAY.getDyeData()) .put(DyeColors.PINK, (int) org.bukkit.DyeColor.PINK.getDyeData()) .put(DyeColors.LIME, (int) org.bukkit.DyeColor.LIME.getDyeData()) .put(DyeColors.YELLOW, (int) org.bukkit.DyeColor.YELLOW.getDyeData()) .put(DyeColors.LIGHT_BLUE, (int) org.bukkit.DyeColor.LIGHT_BLUE.getDyeData()) .put(DyeColors.MAGENTA, (int) org.bukkit.DyeColor.MAGENTA.getDyeData()) .put(DyeColors.ORANGE, (int) org.bukkit.DyeColor.ORANGE.getDyeData()) .put(DyeColors.WHITE, (int) org.bukkit.DyeColor.WHITE.getDyeData()) .build(); //noinspection ConstantConditions FISH_MAP = ImmutableBiMap.<Fish, Integer>builder() .put(Fishes.COD, 0) .put(Fishes.SALMON, 1) .put(Fishes.CLOWNFISH, 2) .put(Fishes.PUFFERFISH, 3) .build(); //noinspection ConstantConditions GOLDEN_APPLE_MAP = ImmutableBiMap.<GoldenApple, Integer>builder() .put(GoldenApples.GOLDEN_APPLE, 0) .put(GoldenApples.ENCHANTED_GOLDEN_APPLE, 1) .build(); }
@SuppressWarnings("deprecation") public static Inventory constructInventory( TitlesPlugin plugin, Player player, String cat, boolean owned) { DataContainer dataContainer = plugin.getDataContainer(); Inventory inv = null; // if there are titles, construct category inventory if (!dataContainer.getTitles().isEmpty()) { List<String> categories = GetCommands.getCategories(dataContainer); List<ItemStack> clickables = new ArrayList<>(); // get inventory with categories. if (cat == null) { if (owned) { List<Title> unlocked = dataContainer.getUnlockedTitles(player); for (Title title : unlocked) { ItemStack is; String name = title.getName(); String description = title.getDescription(); String status; if (dataContainer.getCurrentTitle(player) != null && dataContainer.getCurrentTitle(player).equals(title)) { is = new ItemStack(Material.WOOL, 1, DyeColor.LIME.getData()); status = "Current"; } else { is = new ItemStack(Material.WOOL, 1, DyeColor.GREEN.getData()); status = "Unlocked"; } ItemMeta meta = is.getItemMeta(); meta.setDisplayName(name); meta.setLore( Arrays.asList( "Description: " + description, "Category: " + title.getCategory().getName(), "Status: " + status)); is.setItemMeta(meta); clickables.add(is); } int size = ((clickables.size() / 9) + 1) * 9; inv = Bukkit.createInventory( null, size, ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "Unlocked Titles"); for (int i = 0; i < clickables.size(); i++) inv.setItem(i, clickables.get(i)); // back button ItemStack is = new ItemStack(Material.WOOL, 1, DyeColor.GRAY.getData()); ItemMeta meta = is.getItemMeta(); meta.setDisplayName("Back"); is.setItemMeta(meta); inv.setItem(inv.getSize() - 1, is); return inv; } for (String category : categories) { ItemStack is = new ItemStack(Material.WOOL, 1, DyeColor.GRAY.getData()); ItemMeta meta = is.getItemMeta(); meta.setDisplayName(category); is.setItemMeta(meta); clickables.add(is); } int size = ((clickables.size() / 9) + 1) * 9; inv = Bukkit.createInventory( null, size, ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "Title categories"); // get inventory with titles from category. } else { Category category = dataContainer.getCategory(cat); if (category == null) return null; List<Title> titles = dataContainer.getTitlesFromCategory(category); List<Title> ownedTitles = dataContainer.getUnlockedTitles(player); for (Title title : titles) { ItemStack is; String name = title.getName(); String description = title.getDescription(); String status; if (ownedTitles.contains(title)) { if (dataContainer.getCurrentTitle(player) != null && dataContainer.getCurrentTitle(player).equals(title)) { is = new ItemStack(Material.WOOL, 1, DyeColor.LIME.getData()); status = "Current"; } else { is = new ItemStack(Material.WOOL, 1, DyeColor.GREEN.getData()); status = "Unlocked"; } } else { Request request = dataContainer.getRequest(player); if (request != null && request.getTitle().equals(title) && request.getStatus() == RequestStatus.pending) { is = new ItemStack(Material.WOOL, 1, DyeColor.ORANGE.getData()); status = "Pending"; } else { is = new ItemStack(Material.WOOL, 1, DyeColor.RED.getData()); status = "Locked"; } } ItemMeta meta = is.getItemMeta(); meta.setDisplayName(name); meta.setLore( Arrays.asList( "Description: " + description, "Category: " + category.getName(), "Status: " + status)); is.setItemMeta(meta); clickables.add(is); } int size = ((clickables.size() / 9) + 1) * 9; inv = Bukkit.createInventory( null, size, ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "Titles in category"); } for (int i = 0; i < clickables.size(); i++) inv.setItem(i, clickables.get(i)); // back button if (cat != null) { ItemStack is = new ItemStack(Material.WOOL, 1, DyeColor.GRAY.getData()); ItemMeta meta = is.getItemMeta(); meta.setDisplayName("Back"); is.setItemMeta(meta); inv.setItem(inv.getSize() - 1, is); // player's unlocked titles } else { ItemStack is = new ItemStack(Material.WOOL, 1, DyeColor.GREEN.getData()); ItemMeta meta = is.getItemMeta(); meta.setDisplayName("Unlocked"); is.setItemMeta(meta); inv.setItem(inv.getSize() - 1, is); } } else Utils.sendError(player, "There are no titles yet."); return inv; }