/*
* This file is part of Libelula Minecraft Edition Project.
*
* Libelula Minecraft Edition is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Libelula Minecraft Edition is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Libelula Minecraft Edition.
* If not, see <http://www.gnu.org/licenses/>.
*
*/
package me.libelula.lobby;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
/**
*
* @author Diego D'Onofrio <ddonofrio@member.fsf.org> <ddonofrio@member.fsf.org>
*/
public class Menu {
private final Main plugin;
private final Inventory networkMenu;
private final Inventory technic;
private final Inventory pvp;
private final Inventory minigames;
private final Inventory special;
public Menu(Main plugin) {
this.plugin = plugin;
networkMenu = Bukkit.createInventory(null, 27, ChatColor.AQUA + "¿Dónde quieres jugar hoy?");
technic = Bukkit.createInventory(null, 36, ChatColor.RED + "Minecraft Técnico");
pvp = Bukkit.createInventory(null, 36, ChatColor.AQUA + "Player vs Player");
minigames = Bukkit.createInventory(null, 36, ChatColor.GRAY + "Minijuegos");
special = Bukkit.createInventory(null, 36, ChatColor.BLUE + "Servidores especiales");
setNetworkMenu();
setTechnicMenu();
setPVPMenu();
setSpecial();
}
private void setNetworkMenu() {
ItemMeta im;
List<String> lore = new ArrayList<>();
ItemStack tecnico = new ItemStack(Material.REDSTONE, 1);
im = tecnico.getItemMeta();
im.setDisplayName(ChatColor.RED + "Minecraft Técnico");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA
+ "" + ChatColor.BOLD + "Técnico");
lore.add(ChatColor.BLUE + "* Survival en distintas modalidades");
lore.add(ChatColor.BLUE + "* Skyblock");
lore.add(ChatColor.BLUE + "* Hardcore");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
tecnico.setItemMeta(im);
networkMenu.setItem(10, tecnico);
ItemStack pvp = new ItemStack(Material.DIAMOND_SWORD, 1);
im = pvp.getItemMeta();
im.setDisplayName(ChatColor.AQUA + "Player vs Player");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA
+ "" + ChatColor.BOLD + "PVP");
lore.add(ChatColor.BLUE + "* Capture the Wool (CTW)");
lore.add(ChatColor.BLUE + "* Skywars");
lore.add(ChatColor.BLUE + "* Juegos del hambre");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
im.addEnchant(Enchantment.DAMAGE_ALL, 1, true);
pvp.setItemMeta(im);
networkMenu.setItem(12, pvp);
ItemStack minigames = new ItemStack(Material.BREWING_STAND_ITEM, 1);
im = minigames.getItemMeta();
im.setDisplayName(ChatColor.GRAY + "Minijuegos");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Minijuegos");
lore.add(ChatColor.BLUE + "* Las últimas novedades.");
lore.add(ChatColor.BLUE + "* Los clásicos de siempre.");
lore.add(ChatColor.BLUE + "* TNT Run");
lore.add(ChatColor.BLUE + "* Build my thing");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
minigames.setItemMeta(im);
networkMenu.setItem(14, minigames);
ItemStack special = new ItemStack(Material.BEACON, 1);
im = special.getItemMeta();
im.setDisplayName(ChatColor.BLUE + "Servidores especiales");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Especial");
lore.add(ChatColor.BLUE + "* Eventos.");
lore.add(ChatColor.BLUE + "* Red VIP.");
lore.add(ChatColor.BLUE + "* Servidores de la 1.8");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
special.setItemMeta(im);
networkMenu.setItem(16, special);
}
private void setTechnicMenu() {
ItemMeta im;
List<String> lore = new ArrayList<>();
ItemStack main = new ItemStack(Material.GRASS, 1);
im = main.getItemMeta();
im.setDisplayName(ChatColor.GREEN + "main() survival");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "main()");
lore.add(ChatColor.BLUE + "* Servidor survival");
lore.add(ChatColor.BLUE + "* Parcelas");
lore.add(ChatColor.BLUE + "* Nuevos plugins cada semana");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
main.setItemMeta(im);
technic.setItem(10, main);
ItemStack survivalOne = new ItemStack(Material.GRASS, 2);
im = survivalOne.getItemMeta();
im.setDisplayName(ChatColor.GREEN + "Survival ONE");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Survival ONE");
lore.add(ChatColor.BLUE + "* Servidor survival vanilla");
lore.add(ChatColor.BLUE + "* Muy pocas reglas");
lore.add(ChatColor.BLUE + "* Muy pocos plugins");
im.setLore(lore);
survivalOne.setItemMeta(im);
technic.setItem(12, survivalOne);
ItemStack skyblock = new ItemStack(Material.FEATHER, 1);
im = skyblock.getItemMeta();
im.setDisplayName(ChatColor.AQUA + "Skyblock");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Skyblock");
lore.add(ChatColor.BLUE + "* Servidor exclusivo Skyblock");
im.setLore(lore);
skyblock.setItemMeta(im);
technic.setItem(14, skyblock);
ItemStack rol = new ItemStack(Material.PAPER, 1);
im = rol.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Juegos de ROL");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "ROL");
lore.add(ChatColor.BLUE + "* Factions");
lore.add(ChatColor.BLUE + "* Supernaturals");
lore.add(ChatColor.BLUE + "* Vampiros");
lore.add(ChatColor.BLUE + "* etc...");
im.setLore(lore);
rol.setItemMeta(im);
technic.setItem(16, rol);
ItemStack back = new ItemStack(Material.FENCE_GATE, 1);
im = back.getItemMeta();
im.setDisplayName(ChatColor.GREEN + "Volver al menu principal");
back.setItemMeta(im);
technic.setItem(27, back);
}
private void setPVPMenu() {
ItemMeta im;
List<String> lore = new ArrayList<>();
ItemStack liderSwag = new ItemStack(Material.IRON_FENCE, 1);
im = liderSwag.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Lider Swag");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Lider Swag");
lore.add(ChatColor.BLUE + "* El mejor 1 vs 1");
lore.add(ChatColor.BLUE + "* Demuestra ser el mejor");
lore.add(ChatColor.BLUE + "* El ganador queda en la arena");
im.setLore(lore);
liderSwag.setItemMeta(im);
pvp.setItem(10, liderSwag);
ItemStack ctw = new ItemStack(Material.WOOL, 1);
im = ctw.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Capture the Wool");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "CTW");
lore.add(ChatColor.BLUE + "* PVP por equipos");
lore.add(ChatColor.BLUE + "* Las mejores arenas");
lore.add(ChatColor.BLUE + "* Estadísticas");
im.setLore(lore);
ctw.setItemMeta(im);
pvp.setItem(12, ctw);
ItemStack skyWars = new ItemStack(Material.LAVA_BUCKET, 1);
im = skyWars.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Sky Wars");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Sky Wars");
lore.add(ChatColor.BLUE + "* El juego del momento");
lore.add(ChatColor.BLUE + "* Demuestra ser el mejor");
lore.add(ChatColor.BLUE + "* Mescla de técnico y PVP");
im.setLore(lore);
skyWars.setItemMeta(im);
pvp.setItem(14, skyWars);
ItemStack towers = new ItemStack(Material.BRICK, 1);
im = towers.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "The Towers");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "The Towers");
lore.add(ChatColor.BLUE + "* PVP por equipos");
lore.add(ChatColor.BLUE + "* Lleva a tu equipo al éxito");
im.setLore(lore);
towers.setItemMeta(im);
pvp.setItem(16, towers);
ItemStack hungerGames = new ItemStack(Material.CHEST, 1);
im = hungerGames.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Los juegos del hambre");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Hunger Games");
lore.add(ChatColor.BLUE + "* Demuestra ser el mejor");
lore.add(ChatColor.BLUE + "* Sé el último superviviente");
im.setLore(lore);
hungerGames.setItemMeta(im);
pvp.setItem(20, hungerGames);
ItemStack climbUp = new ItemStack(Material.LADDER, 1);
im = climbUp.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Climb Up");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Climb Up");
lore.add(ChatColor.BLUE + "* El juego de killercreeper55");
lore.add(ChatColor.BLUE + "* Por primera vez en un server");
lore.add(ChatColor.BLUE + "* Demuestra lo que vales");
im.setLore(lore);
climbUp.setItemMeta(im);
pvp.setItem(22, climbUp);
ItemStack back = new ItemStack(Material.FENCE_GATE, 1);
im = back.getItemMeta();
im.setDisplayName(ChatColor.GREEN + "Volver al menu principal");
back.setItemMeta(im);
pvp.setItem(27, back);
}
private void setSpecial() {
ItemMeta im;
List<String> lore = new ArrayList<>();
ItemStack creative = new ItemStack(Material.COMMAND, 1);
im = creative.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Creative");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "Creative");
lore.add(ChatColor.BLUE + "* Modo de juego creativo");
lore.add(ChatColor.BLUE + "* Construye lo que quieras");
lore.add(ChatColor.BLUE + "* Participa en concursos y gana premios");
im.setLore(lore);
creative.setItemMeta(im);
special.setItem(10, creative);
ItemStack vip = new ItemStack(Material.DIAMOND, 1);
im = vip.getItemMeta();
im.setDisplayName(ChatColor.GOLD + "Lobby VIP");
lore.clear();
lore.add(ChatColor.GOLD + "Libelula "
+ ChatColor.YELLOW + "Minecraft " + ChatColor.DARK_AQUA + "VIP");
lore.add(ChatColor.BLUE + "* Exclusivo para VIPs");
lore.add(ChatColor.BLUE + "* Prueba los juegos antes que nadie");
lore.add(ChatColor.BLUE + "* Accede durante mantenimientos");
im.setLore(lore);
vip.setItemMeta(im);
special.setItem(12, vip);
ItemStack back = new ItemStack(Material.FENCE_GATE, 1);
im = back.getItemMeta();
im.setDisplayName(ChatColor.GREEN + "Volver al menu principal");
back.setItemMeta(im);
special.setItem(27, back);
}
public Inventory getNetworkMenu() {
return networkMenu;
}
public boolean processClick(InventoryClickEvent e) {
boolean ret = false;
e.setCancelled(true);
if (e.getCurrentItem() == null) {
return false;
} else if (e.getCurrentItem().getType() == Material.AIR) {
return true;
}
Player player = (Player) e.getWhoClicked();
String inventoryName = e.getInventory().getName();
e.setCancelled(true);
if (e.getCurrentItem().getType() == Material.SPONGE) {
plugin.pm.manegeSpecialClick(player, e.getCurrentItem());
}
/*
Network menu
*/
if (inventoryName.equals(networkMenu.getName())) {
switch (e.getCurrentItem().getType()) {
case REDSTONE:
player.openInventory(technic);
ret = true;
break;
case DIAMOND_SWORD:
player.openInventory(pvp);
ret = true;
break;
case BREWING_STAND_ITEM:
plugin.sendMessage(player, "Lo sentimos, esta red está actualmente desconectada.");
plugin.sendMessage(player, "Puede que esté en mantenimiento, prueba más tarde.");
//player.openInventory(minigames);
//ret = true;
break;
case BEACON:
player.openInventory(special);
ret = true;
break;
}
} else if (inventoryName.equals(technic.getName())) {
switch (e.getCurrentItem().getType()) {
case GRASS:
switch (e.getCurrentItem().getAmount()) {
case 1:
plugin.teleportToServer(player, "main");
break;
case 2:
plugin.teleportToServer(player, "survival-one");
break;
}
break;
case FEATHER:
plugin.teleportToServer(player, "skyblock");
break;
case PAPER:
plugin.teleportToServer(player, "rol");
break;
case FENCE_GATE:
player.openInventory(getNetworkMenu());
ret = true;
break;
}
} else if (inventoryName.equals(pvp.getName())) {
switch (e.getCurrentItem().getType()) {
case IRON_FENCE:
plugin.teleportToServer(player, "liderswag");
break;
case WOOL:
plugin.teleportToServer(player, "CTW");
break;
case LAVA_BUCKET:
plugin.teleportToServer(player, "skywars");
break;
case FENCE_GATE:
player.openInventory(getNetworkMenu());
ret = true;
break;
case LADDER:
plugin.teleportToServer(player, "climb-up");
break;
case BRICK:
plugin.teleportToServer(player, "the-towers");
break;
default:
plugin.sendMessage(player, "Lo sentimos, este servidor está en mantenimiento.");
break;
}
} else if (inventoryName.equals(special.getName())) {
switch (e.getCurrentItem().getType()) {
case COMMAND:
plugin.teleportToServer(player, "creative");
break;
case DIAMOND:
plugin.sendMessage(player, "Debes ser VIP para entrar aquí.");
break;
case FENCE_GATE:
player.openInventory(getNetworkMenu());
ret = true;
break;
default:
plugin.sendMessage(player, "Lo sentimos, este servidor está en mantenimiento.");
break;
}
}
return ret;
}
}