BlockHunt/src/main/java/net/knarcraft/blockhunt/util/InventoryHelper.java

245 lines
13 KiB
Java

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<String> 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<String> loreLines;
List<String> 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);
}
}