package me.desht.chesscraft.commands; import me.desht.chesscraft.ChessValidate; import me.desht.chesscraft.Messages; import me.desht.chesscraft.chess.BoardView; import me.desht.chesscraft.chess.BoardViewManager; import me.desht.chesscraft.chess.ChessGame; import me.desht.chesscraft.chess.ChessGameManager; import me.desht.chesscraft.exceptions.ChessException; import me.desht.dhutils.MiscUtil; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import java.io.File; import java.util.List; public class ArchiveCommand extends ChessAbstractCommand { public ArchiveCommand() { super("chess archive", 0, 1); setPermissionNode("chesscraft.commands.archive"); setUsage(new String[] { "/chess archive", "/chess archive <game-name>", "/chess archive -this", }); } @Override public boolean execute(Plugin plugin, CommandSender sender, String[] args) throws ChessException { ChessGame game; if (args.length >= 1) { if (args[0].equals("-this")) { notFromConsole(sender); Player player = (Player)sender; BoardView bv = BoardViewManager.getManager().partOfChessBoard(player.getLocation()); if (bv == null) { throw new ChessException(Messages.getString("Designer.notOnBoard")); } else { game = bv.getGame(); } } else { game = ChessGameManager.getManager().getGame(args[0]); } } else { notFromConsole(sender); game = ChessGameManager.getManager().getCurrentGame((Player) sender); } ChessValidate.notNull(game, Messages.getString("ChessCommandExecutor.noActiveGame")); File written = game.writePGN(false); MiscUtil.statusMessage(sender, Messages.getString("ChessCommandExecutor.PGNarchiveWritten", written.getName())); return true; } @Override public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) { if (args.length == 1) { return getGameCompletions(plugin, sender, args[0]); } else { showUsage(sender); return noCompletions(sender); } } }