@Override protected Button[] setUp() { Button[] buttons = new Button[27]; buttons = pane(buttons); if (structure instanceof Guardian) { ItemStack upgrade = new ItemBuilder(new ItemStack(Material.EMERALD_BLOCK)) .name(ChatColor.YELLOW.toString() + ChatColor.BOLD + "Upgrade") .lore( " ", ChatColor.GREEN.toString() + ChatColor.BOLD + "Click to Upgrade to " + (structure.getLevel() + 1), ChatColor.RED + "Cost: " + structure.getNextCost()) .build(); Guardian structure = (Guardian) this.structure; if (structure.getLevel() == 4) { upgrade = new ItemBuilder(new ItemStack(Material.EMERALD_BLOCK)) .name(ChatColor.AQUA.toString() + ChatColor.BOLD + "Fully Upgraded") .build(); } ItemBuilder builder = new ItemBuilder(new ItemStack(Material.EMERALD)); builder.name(ChatColor.GOLD + "Healing Cooldown"); builder.lore( ChatColor.GREEN.toString() + structure.getCooldown() + " " + Utils.plural("second", structure.getCooldown()), ChatColor.GRAY + "Next: " + ChatColor.GREEN.toString() + (structure.getCooldown() - 5) + Utils.plural("second", structure.getCooldown() - 5)); ItemStack health = new ItemBuilder(new Wool(DyeColor.LIME).toItemStack()) .amount(1) .name(ChatColor.GOLD + "Health Per Cycle") .lore( ChatColor.GREEN.toString() + structure.getHealthPerTick() + " hearts", ChatColor.GRAY + "Next: " + ChatColor.GREEN.toString() + (structure.getHealthPerTick() * 1.5) + "hearts") .build(); buttons[11] = new Button(builder.build(), () -> {}); buttons[13] = new Button(health, () -> {}); buttons[17] = new Button( upgrade, player -> { PlayerInfo info = KingdomDefense.getInstance().getInfoManager().get(player); if (!info.hasEnough(structure.getNextCost())) { player.closeInventory(); info.sendMessage(ChatColor.RED + "You cannot afford this!"); return; } if (!info.remove(structure.getNextCost())) { player.closeInventory(); info.sendMessage(ChatColor.RED + "You cannot afford this!"); return; } player.closeInventory(); player.playSound(player.getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F); if (structure.getLevel() == 5) { return; } structure.setCooldown(structure.getCooldown() - 5); structure.setHealthPerTick(structure.getHealthPerTick() * 1.5); structure.setLevel(structure.getLevel() + 1); info.sendMessage(structure.getName() + ChatColor.AQUA + " tower upgraded!."); }); return buttons; } buttons = pane(buttons); DefenseStructure structure = (DefenseStructure) this.structure; ItemBuilder builder = new ItemBuilder(new ItemStack(Material.EMERALD)); builder.name(ChatColor.GOLD + "Fire Rate"); builder.lore( ChatColor.GREEN.toString() + structure.getFireRate() + " projectiles per second", ChatColor.GRAY + "Next: " + ChatColor.GREEN.toString() + (structure.getFireRate() * 2) + " projectiles per second"); ItemStack damage = new ItemBuilder(new ItemStack(Material.ARROW)) .name(ChatColor.GOLD + "Damage") .lore( ChatColor.GREEN.toString() + structure.getDamage() + " hearts", ChatColor.GRAY + "Next: " + ChatColor.GREEN + (structure.getDamage() * 1.5) + " hearts") .build(); buttons[11] = new Button(builder.build(), () -> {}); buttons[13] = new Button(damage, () -> {}); ItemStack upgrade = new ItemBuilder(new ItemStack(Material.EMERALD_BLOCK)) .name(ChatColor.YELLOW.toString() + ChatColor.BOLD + "Upgrade! ") .lore( " ", ChatColor.GREEN.toString() + ChatColor.BOLD + "Click to Upgrade to Level " + (structure.getLevel() + 1), ChatColor.RED + "Cost: " + structure.getNextCost()) .build(); if (structure.getLevel() == 4) { upgrade = new ItemBuilder(new ItemStack(Material.EMERALD_BLOCK)) .name(ChatColor.AQUA.toString() + ChatColor.BOLD + "Fully Upgraded") .build(); } buttons[17] = new Button( upgrade, player -> { PlayerInfo info = KingdomDefense.getInstance().getInfoManager().get(player); if (!info.hasEnough(structure.getNextCost())) { player.closeInventory(); info.sendMessage(ChatColor.RED + "You cannot afford this!"); return; } if (!info.remove(structure.getNextCost())) { player.closeInventory(); info.sendMessage(ChatColor.RED + "You cannot afford this!"); return; } player.closeInventory(); player.playSound(player.getLocation(), Sound.LEVEL_UP, 1.0F, 1.0F); if (structure.getLevel() == 5) { return; } structure.setFireRate(structure.getFireRate() * 2); structure.setDamage(structure.getDamage() * 1.5); structure.setLevel(structure.getLevel() + 1); player.closeInventory(); info.sendMessage(structure.getName() + ChatColor.YELLOW + " tower upgraded!."); }); return buttons; }
public UpgradeStructureMenu(Structure structure) { super(ChatColor.DARK_PURPLE + "Upgrade " + structure.getBaseName()); this.structure = structure; }