package me.maker56.survivalgames.commands; import java.util.List; import me.maker56.survivalgames.SurvivalGames; import me.maker56.survivalgames.Util; import me.maker56.survivalgames.arena.Arena; import me.maker56.survivalgames.commands.arguments.ArenaArgument; import me.maker56.survivalgames.commands.arguments.ConfigArgument; import me.maker56.survivalgames.commands.arguments.LobbyArgument; import me.maker56.survivalgames.commands.arguments.StatsArgument; import me.maker56.survivalgames.commands.messages.MessageHandler; import me.maker56.survivalgames.commands.permission.Permission; import me.maker56.survivalgames.commands.permission.PermissionHandler; import me.maker56.survivalgames.game.Game; import me.maker56.survivalgames.game.GameState; import me.maker56.survivalgames.game.phases.IngamePhase; import me.maker56.survivalgames.game.phases.VotingPhase; import me.maker56.survivalgames.user.User; import me.maker56.survivalgames.user.UserManager; import me.maker56.survivalgames.user.UserState; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class CommandSG implements CommandExecutor { private String authors; public CommandSG() { this.authors = " �7�m--�r �ePlugin developed by "; List<String> authors = SurvivalGames.getInstance().getDescription().getAuthors(); for(int i = 0; i < authors.size(); i++) { this.authors += authors.get(i); if(i != authors.size() - 1) { this.authors += " and "; } } } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("sg")) { if(args.length == 0) { sender.sendMessage(MessageHandler.getMessage("prefix") + "Version " + SurvivalGames.instance.getDescription().getVersion() + authors); if(PermissionHandler.hasPermission(sender, Permission.JOIN)) { sender.sendMessage("�8/�6sg join [LOBBY] �7- �eJoin a game!"); sender.sendMessage("�8/�6sg leave �7- �eLeave a game!"); sender.sendMessage("�8/�6sg vote <ID> �7- �eVote for an arena!"); } sender.sendMessage("�8/�6sg stats [NAME] �7- �eShow you statistics of a player"); if(PermissionHandler.hasPermission(sender, Permission.LIST)) { sender.sendMessage("�8/�6sg list �7- �eList of all available lobbys!"); } if(PermissionHandler.hasPermission(sender, Permission.START)) { sender.sendMessage("�8/�6sg start �7- �eForce a lobby to start!"); } if(PermissionHandler.hasPermission(sender, Permission.GAME)) { sender.sendMessage("�8/�6sg lobby �7- �eShows the lobby helpsite!"); } if(PermissionHandler.hasPermission(sender, Permission.ARENA)) { sender.sendMessage("�8/�6sg arena �7- �eShows the arena helpsite!"); } if(PermissionHandler.hasPermission(sender, Permission.CONFIG)) { sender.sendMessage("�8/�6sg config �7- �eShows the configuration management helpsite!"); } } else { if(args[0].equalsIgnoreCase("arena")) { return new ArenaArgument(sender, args).execute(); } else if(args[0].equalsIgnoreCase("lobby") || args[0].equalsIgnoreCase("game")) { return new LobbyArgument(sender, args).execute(); } else if(args[0].equalsIgnoreCase("stats")) { return new StatsArgument(sender, args).execute(); } else if(args[0].equalsIgnoreCase("config")) { return new ConfigArgument(sender, args).execute(); } // JOIN if(args[0].equalsIgnoreCase("join")) { Player p = (Player)sender; if(args.length == 1 && SurvivalGames.gameManager.getGames().size() == 1) { SurvivalGames.userManger.joinGame(p, SurvivalGames.gameManager.getGames().get(0).getName()); return true; } else if(args.length == 1) { p.sendMessage(MessageHandler.getMessage("game-must-enter").replace("%0%", "/sg join <GAMENAME>")); return true; } SurvivalGames.userManger.joinGame(p, args[1]); return true; // LEAVE } else if(args[0].equalsIgnoreCase("leave")) { Player p = (Player)sender; UserState user = SurvivalGames.userManger.getUser(p.getName()); if(user == null) { user = SurvivalGames.userManger.getSpectator(p.getName()); if(user == null) { p.sendMessage(MessageHandler.getMessage("leave-not-playing")); return true; } } Game game = user.getGame(); if(game.getState() != GameState.INGAME && game.getState() != GameState.DEATHMATCH) { SurvivalGames.userManger.leaveGame(p); return true; } else if(user instanceof User){ IngamePhase ip = game.getIngamePhrase(); ip.killUser((User)user, null, true, false); } return true; // VOTE } else if(args[0].equalsIgnoreCase("vote")) { Player p = (Player)sender; if(!SurvivalGames.userManger.isPlaying(p.getName())) { p.sendMessage(MessageHandler.getMessage("leave-not-playing")); return true; } if(args.length == 1) { p.sendMessage(MessageHandler.getMessage("cmd-error").replace("%0%", "You must specify a Arena-ID!")); return true; } User user = SurvivalGames.userManger.getUser(p.getName()); if(!user.getGame().isVotingEnabled()) { p.sendMessage(MessageHandler.getMessage("game-no-voting-enabled")); return true; } if(user.getGame().getState() != GameState.VOTING) { p.sendMessage(MessageHandler.getMessage("game-no-vote")); return true; } VotingPhase vp = user.getGame().getVotingPhrase(); if(!vp.canVote(p.getName())) { p.sendMessage(MessageHandler.getMessage("game-already-vote")); return true; } int mapid = 0; try { mapid = Integer.parseInt(args[1]); } catch (NumberFormatException e) { p.sendMessage(MessageHandler.getMessage("cmd-error").replace("%0%", args[1] + " ist not a valid number!")); return true; } Arena arena = vp.vote(p, mapid); if(arena == null) { p.sendMessage(MessageHandler.getMessage("game-bad-vote")); return true; } return true; // LIST } else if(args[0].equalsIgnoreCase("list")) { if(!PermissionHandler.hasPermission(sender, Permission.LIST)) { sender.sendMessage(MessageHandler.getMessage("no-permission")); return true; } List<Game> games = SurvivalGames.gameManager.getGames(); sender.sendMessage(MessageHandler.getMessage("prefix") + "List of all loaded lobbys�8: �7(�b" + games.size() + "�7)"); for(Game game : games) { sender.sendMessage("�7- �6" + game.getName() + "�8: �e" + game.getState().toString() + " �7(�e" + game.getPlayingUsers() + "�7/�e" + game.getMaximumPlayers() + "�7)"); } return true; // FORCE START } else if(args[0].equalsIgnoreCase("start")) { if(!PermissionHandler.hasPermission(sender, Permission.START)) { sender.sendMessage(MessageHandler.getMessage("no-permission")); return true; } Player p = (Player) sender; Game game = null; if(args.length > 1) { game = SurvivalGames.gameManager.getGame(args[1]); } else { UserManager um = SurvivalGames.userManger; User u = um.getUser(p.getName()); if(u != null) { game = u.getGame(); } } if(game == null) { p.sendMessage(MessageHandler.getMessage("game-not-found").replace("%0%", (args.length <= 1 ? "" : args[1]))); return true; } game.forceStart(p); return true; // DEBUG } else if(args[0].equalsIgnoreCase("debug")) { if(!PermissionHandler.hasPermission(sender, Permission.LOBBY)) { sender.sendMessage(MessageHandler.getMessage("no-permission")); return true; } boolean nV = !Util.debug; Util.debug = nV; sender.sendMessage(MessageHandler.getMessage("prefix") + "Debug Mode�7: " + (nV ? "�aENABLED" : "�cDISABLED")); return true; } sender.sendMessage(MessageHandler.getMessage("prefix") + "�cCommand not found! Type /sg for help!"); return true; } } return false; } }