1 package org.bukkit.command.defaults;
3 import java.util.ArrayList;
4 import java.util.Collections;
7 import org.apache.commons.lang.Validate;
8 import org.bukkit.Bukkit;
9 import org.bukkit.ChatColor;
10 import org.bukkit.Material;
11 import org.bukkit.command.Command;
12 import org.bukkit.command.CommandSender;
13 import org.bukkit.entity.Player;
14 import org.bukkit.inventory.ItemStack;
15 import org.bukkit.util.StringUtil;
17 import com.google.common.collect.ImmutableList;
20 private static List<String> materials;
22 ArrayList<String> materialList =
new ArrayList<String>();
24 materialList.add(material.name());
26 Collections.sort(materialList);
27 materials = ImmutableList.copyOf(materialList);
32 this.
description =
"Gives the specified player a certain amount of items";
33 this.
usageMessage =
"/give <player> <item> [amount [data]]";
40 if ((args.length < 2)) {
50 if (material != null) {
54 if (args.length >= 3) {
55 amount = this.
getInteger(sender, args[2], 1, 64);
57 if (args.length >= 4) {
59 data = Short.parseShort(args[3]);
60 }
catch (NumberFormatException ex) {}
68 sender.
sendMessage(
"There's no item called " + args[1]);
79 Validate.notNull(sender,
"Sender cannot be null");
80 Validate.notNull(args,
"Arguments cannot be null");
81 Validate.notNull(alias,
"Alias cannot be null");
83 if (args.length == 1) {
84 return super.tabComplete(sender, alias, args);
86 if (args.length == 2) {
87 final String arg = args[1];
88 final List<String> materials =
GiveCommand.materials;
89 List<String> completion = null;
91 final int size = materials.size();
92 int i = Collections.binarySearch(materials, arg, String.CASE_INSENSITIVE_ORDER);
99 for ( ; i < size; i++) {
100 String material = materials.get(i);
102 if (completion == null) {
103 completion =
new ArrayList<String>();
105 completion.add(material);
111 if (completion != null) {
115 return ImmutableList.of();