234 lines
13 KiB
Java
234 lines
13 KiB
Java
package net.knarcraft.blockhunt;
|
|
|
|
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.MessageManager;
|
|
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 class InventoryHandler {
|
|
|
|
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, MessageManager.replaceAll("\u00A7r%N&lBlockHunt Arena: %A" + shorten));
|
|
|
|
ItemStack arenaNameNote = new ItemStack(Material.PAPER, 1);
|
|
ItemMeta arenaNameNote_IM = arenaNameNote.getItemMeta();
|
|
arenaNameNote_IM.setDisplayName(MessageManager.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(MessageManager.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 {
|
|
MessageManager.sendFMessage(player, MessageKey.ERROR_NO_ARENA, "name-" + arenaName);
|
|
}
|
|
}
|
|
|
|
public static void updownButton(Inventory panel, Arena arena, ArenaProperty at, String option, String addremove, ItemStack UP, ItemStack BUTTON, ItemStack DOWN, int up,
|
|
int button, int down) {
|
|
ItemMeta UP_IM = UP.getItemMeta();
|
|
UP_IM.setDisplayName(MessageManager.replaceAll((String) MemoryStorage.messages.get(MessageKey.BUTTON_ADD), "1-" + addremove, "2-" + option));
|
|
UP.setItemMeta(UP_IM);
|
|
|
|
int setting = switch (at) {
|
|
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;
|
|
default -> 0;
|
|
};
|
|
|
|
ItemMeta BUTTON_IM = BUTTON.getItemMeta();
|
|
BUTTON_IM.setDisplayName(MessageManager.replaceAll((String) MemoryStorage.messages.get(MessageKey.BUTTON_SETTING), "1-" + option, "2-" + setting));
|
|
BUTTON.setItemMeta(BUTTON_IM);
|
|
|
|
ItemMeta DOWN_IM = DOWN.getItemMeta();
|
|
DOWN_IM.setDisplayName(MessageManager.replaceAll((String) MemoryStorage.messages.get(MessageKey.BUTTON_REMOVE), "1-" + addremove, "2-" + option));
|
|
DOWN.setItemMeta(DOWN_IM);
|
|
|
|
panel.setItem(up, UP);
|
|
panel.setItem(button, BUTTON);
|
|
panel.setItem(down, DOWN);
|
|
}
|
|
|
|
public static void openDisguiseBlocks(Arena arena, Player player) {
|
|
String arenaName = arena.arenaName;
|
|
Inventory panel = Bukkit.createInventory(null, 36, MessageManager.replaceAll("%N&lDisguiseBlocks"));
|
|
|
|
ItemStack arenaNameNote = new ItemStack(Material.PAPER, 1);
|
|
ItemMeta arenaNameNote_IM = arenaNameNote.getItemMeta();
|
|
arenaNameNote_IM.setDisplayName(MessageManager.replaceAll("%NDisguiseBlocks of arena: %A" + arenaName));
|
|
ArrayList<String> lores = new ArrayList<>();
|
|
lores.add(MessageManager.replaceAll("%NPlace the DisguiseBlocks inside this inventory."));
|
|
arenaNameNote_IM.setLore(lores);
|
|
arenaNameNote.setItemMeta(arenaNameNote_IM);
|
|
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, MessageManager.replaceAll("\u00A7r" + MemoryStorage.config.get(ConfigKey.SHOP_TITLE)));
|
|
if (MemoryStorage.shop.getFile().get(player.getName() + ".tokens") == null) {
|
|
MemoryStorage.shop.getFile().set(player.getName() + ".tokens", 0);
|
|
MemoryStorage.shop.save();
|
|
}
|
|
int playerTokens = MemoryStorage.shop.getFile().getInt(player.getName() + ".tokens");
|
|
List<String> lores = new ArrayList<>();
|
|
List<String> lores2 = new ArrayList<>();
|
|
|
|
ItemStack shopTokens = new ItemStack(Material.EMERALD, 1);
|
|
ItemMeta shopTokens_IM = shopTokens.getItemMeta();
|
|
shopTokens_IM.setDisplayName(MessageManager.replaceAll("%N&lTokens: %A" + playerTokens));
|
|
shopTokens.setItemMeta(shopTokens_IM);
|
|
|
|
ItemStack shopBlockChooser = new ItemStack(Material.getMaterial((String) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_ID_NAME)), 1);
|
|
ItemMeta shopBlockChooser_IM = shopBlockChooser.getItemMeta();
|
|
shopBlockChooser_IM.setDisplayName(MessageManager.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_NAME)));
|
|
lores = MemoryStorage.config.getFile().getStringList(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_DESCRIPTION.getPath());
|
|
lores2 = new ArrayList<>();
|
|
for (String lore : lores) {
|
|
lores2.add(MessageManager.replaceAll(lore));
|
|
}
|
|
|
|
lores2.add(MessageManager.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_PRICE), "amount-" + MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_PRICE)));
|
|
|
|
shopBlockChooser_IM.setLore(lores2);
|
|
shopBlockChooser.setItemMeta(shopBlockChooser_IM);
|
|
|
|
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(MessageManager.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_NAME)));
|
|
lores = MemoryStorage.config.getFile().getStringList(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_DESCRIPTION.getPath());
|
|
lores2 = new ArrayList<>();
|
|
for (String lore : lores) {
|
|
lores2.add(MessageManager.replaceAll(lore));
|
|
}
|
|
|
|
lores2.add(MessageManager.replaceAll((String) MemoryStorage.config.get(ConfigKey.SHOP_PRICE), "amount-" + MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_HUNT_PASS_V_2_PRICE)));
|
|
|
|
shopBlockHuntPass_IM.setLore(lores2);
|
|
shopBlockHuntPass.setItemMeta(shopBlockHuntPass_IM);
|
|
|
|
shop.setItem(0, shopTokens);
|
|
if ((Boolean) MemoryStorage.config.get(ConfigKey.SHOP_BLOCK_CHOOSER_V_1_ENABLED)
|
|
&& (MemoryStorage.shop.getFile().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);
|
|
}
|
|
}
|