Skip to main content

Kill Command

We will be recreating the command /kill <target>, we will need to use TargetSelector parameter type provided by Imperat
Let's create our kill command class:

import dev.velix.imperat.BukkitSource;
import dev.velix.imperat.annotations.Command;
import dev.velix.imperat.annotations.Description;
import dev.velix.imperat.annotations.Named;
import dev.velix.imperat.annotations.Permission;
import dev.velix.imperat.annotations.Usage;
import dev.velix.imperat.selector.TargetSelector;
import org.bukkit.ChatColor;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;

@Command("kill")
@Permission("command.kill")
@Description("Kills entities")
public class KillCommand {

@Usage
public void def(BukkitSource source) {
source.error("/kill <target>");
}

@Usage
public void kill(BukkitSource source, @Named("target") TargetSelector selector) {
int count = 0;
for(Entity entity : selector) {
if(entity instanceof LivingEntity livingEntity) {
livingEntity.setHealth(0D);
}

entity.remove();
count++;
}
source.reply(ChatColor.YELLOW + "Killed " + count + " entities");
}
}