001    package org.bukkit.command.defaults;
002    
003    import java.util.List;
004    
005    import org.apache.commons.lang.Validate;
006    import org.bukkit.Bukkit;
007    import org.bukkit.command.CommandSender;
008    import org.bukkit.entity.Player;
009    import org.bukkit.event.entity.EntityDamageEvent;
010    
011    import com.google.common.collect.ImmutableList;
012    
013    public class KillCommand extends VanillaCommand {
014        public KillCommand() {
015            super("kill");
016            this.description = "Commits suicide, only usable as a player";
017            this.usageMessage = "/kill";
018            this.setPermission("bukkit.command.kill");
019        }
020    
021        @Override
022        public boolean execute(CommandSender sender, String currentAlias, String[] args) {
023            if (!testPermission(sender)) return true;
024    
025            if (sender instanceof Player) {
026                Player player = (Player) sender;
027    
028                EntityDamageEvent ede = new EntityDamageEvent(player, EntityDamageEvent.DamageCause.SUICIDE, 1000);
029                Bukkit.getPluginManager().callEvent(ede);
030                if (ede.isCancelled()) return true;
031    
032                ede.getEntity().setLastDamageCause(ede);
033                player.setHealth(0);
034                sender.sendMessage("Ouch. That look like it hurt.");
035            } else {
036                sender.sendMessage("You can only perform this command as a player");
037            }
038    
039            return true;
040        }
041    
042        @Override
043        public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
044            Validate.notNull(sender, "Sender cannot be null");
045            Validate.notNull(args, "Arguments cannot be null");
046            Validate.notNull(alias, "Alias cannot be null");
047    
048            return ImmutableList.of();
049        }
050    }