/* * 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.climber; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; /** * * @author Diego D'Onofrio <ddonofrio@member.fsf.org> */ public class Commands implements CommandExecutor { private final Main plugin; public Commands(Main plugin) { this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command command, String dummy, String[] args) { Player player = null; if (sender instanceof Player) { player = (Player) sender; } switch (command.getName()) { case "lcl": switch (args.length) { case 1: plugin.gameControler.addPlayer(player, args[0]); break; case 2: plugin.gameControler.addPlayer(player, args[0], args[1]); break; case 3: { plugin.gameControler.addPlayer(player, args[0], args[1]); } } break; case "lclsetup": if (player == null) { sender.sendMessage(plugin.getText("NONPLAYER_INGAME")); return false; } if (args.length == 1 && args[0].equals("setlobby")) { plugin.mapMan.setLobby(player.getLocation()); sender.sendMessage(plugin.getText("LOBBY_SET")); sender.sendMessage(plugin.getText("CREATE_ARENA")); return true; } if (args.length < 2) { if (args.length == 1) { switch (args[0]) { case "signs": plugin.sbm.setScoreboardStart(player); sender.sendMessage(ChatColor.GREEN + "Golpea todos los carteles en órden."); sender.sendMessage(ChatColor.GOLD + "Y luego /lclsetup signfinish"); return true; case "signsfinish": plugin.sbm.setScoreboardFinish(); sender.sendMessage(ChatColor.GOLD + "listo."); return true; case "startsigns": plugin.gameControler.setSignsStart(player); sender.sendMessage(ChatColor.GREEN + "Golpea todos los carteles en órden."); sender.sendMessage(ChatColor.GOLD + "Y luego /lclsetup startsignfinish"); return true; case "startsignsfinish": plugin.gameControler.setSignsFinish(); sender.sendMessage(ChatColor.GOLD + "listo."); return true; } } sender.sendMessage(ChatColor.RED + "¡Número incorrecto de parámetros!"); return true; } switch (args[0].toLowerCase()) { case "create": if (plugin.mapMan.create(args[1]) == MapManager.result.ALLREADY_EXISTS) { sender.sendMessage(ChatColor.RED + "Esa arena ya existe."); } else { plugin.mapMan.setWorld(args[1], player.getWorld()); sender.sendMessage(ChatColor.GREEN + "Arena " + args[1] + " creada, ahora crea un área de worldguard que la proteja y escribe " + ChatColor.GOLD + "/lclsetup setbounds <nombre de la área> <nombre de la región>"); } break; case "setbounds": if (args.length != 3) { sender.sendMessage(ChatColor.RED + "¡Número incorrecto de parámetros!"); return true; } switch (plugin.mapMan.setProtectedRegion(args[1], args[2])) { case DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa arena no existe"); return true; case REGION_DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa area de WorldGuard no existe"); return true; case OK: sender.sendMessage(ChatColor.GREEN + "Arena " + args[1] + " creada y sus límites configurados, ahora ponte sobre el punto de captura y escribe:" + ChatColor.GOLD + "/lclsetup setcapture <nombre de la arena>"); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; case "setcapture": switch (plugin.mapMan.setCapture(args[1], player.getLocation())) { case WORLD_MISSSMATCH: sender.sendMessage(ChatColor.RED + "El punto de captura no puede estar en un mundo diferente al que se creó la arena."); return true; case DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa arena no existe"); case OK: sender.sendMessage(ChatColor.GREEN + "Arena " + args[1] + " creada y límites y punto de captura configurados, ahora ponte sobre el punto de aparición de un equipo y escribe:" + ChatColor.GOLD + "/lclsetup setspawn <nombre del equipo>"); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; case "setspawn": switch (plugin.mapMan.setSpawn(args[1], player.getLocation())) { case TEAM_DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Ese equipo no existe."); sender.sendMessage(ChatColor.GOLD + "Los posibles equipos son: " + plugin.teamMan.toString()); return true; case NOT_IN_ARENA: sender.sendMessage(ChatColor.RED + "El punto dónde estás no está dentro de una arena."); return true; case OK: sender.sendMessage(ChatColor.GREEN + "Spawn " + args[1] + " configurado."); sender.sendMessage(ChatColor.GOLD + "Continua haciendo esto hasta configurar todos los puntos." + " Al menos 2 equipos, luego escribe:" + "/lclsetup block <nombre de la área>"); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; case "block": if (args.length < 2) { sender.sendMessage(ChatColor.RED + "¡Número incorrecto de parámetros!"); } if (plugin.mapMan.setBlockingBlocks(args[1], player) == MapManager.result.DONT_EXISTS) { sender.sendMessage(ChatColor.RED + "Esa arena no existe"); return true; } sender.sendMessage(ChatColor.GREEN + "Golpea todos los bloques que se deban quitar cuando de comienzo cada ronda."); sender.sendMessage(ChatColor.GOLD + "Y luego /lclsetup finish <nombre de la área>"); break; case "finish": switch (plugin.mapMan.finish(args[1], player)) { case DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa arena no existe"); return true; case NOT_SETTING_UP: sender.sendMessage(ChatColor.RED + "finish solo se usa después de /lclsetup block"); return true; case OK: sender.sendMessage(ChatColor.GOLD + "Arena creada con éxito."); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; case "enable": switch (plugin.mapMan.enable(args[1])) { case LOBBY_NOT_SET: sender.sendMessage(ChatColor.RED + "No se ha especificado el lobby del juego."); return true; case DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa arena no existe"); return true; case UNCONFIG_TEAM: sender.sendMessage(ChatColor.RED + "No se han configurado los equipos."); return true; case ONLY_ONE_TEAM: sender.sendMessage(ChatColor.RED + "Como mínimo debe haber 2 equipos."); return true; case UNCONFIG_AREA: sender.sendMessage(ChatColor.RED + "El área de la arena no está configurado."); return true; case UNCONFIG_CAPPOINT: sender.sendMessage(ChatColor.RED + "no se ha configurado el punto de captura."); return true; case OK: sender.sendMessage(ChatColor.GOLD + "Arena activada y esperando jugadores."); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; case "disable": switch (plugin.mapMan.disable(args[1])) { case DONT_EXISTS: sender.sendMessage(ChatColor.RED + "Esa arena no existe"); return true; case NOT_ENABLED: sender.sendMessage(ChatColor.RED + "Esa arena no estaba habilitada"); return true; case OK: sender.sendMessage(ChatColor.GOLD + "Arena desactivada."); break; default: sender.sendMessage(ChatColor.RED + "Error inesperado"); return true; } break; } } return true; } }