package be.isach.ultracosmetics.menu.menus; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.UltraCosmeticsData; import be.isach.ultracosmetics.config.MessageManager; import be.isach.ultracosmetics.cosmetics.Category; import be.isach.ultracosmetics.menu.Menu; import be.isach.ultracosmetics.player.UltraPlayer; import be.isach.ultracosmetics.util.ItemFactory; import be.isach.ultracosmetics.util.SoundUtil; import be.isach.ultracosmetics.util.Sounds; 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.material.MaterialData; import static be.isach.ultracosmetics.manager.TreasureChestManager.tryOpenChest; /** * Main {@link be.isach.ultracosmetics.menu.Menu Menu}. * * @author iSach * @since 08-23-2016 */ public class MenuMain extends Menu { private int[] layout; public MenuMain(UltraCosmetics ultraCosmetics) { super(ultraCosmetics); switch (Category.enabledSize()) { case 8: layout = new int[]{10, 12, 14, 16, 28, 30, 32, 34}; break; case 7: layout = new int[]{10, 13, 16, 28, 30, 32, 34}; break; case 6: layout = new int[]{10, 13, 16, 28, 31, 34}; break; case 5: layout = new int[]{10, 16, 22, 29, 33}; break; case 4: layout = new int[]{19, 21, 23, 25}; break; case 3: layout = new int[]{20, 22, 24}; break; case 2: layout = new int[]{21, 23}; break; case 1: layout = new int[]{22}; break; } if (UltraCosmeticsData.get().areTreasureChestsEnabled()) { for (int i = 0; i < layout.length; i++) { layout[i] += 9; } } } @Override public void open(UltraPlayer player) { if (!UltraCosmeticsData.get().areTreasureChestsEnabled() && Category.enabledSize() == 1) { Category.enabled().get(0).getMenu(getUltraCosmetics()).open(player); return; } super.open(player); } @Override protected void putItems(Inventory inventory, UltraPlayer player) { for (int i = 0; i < Category.enabledSize(); i++) { int slot = layout[i]; Category category = Category.enabled().get(i); putItem(inventory, slot, category.getItemStack(), data -> category.getMenu(getUltraCosmetics()).open(player)); } // Clear cosmetics item. MaterialData materialData = ItemFactory.createFromConfig("Categories.Clear-Cosmetic-Item"); String message = MessageManager.getMessage("Clear-Cosmetics"); ItemStack itemStack = ItemFactory.create(materialData.getItemType(), materialData.getData(), message); putItem(inventory, inventory.getSize() - 5, itemStack, data -> { player.clear(); open(player); }); if (UltraCosmeticsData.get().areTreasureChestsEnabled()) { ItemStack chest; String msgChests = MessageManager.getMessage("Treasure-Chests"); if (player.getKeys() == 0) { chest = ItemFactory.create(Material.CHEST, (byte) 0x0, msgChests, "", MessageManager.getMessage("Dont-Have-Key"), getUltraCosmetics().isVaultLoaded() ? "" : null, getUltraCosmetics().isVaultLoaded() ? MessageManager.getMessage("Click-Buy-Key") : null, getUltraCosmetics().isVaultLoaded() ? "" : null); }else { chest = ItemFactory.create(Material.CHEST, (byte) 0x0, msgChests, "", MessageManager.getMessage("Click-Open-Chest"), ""); } ItemStack keys = ItemFactory.create(Material.TRIPWIRE_HOOK, (byte) 0x0, MessageManager.getMessage("Treasure-Keys"), "", MessageManager.getMessage("Your-Keys").replace("%keys%", player.getKeys() + ""), getUltraCosmetics().isVaultLoaded() ? "" : null, getUltraCosmetics().isVaultLoaded() ? MessageManager.getMessage("Click-Buy-Key") : null, getUltraCosmetics().isVaultLoaded() ? "" : null); putItem(inventory, 5, keys, (data) -> { if (!getUltraCosmetics().isVaultLoaded() && player.getKeys() == 0) { SoundUtil.playSound(player.getBukkitPlayer().getLocation(), Sounds.ANVIL_LAND, 0.2f, 1.2f); return; } player.getBukkitPlayer().closeInventory(); player.openKeyPurchaseMenu(); }); putItem(inventory, 3, chest, (data) -> { if (!getUltraCosmetics().isVaultLoaded() && player.getKeys() == 0) { SoundUtil.playSound(player.getBukkitPlayer().getLocation(), Sounds.ANVIL_LAND, 0.2f, 1.2f); return; } tryOpenChest(player.getBukkitPlayer()); }); } } @Override protected String getName() { return MessageManager.getMessage("Menus.Main-Menu"); } @Override protected int getSize() { return UltraCosmeticsData.get().areTreasureChestsEnabled() ? 54 : 45; } }