package com.walrusone.skywars.menus; import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; import com.walrusone.skywars.SkyWarsReloaded; import com.walrusone.skywars.game.Game; import com.walrusone.skywars.game.GamePlayer; import com.walrusone.skywars.utilities.IconMenu; import com.walrusone.skywars.utilities.Messaging; public class SpecPlayerMenu { private static final int menuSlotsPerRow = 9; private static final int menuSize = 54; private static final String menuName = new Messaging.MessageFormatter().format("menu.spectate-menu-title"); public SpecPlayerMenu(final GamePlayer gamePlayer) { List<Player> availablePlayers = new ArrayList<Player>(); Game game; game = gamePlayer.getSpecGame(); for (GamePlayer gPlayer: game.getPlayers()) { if (gPlayer.getP() != null) { availablePlayers.add(gPlayer.getP()); } } int rowCount = menuSlotsPerRow; while (rowCount < game.getNumberOfSpawns() && rowCount < menuSize) { rowCount += menuSlotsPerRow; } SkyWarsReloaded.getIC().create(gamePlayer.getP(), menuName, rowCount, new IconMenu.OptionClickEventHandler() { @Override public void onOptionClick(IconMenu.OptionClickEvent event) { String name = ChatColor.stripColor(event.getName()); @SuppressWarnings("deprecation") Player player = SkyWarsReloaded.get().getServer().getPlayer(name); if (player == null) { return; } event.setWillClose(true); event.setWillDestroy(true); if (player != null) { if (SkyWarsReloaded.getPC().getPlayer(player.getUniqueId()).inGame()) { if (gamePlayer.getP().getWorld().getName().equalsIgnoreCase(player.getWorld().getName())) { gamePlayer.getP().teleport(player.getLocation(), TeleportCause.PLUGIN); } else { gamePlayer.getP().sendMessage(new Messaging.MessageFormatter().format("error.player-not-playing")); } } else { gamePlayer.getP().sendMessage(new Messaging.MessageFormatter().format("error.player-not-playing")); } } SkyWarsReloaded.getIC().destroy(gamePlayer.getP()); } }); for (int iii = 0; iii < availablePlayers.size(); iii ++) { if (iii >= menuSize) { break; } Player player = availablePlayers.get(iii); if (player != null) { ItemStack playerhead = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); SkullMeta meta = (SkullMeta)playerhead.getItemMeta(); meta.setOwner(player.getName()); playerhead.setItemMeta(meta); SkyWarsReloaded.getIC().setOption( gamePlayer.getP(), iii, playerhead, ChatColor.AQUA + String.valueOf(player.getName()), ""); } } if (gamePlayer.getP() != null) { SkyWarsReloaded.getIC().show(gamePlayer.getP()); } } }