summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorEvilSeph <evilseph@gmail.com>2012-10-30 01:18:01 -0400
committerEvilSeph <evilseph@gmail.com>2012-10-30 01:18:01 -0400
commit94effa3f0e91b996e38f92946216bfb6b4050a24 (patch)
tree10722eaeb26e1035e53f90f123deafc67ee7a359 /src/main
parent8b5440766c2670dae1f8a0b075c7d0fe42e15df1 (diff)
downloadbukkit-94effa3f0e91b996e38f92946216bfb6b4050a24.tar
bukkit-94effa3f0e91b996e38f92946216bfb6b4050a24.tar.gz
bukkit-94effa3f0e91b996e38f92946216bfb6b4050a24.tar.lz
bukkit-94effa3f0e91b996e38f92946216bfb6b4050a24.tar.xz
bukkit-94effa3f0e91b996e38f92946216bfb6b4050a24.zip
Clear
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/bukkit/command/SimpleCommandMap.java1
-rw-r--r--src/main/java/org/bukkit/command/defaults/ClearCommand.java109
2 files changed, 110 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
index 292f7686..7e007c57 100644
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
@@ -56,6 +56,7 @@ public class SimpleCommandMap implements CommandMap {
fallbackCommands.add(new DifficultyCommand());
fallbackCommands.add(new WeatherCommand());
fallbackCommands.add(new SpawnpointCommand());
+ fallbackCommands.add(new ClearCommand());
}
public SimpleCommandMap(final Server server) {
diff --git a/src/main/java/org/bukkit/command/defaults/ClearCommand.java b/src/main/java/org/bukkit/command/defaults/ClearCommand.java
new file mode 100644
index 00000000..c5fa41c1
--- /dev/null
+++ b/src/main/java/org/bukkit/command/defaults/ClearCommand.java
@@ -0,0 +1,109 @@
+package org.bukkit.command.defaults;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.commons.lang.Validate;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.util.StringUtil;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ClearCommand extends VanillaCommand {
+ private static List<String> materials;
+ static {
+ ArrayList<String> materialList = new ArrayList<String>();
+ for (Material material : Material.values()) {
+ materialList.add(material.name());
+ }
+ Collections.sort(materialList);
+ materials = ImmutableList.copyOf(materialList);
+ }
+
+ public ClearCommand() {
+ super("clear");
+ this.description = "Clears the player's inventory. Can specify item and data filters too.";
+ this.usageMessage = "/clear <player> [item] [data]";
+ this.setPermission("bukkit.command.clear");
+ }
+
+ @Override
+ public boolean execute(CommandSender sender, String currentAlias, String[] args) {
+ if (!testPermission(sender)) return true;
+ if ((args.length < 2)) {
+ sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
+ return false;
+ }
+
+ Player player = null;
+ if (args.length > 1) {
+ player = Bukkit.getPlayer(args[1]);
+ } else if (sender instanceof Player) {
+ player = (Player) sender;
+ }
+
+ if (player != null) {
+ int id = args.length >= 2 ? getInteger(sender, args[1], 1) : -1;
+ int data = args.length >= 3 ? getInteger(sender, args[2], 0) : -1;
+ ItemStack matchItem = new ItemStack();
+ player.getInventory().all(matchItem)
+ int count = player.getInventory().clear(id, data);
+ player.updateInventory();
+ } else {
+ sender.sendMessage("Can't find user " + args[0]);
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean matches(String input) {
+ return input.equalsIgnoreCase("clear");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
+ Validate.notNull(sender, "Sender cannot be null");
+ Validate.notNull(args, "Arguments cannot be null");
+ Validate.notNull(alias, "Alias cannot be null");
+
+ if (args.length == 1) {
+ return super.tabComplete(sender, alias, args);
+ }
+ if (args.length == 2) {
+ final String arg = args[1];
+ final List<String> materials = ClearCommand.materials;
+ List<String> completion = null;
+
+ final int size = materials.size();
+ int i = Collections.binarySearch(materials, arg, String.CASE_INSENSITIVE_ORDER);
+
+ if (i < 0) {
+ // Insertion (start) index
+ i = -1 - i;
+ }
+
+ for ( ; i < size; i++) {
+ String material = materials.get(i);
+ if (StringUtil.startsWithIgnoreCase(material, arg)) {
+ if (completion == null) {
+ completion = new ArrayList<String>();
+ }
+ completion.add(material);
+ } else {
+ break;
+ }
+ }
+
+ if (completion != null) {
+ return completion;
+ }
+ }
+ return ImmutableList.of();
+ }
+}