package me.desht.chesscraft.commands;
import me.desht.chesscraft.ChessCraft;
import me.desht.chesscraft.Messages;
import me.desht.chesscraft.chess.BoardStyle;
import me.desht.chesscraft.exceptions.ChessException;
import me.desht.chesscraft.expector.ExpectBoardCreation;
import me.desht.dhutils.MiscUtil;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.List;
public class BoardCreationCommand extends ChessAbstractCommand {
public BoardCreationCommand() {
super("chess board create", 1);
addAlias("chess create board"); // backwards compat
setPermissionNode("chesscraft.commands.create.board");
setUsage("/chess board create <board-name> [-style <style-name>] [-pstyle <style-name>]");
setOptions("style:s", "pstyle:s");
}
@Override
public boolean execute(Plugin plugin, CommandSender sender, String[] args) throws ChessException {
notFromConsole(sender);
Player player = (Player) sender;
if (args.length == 0 || args[0].startsWith("-")) {
showUsage(sender);
return true;
}
String name = args[0];
String boardStyleName = getStringOption("style", "Standard");
String pieceStyleName = getStringOption("pstyle", "");
// this will throw an exception if the styles are in any way invalid or incompatible
BoardStyle.verifyCompatibility(boardStyleName, pieceStyleName);
MiscUtil.statusMessage(sender, Messages.getString("ChessCommandExecutor.boardCreationPrompt", name));
ChessCraft.getInstance().responseHandler.expect(player, new ExpectBoardCreation(name, boardStyleName, pieceStyleName));
return true;
}
@Override
public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) {
if (args.length >= 2 && args[args.length - 2].equals("-style")) {
return getBoardStyleCompletions(plugin, sender, args[args.length - 1]);
} else if (args.length >= 2 && args[args.length - 2].equals("-pstyle")) {
return getPieceStyleCompletions(plugin, sender, args[args.length - 1]);
} else {
showUsage(sender);
return noCompletions(sender);
}
}
}