Помогите После Cooldown не выполняются события

Anion

Участник
Баллы
31
Здравствуйте,я начал писать плагин на способности и столкнулся с такой проблемой.
Есть код (Да-да,он говно)
Код:
package zrt.main;

import java.util.HashMap;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.util.Vector;

public class Handler
  implements Listener
{
  private HashMap<UUID, Long> cooldown = new HashMap();
  private int cooldowntime = 40;

  @EventHandler
  public void interact(PlayerInteractEvent e)
  {
   Action a = e.getAction();
   ItemStack item = e.getPlayer().getItemInHand();
   if ((a == Action.LEFT_CLICK_AIR) && (item.getType() != Material.FEATHER)) {
     }
   if ((a == Action.LEFT_CLICK_AIR) && (item.getType() == Material.FEATHER)) {
     return;
   }
   Player p = e.getPlayer();
   Location loc = p.getLocation();
   ItemStack itemi = p.getItemInHand();
   float yaw = loc.getYaw();
   float pitch = loc.getPitch();
   if ((item.getType() == Material.FEATHER) && (itemi.getItemMeta().getDisplayName().equals(ChatColor.WHITE + "Прыжок")))
   {
     if (this.cooldown.containsKey(p.getUniqueId()))
     {
       long secondsleft = ((Long)this.cooldown.get(p.getUniqueId())).longValue() / 1000L + this.cooldowntime - (System.currentTimeMillis()/1000);
       if (secondsleft > 1) {
         p.sendMessage(ChatColor.RED + "Дождитесь отката способности("+ secondsleft+")");
       }
       e.setCancelled(true);
     }
     else
     {
       p.setVelocity(p.getLocation().getDirection().multiply(10));
       this.cooldown.put(p.getUniqueId(), Long.valueOf(System.currentTimeMillis()));
       return;
     }
     e.setCancelled(true);
   } else {
         p.sendMessage(ChatColor.RED + "Дождитесь отката способности");
     }
   e.setCancelled(true);
   if ((item.getType() == Material.BOOK) && (itemi.getItemMeta().getDisplayName().equals("Книга заклинателя стрел"))) {
     p.launchProjectile(Arrow.class);
   }
  }
}


проблема в том,что при использование способности идет cooldown 40 секунд,НО послед cooldown'a вообще ничего не происходит,те даже не пишется "Дождитесь отката способности",прошу помощи.
 
Зачем ты начинаешь с bukkit, учи сначала java и не будешь такие глупые темы создавать.
Сам начинал именно с ведра, от чего тоже задавал очень глупые вопросы. Еще 2-ой год даже не пошел, с того, как начал)
100 000 игроков использовавших кулдаун за 1 аптайм это сильное преувеличение, я взял для наглядности, на деле будет в десятки раз меньше и очистка мапы кулдаунов шедулярами это бесполезное дело.
В общем, реально, лучше сначала учить яву, ибо приводит к тому, что лень разбираться, от чего нагрузка; начинаешь пытаться создавать как можно меньше утечек ресурсов, а приводит к тому, что было видно чуть выше.
Извиняюсь за наглость,я совсем айт
я только вчера начал этим заниматься,можете вживить код в мой?
Сам попробовал разобраться-не получилось
На счет этого - мне лень. Может не работать, потом еще работы добавиться с фиксами твоего дела.. Своим занят, не могу.
Не вижу смысла учить яву ради 1 плагина
Поверь, приятно понимать смысл игры. Недавно начал заниматься изучением ядра, чтобы понимать, как и что работает в игре. Когда играешь уже как 7-ой год, а не знаешь какой-то мелочи, а потом узнаешь об этом из кода, то понимаешь, что ты начал развиваться как кодер. Реально, очень приятно.

Даже если ты не собираешься что-то разбирать в игре/что-то еще делать, то все-равно программирование в нашем мире - очень важно, а плагины писать не обязательно. Знать какие-то основы никогда не будет лишним, ведь потихоньку интегрируют программирование даже в школьную программу в нормальных странах (намекаю, что говорю не про Россию), т.к. развивает мышление. Такое говорю не просто так, ибо самому приходилось тратить много времени, чтобы изучить что-то, что в обычной, повседневной жизни не пригодиться (как казалось на тот момент).
 
Последнее редактирование:
Если игрок есть в мапе, код никогда не дойдёт к моменту где ты даёшь способность. Лучше бы ты переделал логику этой штуковины, но кажется, можно исправить так:
PHP:
if (secondsleft > 0) {
        p.sendMessage(ChatColor.RED + "Дождитесь отката способности("+ secondsleft+")");
} else {
    //дать способность и записать новое время
}
Говно
 
Конструкция if-else не устроила, без неё можно красиво сделать.
Чем красивее? На вкус и цвет товарищей нет, особенно, когда твой слитый джедик ходит по всяким рукам, и даже до меня случайно дошел..)
 
Чем красивее? На вкус и цвет товарищей нет, особенно, когда твой слитый джедик ходит по всяким рукам, и даже до меня случайно дошел..)
Я его сам как бы слил, потому что там код говно и я новый написал.
Вот это да.
Тернарным оператором?
Сейчас бы тернарный оператор с воидами...
 
Я его сам как бы слил, потому что там код говно и я новый написал.
Вот это да.
Зря ты его слил, теперь пытаются поставить, а меня просили под него дописать еще некоторые вещи, которые у тебя ужасно реализованы :/
Сейчас бы тернарный оператор с воидами...
А это... Ну, ты ничего не понимаешь!!1
 
Зря ты его слил, теперь пытаются поставить, а меня просили под него дописать еще некоторые вещи, которые у тебя ужасно реализованы :/
Мало того что ужасно, там там ещё и зависимость от нашего апи есть.
Я бы мог переписать его под чистые сервера, но у меня много других дел.
 
Зря ты его слил, теперь пытаются поставить, а меня просили под него дописать еще некоторые вещи, которые у тебя ужасно реализованы :/

А это... Ну, ты ничего не понимаешь!!1
Какие вещи там по-твоему плохо реализованы?
 
Какие вещи там по-твоему плохо реализованы?
Если начинать с мэйн класса, то как минимум это...
ee713efe-a93e-4d69-b51b-a68e18c328ef
5UPSi8p.png
А так, это можно долго перечислять)
 
А также сохранение игроков в конфиги; миллионы отдельных утильных-классов под статичные методы, при том, не существует утилиты для создания предметов
RFVXPwq.png
И, может быть, я что-то не так понимаю, но тут либо боссы отдельным плагином, либо их нужно добавлять через говно-плагины (которые паблик для создания кастомных энтити через конфиг).
 
А также сохранение игроков в конфиги; миллионы отдельных утильных-классов под статичные методы, при том, не существует утилиты для создания предметов
RFVXPwq.png
И, может быть, я что-то не так понимаю, но тут либо боссы отдельным плагином, либо их нужно добавлять через говно-плагины (которые паблик для создания кастомных энтити через конфиг).
Господиии.... Этому плагину больше года, ору...
https://yadi.sk/d/CveYvPhM3VPsd6 вот более новая версия... Я о ней и говорил
 
А также сохранение игроков в конфиги; миллионы отдельных утильных-классов под статичные методы, при том, не существует утилиты для создания предметов
RFVXPwq.png
И, может быть, я что-то не так понимаю, но тут либо боссы отдельным плагином, либо их нужно добавлять через говно-плагины (которые паблик для создания кастомных энтити через конфиг).
Этот плагин давно похоронить надо.
 
Назад
Верх