/*
* CraftZ
* Copyright (C) JangoBrick <http://jangobrick.de/>
*
* This program 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.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
package craftZ.cmd;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.inventory.ItemStack;
import craftZ.CraftZ;
import craftZ.modules.Kit;
import craftZ.modules.Kits;
public class CMD_Kitsadmin extends CraftZCommand {
public CMD_Kitsadmin(CraftZ craftZ) {
super(craftZ, "{cmd} <kit> create | edit | permission <perm>/- | setdefault | delete");
}
@Override
public int execute() {
if (!isPlayer) {
return MUST_BE_PLAYER;
}
if (args.length < 2) {
return WRONG_USAGE;
}
if (!hasPerm("craftz.kitsadmin")) {
return NO_PERMISSION;
}
Kits kits = getCraftZ().getKits();
String kitname = args[0];
Kit kit = kits.match(kitname);
String action = args[1];
if (action.equalsIgnoreCase("create")) { // ======== create
if (kit != null) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-already-exists").replace("%k", kitname));
} else {
kit = new Kit(kits, kitname, false, null, new LinkedHashMap<String, ItemStack>());
kits.addKit(kit);
send(ChatColor.AQUA + getMsg("Messages.cmd.kitsadmin.kit-created").replace("%k", kitname));
}
} else if (action.equalsIgnoreCase("edit")) { // ======== edit
if (kit == null) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-not-found").replace("%k", kitname));
} else if (kits.isEditing(p)) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-already-editing")
.replace("%k", kits.getEditingSession(p).kit.getName()));
} else {
kits.startEditing(p, kit);
send(ChatColor.AQUA + getMsg("Messages.cmd.kitsadmin.kit-editing").replace("%k", kitname));
}
} else if (action.equalsIgnoreCase("permission")) { // ======== permission
if (args.length < 3) {
return WRONG_USAGE;
} else if (kit == null) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-not-found").replace("%k", kitname));
} else {
String perm = args[2].trim();
boolean noperm = perm.isEmpty() || perm.equals("-") || perm.equals("/") || perm.equals(".");
kit.setPermission(noperm ? null : perm);
kit.save();
send(ChatColor.AQUA + getMsg("Messages.cmd.kitsadmin.kit-edited").replace("%k", kitname));
}
} else if (action.equalsIgnoreCase("setdefault")) { // ======== setdefault
if (kit == null) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-not-found").replace("%k", kitname));
} else {
kits.setDefault(kit);
send(ChatColor.AQUA + getMsg("Messages.cmd.kitsadmin.kit-edited").replace("%k", kitname));
}
} else if (action.equalsIgnoreCase("delete")) { // ======== delete
if (kit == null) {
send(ChatColor.RED + getMsg("Messages.cmd.kitsadmin.kit-not-found").replace("%k", kitname));
} else {
kits.removeKit(kit);
send(ChatColor.AQUA + getMsg("Messages.cmd.kitsadmin.kit-deleted").replace("%k", kitname));
}
}
return SUCCESS;
}
@Override
public CanExecute canExecute(CommandSender sender) {
return CanExecute.on(sender).player().permission("craftz.kitsadmin");
}
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
List<String> options = new ArrayList<String>();
if (args.length <= 1) {
addCompletions(options, args.length < 1 ? "" : args[0], true, Stringifier.KIT, getCraftZ().getKits().getKits());
} else if (args.length == 2) {
addCompletions(options, args[1], true, "create", "edit", "permission", "setdefault", "delete");
}
return options;
}
}