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.GamePlayer;
import com.walrusone.skywars.game.Game.GameState;
import com.walrusone.skywars.utilities.IconMenu;
import com.walrusone.skywars.utilities.Messaging;
public class MainMenu {
private static final int menuSlotsPerRow = 9;
private static final int menuSize = 36;
private static final String optionsMenuName = new Messaging.MessageFormatter().format("menu.options-menu-title");
public MainMenu(final GamePlayer gamePlayer) {
int rowCount = menuSlotsPerRow;
while (rowCount < 36 && rowCount < menuSize) {
rowCount += menuSlotsPerRow;
}
SkyWarsReloaded.getIC().create(gamePlayer.getP(), optionsMenuName, rowCount, new IconMenu.OptionClickEventHandler() {
@Override
public void onOptionClick(IconMenu.OptionClickEvent event) {
if (!gamePlayer.inGame() || gamePlayer.getGame().getState() != GameState.PREGAME) {
return;
}
String option = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', event.getName()));
event.setWillClose(false);
event.setWillDestroy(false);
if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.time-item-name"))))) {
if (hasTimePermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new TimeMenu(gamePlayer);
}
}, 2);
} else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.weather-item-name"))))) {
if (hasTimePermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new WeatherMenu(gamePlayer);
}
}, 2);
} else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.jump-item-name"))))) {
if (hasJumpPermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new JumpMenu(gamePlayer);
}
}, 2);
} else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.chest-item-name"))))) {
if (hasChestPermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new ChestMenu(gamePlayer);
}
}, 2);
}
else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.selecteffect-item-name"))))) {
if (hasEffectPermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new UseEffectMenu(gamePlayer);
}
}, 2);
}
else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.selectprojeffect-item-name"))))) {
if (hasEffectPermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new UseProjEffectMenu(gamePlayer);
}
}, 2);
}
else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.selectcolor-item-name"))))) {
if (hasColorPermission(gamePlayer.getP())) {
gamePlayer.getP().closeInventory();
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
@Override
public void run() {
new UseColorMenu(gamePlayer);
}
}, 2);
}
else {
return;
}
} else if (option.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.exit-menu"))))) {
gamePlayer.getP().closeInventory();
} else {
return;
}
}
});
List<String> chestLore = Lists.newLinkedList();
List<String> timeLore = Lists.newLinkedList();
List<String> weatherLore = Lists.newLinkedList();
List<String> jumpLore = Lists.newLinkedList();
List<String> colorLore = Lists.newLinkedList();
List<String> effectLore = Lists.newLinkedList();
List<String> trailLore = Lists.newLinkedList();
if (hasTimePermission(gamePlayer.getP())) {
} else {
timeLore.add(new Messaging.MessageFormatter().format("error.no-permission-time"));
}
if (hasJumpPermission(gamePlayer.getP())) {
} else {
jumpLore.add(new Messaging.MessageFormatter().format("error.no-permission-jump"));
}
if (hasChestPermission(gamePlayer.getP())) {
} else {
chestLore.add(new Messaging.MessageFormatter().format("error.no-permission-chest"));
}
if (hasColorPermission(gamePlayer.getP())) {
} else {
colorLore.add(new Messaging.MessageFormatter().format("error.no-permission-color"));
}
if (hasEffectPermission(gamePlayer.getP())) {
} else {
effectLore.add(new Messaging.MessageFormatter().format("error.no-permission-effect"));
}
if (hasProjEffectPermission(gamePlayer.getP())) {
} else {
trailLore.add(new Messaging.MessageFormatter().format("error.no-permission-projeffect"));
}
if (hasWeatherPermission(gamePlayer.getP())) {
} else {
weatherLore.add(new Messaging.MessageFormatter().format("error.no-permission-weather"));
}
if (gamePlayer.getP() != null && gamePlayer.inGame() && gamePlayer.getGame().getState() == GameState.PREGAME) {
if (SkyWarsReloaded.getCfg().opChestsEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getOpChestOptionMenuSlot(),
SkyWarsReloaded.getCfg().getOpChestMenuItem(),
new Messaging.MessageFormatter().format("menu.chest-item-name"),
chestLore.toArray(new String[chestLore.size()]));
}
if (SkyWarsReloaded.getCfg().timeVoteEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getTimeOptionMenuSlot(),
SkyWarsReloaded.getCfg().getTimeMenuItem(),
new Messaging.MessageFormatter().format("menu.time-item-name"),
timeLore.toArray(new String[timeLore.size()]));
}
if (SkyWarsReloaded.getCfg().jumpVoteEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getJumpOptionMenuSlot(),
SkyWarsReloaded.getCfg().getJumpMenuItem(),
new Messaging.MessageFormatter().format("menu.jump-item-name"),
jumpLore.toArray(new String[jumpLore.size()]));
}
if (SkyWarsReloaded.getCfg().weatherVoteEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getWeatherOptionMenuSlot(),
SkyWarsReloaded.getCfg().getWeatherMenuItem(),
new Messaging.MessageFormatter().format("menu.weather-item-name"),
weatherLore.toArray(new String[weatherLore.size()]));
}
if (SkyWarsReloaded.getCfg().colorGlassEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getGlassOptionsMenuSlot(),
SkyWarsReloaded.getCfg().getGlassMenuItem(),
new Messaging.MessageFormatter().format("menu.selectcolor-item-name"),
colorLore.toArray(new String[colorLore.size()]));
}
if (SkyWarsReloaded.getCfg().particlesEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getParticleOptionsMenuSlot(),
SkyWarsReloaded.getCfg().getparticleMenuItem(),
new Messaging.MessageFormatter().format("menu.selecteffect-item-name"),
effectLore.toArray(new String[effectLore.size()]));
}
if (SkyWarsReloaded.getCfg().trailEffectsEnabled()) {
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
SkyWarsReloaded.getCfg().getTrailEffectOptionsMenuSlot(),
SkyWarsReloaded.getCfg().getTrailEffectsMenuItem(),
new Messaging.MessageFormatter().format("menu.selectprojeffect-item-name"),
trailLore.toArray(new String[trailLore.size()]));
}
List<String> loreList5 = Lists.newLinkedList();
SkyWarsReloaded.getIC().setOption(
gamePlayer.getP(),
35,
new ItemStack(Material.TORCH, 1),
new Messaging.MessageFormatter().format("menu.exit-menu"),
loreList5.toArray(new String[loreList5.size()]));
SkyWarsReloaded.getIC().show(gamePlayer.getP());
}
}
public boolean hasTimePermission(Player player) {
return player.isOp() || player.hasPermission("swr.timevote");
}
public boolean hasWeatherPermission(Player player) {
return player.isOp() || player.hasPermission("swr.weathervote");
}
public boolean hasJumpPermission(Player player) {
return player.isOp() || player.hasPermission("swr.jumpvote");
}
public boolean hasChestPermission(Player player) {
return player.isOp() || player.hasPermission("swr.opchest");
}
public boolean hasColorPermission(Player player) {
return player.isOp() || player.hasPermission("swr.usecolor");
}
public boolean hasEffectPermission(Player player) {
return player.isOp() || player.hasPermission("swr.useeffect");
}
public boolean hasProjEffectPermission(Player player) {
return player.isOp() || player.hasPermission("swr.useprojeffect");
}
}