package org.buckit.commands.admin;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Logger;
import org.buckit.Config;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class ItemCommand extends Command {
private final Server server;
private static Logger log = Logger.getLogger(ItemCommand.class.getName());
public ItemCommand(String name, Server server){
super(name);
this.description = "Gives you a certain item.";
this.server = server;
this.usageMessage = "Usage: /item [item id] <amount> <damage> <player to give to>";
this.accessname = "buckit.admin.item";
this.setAliases(Arrays.asList("i", "give"));
}
@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
if(!(sender instanceof Player))
return false;
if(args.length == 0) {
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + "Insufficient arguments specified.");
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + getUsage());
return true;
}
String item = args[0].toLowerCase();
Material m = Material.matchMaterial(item);
if(m == null) {
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + "Invalid item id or name given.");
return true;
}
int amount = 1;
if(args.length > 1) {
try {
amount = Integer.parseInt(args[1]);
} catch (NumberFormatException e){
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + "Invalid item amount '" + args[1] + "'!");
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + getUsage());
return true;
}
}
int damage = 0;
if(args.length > 2) {
try {
damage = Integer.parseInt(args[2]);
} catch (NumberFormatException e){
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + "Invalid damage amount '" + args[2] + "' !");
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + getUsage());
return true;
}
}
Player player = (Player)sender;
if(args.length > 3) {
List<Player> list = server.matchPlayer(args[3]);
if(list.size() == 1)
player = list.get(0);
}
ItemStack stack = new ItemStack(m,amount,(short)damage);
player.getInventory().addItem(stack);
if(!player.equals(((Player)sender))){
sender.sendMessage(Config.DEFAULT_INFO_COLOR + "Given " + player.getName() + " " + amount + " " + m.name() + ".");
}
player.sendMessage(Config.DEFAULT_INFO_COLOR + "There you go " + player.getName() + ".");
log.info(((Player)sender).getName() + " has given " + player.getName() + " " + stack.toString() + ".");
return true;
}
}