package com.walrusone.skywars.menus; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import com.google.common.collect.Lists; import com.walrusone.skywars.SkyWarsReloaded; import com.walrusone.skywars.game.Game; import com.walrusone.skywars.game.GamePlayer; import com.walrusone.skywars.game.Game.GameState; import com.walrusone.skywars.utilities.IconMenu; import com.walrusone.skywars.utilities.Messaging; public class JumpMenu { private static final int menuSlotsPerRow = 9; private static final int menuSize = 36; private static final String jumpMenuName = new Messaging.MessageFormatter().format("menu.jump-menu-title"); public JumpMenu(final GamePlayer gamePlayer) { int rowCount = menuSlotsPerRow; while (rowCount < 36 && rowCount < menuSize) { rowCount += menuSlotsPerRow; } SkyWarsReloaded.getIC().create(gamePlayer.getP(), jumpMenuName, rowCount, new IconMenu.OptionClickEventHandler() { @Override public void onOptionClick(IconMenu.OptionClickEvent event) { String vote = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', event.getName())); if (gamePlayer.getGame().getState() != GameState.PREGAME) { return; } if (!hasJumpPermission(event.getPlayer())) { return; } event.setWillClose(false); event.setWillDestroy(false); int lastVote = gamePlayer.getJumpVote(); if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.jump-normal"))))) { gamePlayer.setJumpVote(1); gamePlayer.getP().closeInventory(); if (gamePlayer.getGame().getState() == GameState.PREGAME) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { @Override public void run() { new MainMenu(gamePlayer); } }, 2); } } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.jump-highjump"))))) { gamePlayer.setJumpVote(2); gamePlayer.getP().closeInventory(); if (gamePlayer.getGame().getState() == GameState.PREGAME) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { @Override public void run() { new MainMenu(gamePlayer); } }, 2); } } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.jump-superjump"))))) { gamePlayer.setJumpVote(3); gamePlayer.getP().closeInventory(); if (gamePlayer.getGame().getState() == GameState.PREGAME) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { @Override public void run() { new MainMenu(gamePlayer); } }, 2); } } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.jump-godjump"))))) { gamePlayer.setJumpVote(4); gamePlayer.getP().closeInventory(); if (gamePlayer.getGame().getState() == GameState.PREGAME) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { @Override public void run() { new MainMenu(gamePlayer); } }, 2); } } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.return-to-options"))))) { gamePlayer.getP().closeInventory(); if (gamePlayer.getGame().getState() == GameState.PREGAME) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { @Override public void run() { new MainMenu(gamePlayer); } }, 2); } } if (gamePlayer.getJumpVote() != lastVote) { Game game = gamePlayer.getGame(); for (GamePlayer gPlayer: game.getPlayers()) { if (gPlayer.getP() != null) { gPlayer.getP().sendMessage(new Messaging.MessageFormatter() .withPrefix() .setVariable("player", gamePlayer.getName()) .setVariable("jump", vote.toUpperCase()) .format("game.voted-for-jump")); } } game.playSound(SkyWarsReloaded.getCfg().getJumpVoteSound()); } } }); Game game = gamePlayer.getGame(); int votesForNormal = 0; int votesForHigh = 0; int votesForSuper = 0; int votesForGod = 0; for (GamePlayer gPlayer: game.getPlayers()) { if (gPlayer.getJumpVote() == 1) { votesForNormal++; } else if (gPlayer.getJumpVote() == 2) { votesForHigh++; } else if (gPlayer.getJumpVote() == 3) { votesForSuper++; } else if (gPlayer.getJumpVote() == 4) { votesForGod++; } } if (gamePlayer.getP() != null) { List<String> loreList = Lists.newLinkedList(); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), 1, new ItemStack(Material.DIAMOND_BOOTS, votesForNormal), new Messaging.MessageFormatter().format("menu.jump-normal"), loreList.toArray(new String[loreList.size()])); List<String> loreList3 = Lists.newLinkedList(); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), 3, new ItemStack(Material.DIAMOND_BOOTS, votesForHigh), new Messaging.MessageFormatter().format("menu.jump-highjump"), loreList3.toArray(new String[loreList3.size()])); List<String> loreList2 = Lists.newLinkedList(); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), 5, new ItemStack(Material.DIAMOND_BOOTS, (votesForSuper)), new Messaging.MessageFormatter().format("menu.jump-superjump"), loreList2.toArray(new String[loreList2.size()])); List<String> loreList4 = Lists.newLinkedList(); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), 7, new ItemStack(Material.DIAMOND_BOOTS, (votesForGod)), new Messaging.MessageFormatter().format("menu.jump-godjump"), loreList4.toArray(new String[loreList4.size()])); List<String> loreList5 = Lists.newLinkedList(); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), 35, new ItemStack(Material.TORCH, 1), new Messaging.MessageFormatter().format("menu.return-to-options"), loreList5.toArray(new String[loreList5.size()])); SkyWarsReloaded.getIC().show(gamePlayer.getP()); } } public boolean hasJumpPermission(Player player) { return player.isOp() || player.hasPermission("swr.jumpvote"); } }