So I want to cancel my task when an PlayerItemHeldEvent happens. I am doing simple gun reload and want to check: if a player changed his hotbar slot, then the reload task will be cancelled Here is the code (idk how it can help): Code (Java): public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { //Player only command if(sender instanceof Player){ Player p = (Player) sender; int timeLeft = cooldownManager.getCooldown(p.getUniqueId()); //If the cooldown has expired if(timeLeft == 0){ //Use the feature p.sendMessage(ChatColor.GREEN + "Feature used!"); //Start the countdown task cooldownManager.setCooldown(p.getUniqueId(), CooldownManager.DEFAULT_COOLDOWN); new BukkitRunnable() { @SuppressWarnings("deprecation") @Override public void run() { int timeLeft = cooldownManager.getCooldown(p.getUniqueId()); cooldownManager.setCooldown(p.getUniqueId(), --timeLeft); p.sendTitle("", ChatColor.GREEN+" Перезарядка..."); if(timeLeft == 0){ p.getItemInHand().setDurability((short) 0); p.sendTitle("", ChatColor.GREEN+" Перезаряжен!"); this.cancel(); } } }.runTaskTimer(this.plugin, 20, 20); }else{ //Hasn't expired yet, shows how many seconds left until it does p.sendMessage(ChatColor.RED.toString() + timeLeft + " seconds before you can use this feature again."); } }else{ sender.sendMessage("Player-only command"); } return true; } And here is CooldownManager.java code (again, idk how it can help): Code (Java): public class CooldownManager { private final Map<UUID, Integer> cooldowns = new HashMap<>(); public static final int DEFAULT_COOLDOWN = 10; public void setCooldown(UUID player, int time){ if(time < 1) { cooldowns.remove(player); } else { cooldowns.put(player, time); } } public int getCooldown(UUID player){ return cooldowns.getOrDefault(player, 0); } }