Помогите Как сделать задержку

PhantomPaw

Активный участник
Пользователь
Баллы
66
Как сделать задержку на использование ender pearl и gold apple?
 
Плагин на кд перла есть
 
Создаешь хэшмап
Код:
Map<String, Integer> CoolDown = new HashMap<String, Integer>();
Когда игрок заходит на сервер, записываешь его в хэшмап
Код:
    @EventHandler
    public void onJ(PlayerJoinEvent e) {
        CoolDown.putIfAbsent(e.getPlayer().getName(), 0);
    }
При запуске эндрперла срабатывает ProjectileLaunchEvent, проверяешь если запущенный прожектайл это эндрперл, и запускатор это игрок, то выполняешь проверку (Значение в хэшмапе например 0 - нет кулдауна 1 - есть), дальше если кулдауна нет, то ставишь в хэшмап 1 (для проверки на кулдаун в следующий раз), если есть то отменяешь эвент. Есть одна фича, когда ты отменишь событие эндрперл пропадет из инвенторя (на версии 1.8 точно), по этому нужно вернуть эндр перл владельцу)
Код:
    @EventHandler
    public void PME(ProjectileLaunchEvent pe) {
        if(pe.getEntityType() == EntityType.ENDER_PEARL && pe.getEntity().getShooter() instanceof CraftPlayer) {
            LivingEntity p =(CraftPlayer) pe.getEntity().getShooter();
            String name = p.getName();
            if (CoolDown.get(name) != 0) {
                p.sendMessage("Кулдаун");
                ItemStack IS = Bukkit.getServer().getPlayer(name).getItemInHand();
                pe.setCancelled(true);
                Runnable am = new Runnable() {
                    @Override
                    public void run() {
                    IS.setAmount(IS.getAmount() + 1);
                    Bukkit.getServer().getPlayer(name).setItemInHand(IS);
                    }
                };Bukkit.getScheduler().runTaskLater(main, am, 1);
                return;
            }
            @SuppressWarnings("deprecation")
            Block b = p.getTargetBlock((HashSet<Byte>)null, 200);
            if(p.getLocation().distance(b.getLocation()) < 7) {
                p.sendMessage("Слишком близко");
                ItemStack IS = Bukkit.getServer().getPlayer(name).getItemInHand();
                pe.setCancelled(true);
                Runnable am = new Runnable() {
                    @Override
                    public void run() {
                    IS.setAmount(IS.getAmount() + 1);
                    Bukkit.getServer().getPlayer(name).setItemInHand(IS);
                    }
                };Bukkit.getScheduler().runTaskLater(main, am, 1);
                return;
            }
            CoolDown.replace(name, 1);
            Runnable am = new Runnable() {
                @Override
                public void run() {  
                CoolDown.replace(name, 0);
                p.sendMessage("Granade is ready");
                }
            };Bukkit.getScheduler().runTaskLater(main, am, 60);
        }
    }
Кусок моего кода, смотри, разбирайся, перепиши под себя сам. ЭТО ПРИМЕР, А НЕ ПРИЗЫВ ДЕЛАТЬ ИМЕННО ЭТИМ СПОСОБОМ.
 
Назад
Верх