/*
* This file is part of Skript.
*
* Skript 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.
*
* Skript 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 Skript. If not, see <http://www.gnu.org/licenses/>.
*
*
* Copyright 2011-2014 Peter Güttinger
*
*/
package ch.njol.skript;
import java.util.HashMap;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import ch.njol.skript.util.Utils;
public class CommandHandler {
/**
* holds information for the console as well
*/
final private static HashMap<String, PlayerCommand> playerCommandDatas = new HashMap<String, PlayerCommand>();
final static int linesPerPage = 8;
final private static String[] commandHelp = {
" -- actions --",
" a command should start with one of these",
"s[elect]: selects an item. same as --s",
"a[dd]/n[ew]: creates a new node in the selected node",
"r[ename]: renames the selected node",
"v[alue]: changes the value of the node",
"m[ove]: moves the selected node, /s m for more info",
"d[elete]: deletes the selected node",
"l[ist]: prints the subnodes of the selected node",
"e[nable]/d[isable]: en/disable the selected config file",
"save: saves the config file. same as --save",
"",
"-- flags --",
" these can be added to the command after the action and will be processed beforehand",
"--s[elect]: selects an item",
"--c[onfig]: switches to a different config file and selects it's main node",
"--a[ccept]: accepts all questions of the next option, or the main action if this is the last flag",
"--v, --vv etc.: sets the verbosity; the move vs the higher",
"--save: saves the config file after the operation"
};
public static boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
if (!sender.hasPermission("skript.config")) {
sender.sendMessage("You do not have permission to use this command");
return true;
}
if (args.length == 0 || args[0].equalsIgnoreCase("h") || args[0].equalsIgnoreCase("help")) {
int page = 1;
try {
page = Math.min((int) Math.ceil(commandHelp.length / linesPerPage), Math.max(1, Integer.parseInt(args[1])));
} catch (final Exception e) {}
sender.sendMessage("§8== Skript help (page " + page + " of " + Math.ceil(commandHelp.length / linesPerPage) + ")");
for (int i = (page - 1) * linesPerPage; i < page * linesPerPage; i++) {
sender.sendMessage(commandHelp[i]);
}
}
// output the input, so one can see what the messages refer to.
sender.sendMessage("&7" + label + Utils.join(args, " "));
PlayerCommand data = playerCommandDatas.get(sender.getName());
if (data == null) {
data = new PlayerCommand();
playerCommandDatas.put(sender.getName(), data);
}
data.onCommand(sender, command, label, args);
return true;
}
}