package net.knarcraft.blockhunt.util; import net.knarcraft.blockhunt.MemoryStorage; import net.knarcraft.blockhunt.arena.Arena; import net.knarcraft.blockhunt.arena.ArenaProperty; import net.knarcraft.blockhunt.config.ConfigKey; import net.knarcraft.blockhunt.config.MessageKey; import net.knarcraft.blockhunt.config.Permission; import net.knarcraft.blockhunt.manager.PermissionsManager; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; public final class InventoryHelper { private InventoryHelper() { } public static void openPanel(Player player, String arenaName) { Arena arena = MemoryStorage.arenaMap.get(arenaName.toLowerCase()); if (arena != null) { String shorten = arena.arenaName; if (shorten.length() > 6) { shorten = shorten.substring(0, 6); } Inventory panel = Bukkit.createInventory(null, 54, MessageHelper.replaceAll("\u00A7r%N&lBlockHunt Arena: %A" + shorten)); ItemStack arenaNameNote = new ItemStack(Material.PAPER, 1); ItemMeta arenaNameNote_IM = arenaNameNote.getItemMeta(); arenaNameNote_IM.setDisplayName(MessageHelper.replaceAll("%NBlockHunt arena: %A" + arena.arenaName)); arenaNameNote.setItemMeta(arenaNameNote_IM); panel.setItem(0, arenaNameNote); // ItemStack maxPlayers_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack maxPlayers = new ItemStack(Material.BEDROCK, arena.maxPlayers); ItemStack maxPlayers_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack minPlayers_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack minPlayers = new ItemStack(Material.BEDROCK, arena.minPlayers); ItemStack minPlayers_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack amountSeekersOnStart_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack amountSeekersOnStart = new ItemStack(Material.BEDROCK, arena.amountSeekersOnStart); ItemStack amountSeekersOnStart_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack timeInLobbyUntilStart_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack timeInLobbyUntilStart = new ItemStack(Material.BEDROCK, arena.timeInLobbyUntilStart); ItemStack timeInLobbyUntilStart_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack waitingTimeSeeker_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack waitingTimeSeeker = new ItemStack(Material.BEDROCK, arena.waitingTimeSeeker); ItemStack waitingTimeSeeker_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack gameTime_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack gameTime = new ItemStack(Material.BEDROCK, arena.gameTime); ItemStack gameTime_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack disguiseBlocks_NOTE = new ItemStack(Material.BOOK, 1); ItemMeta disguiseBlocks_NOTE_IM = disguiseBlocks_NOTE.getItemMeta(); disguiseBlocks_NOTE_IM.setDisplayName(MessageHelper.replaceAll("%NSet the %AdisguiseBlocks%N.")); disguiseBlocks_NOTE.setItemMeta(disguiseBlocks_NOTE_IM); panel.setItem(36, disguiseBlocks_NOTE); ItemStack blockAnnouncerTime_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack blockAnnouncerTime = new ItemStack(Material.BEDROCK, arena.blockAnnouncerTime); ItemStack blockAnnouncerTime_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack timeUntilHidersSword_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack timeUntilHidersSword = new ItemStack(Material.BEDROCK, arena.timeUntilHidersSword); ItemStack timeUntilHidersSword_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack hidersTokenWin_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack hidersTokenWin = new ItemStack(Material.BEDROCK, arena.hidersTokenWin); ItemStack hidersTokenWin_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack seekersTokenWin_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack seekersTokenWin = new ItemStack(Material.BEDROCK, arena.seekersTokenWin); ItemStack seekersTokenWin_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack killTokens_UP = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack killTokens = new ItemStack(Material.BEDROCK, arena.killTokens); ItemStack killTokens_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); // upDownButton(panel, arena, ArenaProperty.MAX_PLAYERS, "maxPlayers", "1", maxPlayers_UP, maxPlayers, maxPlayers_DOWN, 1, 10, 19); upDownButton(panel, arena, ArenaProperty.MIN_PLAYERS, "minPlayers", "1", minPlayers_UP, minPlayers, minPlayers_DOWN, 2, 11, 20); upDownButton(panel, arena, ArenaProperty.AMOUNT_SEEKERS_ON_START, "amountSeekersOnStart", "1", amountSeekersOnStart_UP, amountSeekersOnStart, amountSeekersOnStart_DOWN, 4, 13, 22); upDownButton(panel, arena, ArenaProperty.TIME_IN_LOBBY_UNTIL_START, "timeInLobbyUntilStart", "1 %Nsecond", timeInLobbyUntilStart_UP, timeInLobbyUntilStart, timeInLobbyUntilStart_DOWN, 6, 15, 24); upDownButton(panel, arena, ArenaProperty.WAITING_TIME_SEEKER, "waitingTimeSeeker", "1 %Nsecond", waitingTimeSeeker_UP, waitingTimeSeeker, waitingTimeSeeker_DOWN, 7, 16, 25); upDownButton(panel, arena, ArenaProperty.GAME_TIME, "gameTime", "1 %Nsecond", gameTime_UP, gameTime, gameTime_DOWN, 8, 17, 26); upDownButton(panel, arena, ArenaProperty.BLOCK_ANNOUNCER_TIME, "blockAnnouncerTime", "5 %Nseconds", blockAnnouncerTime_UP, blockAnnouncerTime, blockAnnouncerTime_DOWN, 29, 38, 47); upDownButton(panel, arena, ArenaProperty.TIME_UNTIL_HIDERS_SWORD, "timeUntilHidersSword", "1 %Nsecond", timeUntilHidersSword_UP, timeUntilHidersSword, timeUntilHidersSword_DOWN, 30, 39, 48); upDownButton(panel, arena, ArenaProperty.HIDERS_TOKEN_WIN, "hidersTokenWin", "1 %Ntoken", hidersTokenWin_UP, hidersTokenWin, hidersTokenWin_DOWN, 32, 41, 50); upDownButton(panel, arena, ArenaProperty.SEEKERS_TOKEN_WIN, "seekersTokenWin", "1 %Ntoken", seekersTokenWin_UP, seekersTokenWin, seekersTokenWin_DOWN, 33, 42, 51); upDownButton(panel, arena, ArenaProperty.KILL_TOKENS, "killTokens", "1 %Ntoken", killTokens_UP, killTokens, killTokens_DOWN, 34, 43, 52); player.openInventory(panel); } else { MessageHelper.sendMessage(player, MessageKey.ERROR_NO_ARENA, "name-" + arenaName); } } public static void upDownButton(Inventory panel, Arena arena, ArenaProperty arenaProperty, String option, String addRemove, ItemStack upItem, ItemStack buttonItem, ItemStack downItem, int up, int button, int down) { ItemMeta upItemItemMeta = upItem.getItemMeta(); upItemItemMeta.setDisplayName(MessageHelper.replaceAll((String) MemoryStorage.messages.get(MessageKey.BUTTON_ADD), "1-" + addRemove, "2-" + option)); upItem.setItemMeta(upItemItemMeta); int setting = switch (arenaProperty) { case MAX_PLAYERS -> arena.maxPlayers; case MIN_PLAYERS -> arena.minPlayers; case AMOUNT_SEEKERS_ON_START -> arena.amountSeekersOnStart; case TIME_IN_LOBBY_UNTIL_START -> arena.timeInLobbyUntilStart; case WAITING_TIME_SEEKER -> arena.waitingTimeSeeker; case GAME_TIME -> arena.gameTime; case TIME_UNTIL_HIDERS_SWORD -> arena.timeUntilHidersSword; case BLOCK_ANNOUNCER_TIME -> arena.blockAnnouncerTime; case HIDERS_TOKEN_WIN -> arena.hidersTokenWin; case SEEKERS_TOKEN_WIN -> arena.seekersTokenWin; case KILL_TOKENS -> arena.killTokens; }; ItemMeta buttonItemMeta = buttonItem.getItemMeta(); buttonItemMeta.setDisplayName(MessageHelper.replaceAll( (String) MemoryStorage.messages.get(MessageKey.BUTTON_SETTING), "1-" + option, "2-" + setting)); buttonItem.setItemMeta(buttonItemMeta); ItemMeta DOWN_IM = downItem.getItemMeta(); DOWN_IM.setDisplayName(MessageHelper.replaceAll( (String) MemoryStorage.messages.get(MessageKey.BUTTON_REMOVE), "1-" + addRemove, "2-" + option)); downItem.setItemMeta(DOWN_IM); panel.setItem(up, upItem); panel.setItem(button, buttonItem); panel.setItem(down, downItem); } public static void openDisguiseBlocks(Arena arena, Player player) { String arenaName = arena.arenaName; Inventory panel = Bukkit.createInventory(null, 36, MessageHelper.replaceAll("%N&lDisguiseBlocks")); ItemStack arenaNameNote = new ItemStack(Material.PAPER, 1); ItemMeta arenaNameNoteItemMeta = arenaNameNote.getItemMeta(); arenaNameNoteItemMeta.setDisplayName(MessageHelper.replaceAll("%NDisguiseBlocks of arena: %A" + arenaName)); List loreLines = new ArrayList<>(); loreLines.add(MessageHelper.replaceAll("%NPlace the DisguiseBlocks inside this inventory.")); arenaNameNoteItemMeta.setLore(loreLines); arenaNameNote.setItemMeta(arenaNameNoteItemMeta); panel.setItem(0, arenaNameNote); if (arena.disguiseBlocks != null) { for (int i = arena.disguiseBlocks.size(); i > 0; i = i - 1) { panel.setItem(i, arena.disguiseBlocks.get(i - 1)); } } player.openInventory(panel); } public static void openShop(Player player) { Inventory shop = Bukkit.createInventory(null, 9, MessageHelper.replaceAll("\u00A7r" + MemoryStorage.config.get(ConfigKey.SHOP_TITLE))); int playerTokens = TokensHelper.getTokens(player); List loreLines; List loreLines2; ItemStack shopTokens = new ItemStack(Material.EMERALD, 1); ItemMeta shopTokensItemMeta = shopTokens.getItemMeta(); shopTokensItemMeta.setDisplayName(MessageHelper.replaceAll("%N&lTokens: %A" + playerTokens)); shopTokens.setItemMeta(shopTokensItemMeta); ItemStack shopBlockChooser = new ItemStack(Material.getMaterial((String) MemoryStorage.config.get( ConfigKey.SHOP_BLOCK_CHOOSER_V_1_ID_NAME)), 1); ItemMeta shopBlockChooserItemMeta = shopBlockChooser.getItemMeta(); shopBlockChooserItemMeta.setDisplayName(MessageHelper.replaceAll((String) MemoryStorage.config.get( ConfigKey.SHOP_BLOCK_CHOOSER_V_1_NAME))); loreLines = MemoryStorage.config.getFileConfiguration().getStringList(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_DESCRIPTION.getPath()); loreLines2 = new ArrayList<>(); for (String lore : loreLines) { loreLines2.add(MessageHelper.replaceAll(lore)); } loreLines2.add(MessageHelper.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_PRICE), "amount-" + MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_PRICE))); shopBlockChooserItemMeta.setLore(loreLines2); shopBlockChooser.setItemMeta(shopBlockChooserItemMeta); ItemStack shopBlockHuntPass = new ItemStack(Material.getMaterial((String) MemoryStorage.config.get( ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_ID_NAME)), 1); ItemMeta shopBlockHuntPass_IM = shopBlockHuntPass.getItemMeta(); shopBlockHuntPass_IM.setDisplayName(MessageHelper.replaceAll((String) MemoryStorage.config.get( ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_NAME))); loreLines = MemoryStorage.config.getFileConfiguration().getStringList(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_DESCRIPTION.getPath()); loreLines2 = new ArrayList<>(); for (String lore : loreLines) { loreLines2.add(MessageHelper.replaceAll(lore)); } loreLines2.add(MessageHelper.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_PRICE), "amount-" + MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_PRICE))); shopBlockHuntPass_IM.setLore(loreLines2); shopBlockHuntPass.setItemMeta(shopBlockHuntPass_IM); shop.setItem(0, shopTokens); if ((Boolean) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_ENABLED) && (MemoryStorage.shop.getFileConfiguration().get(player.getName() + ".blockchooser") == null && !PermissionsManager.hasPermission(player, Permission.SHOP_BLOCK_CHOOSER, false))) { shop.setItem(1, shopBlockChooser); } if ((Boolean) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_ENABLED)) { shop.setItem(2, shopBlockHuntPass); } player.openInventory(shop); } }