1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как поставить Cooldown на использование вещи

Тема в разделе "Разработка плагинов для новичков", создана пользователем VladlenSSD, 14 дек 2021.

  1. Автор темы
    VladlenSSD

    VladlenSSD Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    Доброго времени суток! Я сделал кристалл который взрывается при нажатии ЛКМ (При этом не ставив его, а просто если держать его в руки и нажать ЛКМ он взрывается) и столкнулся с проблемой, как поставить на использование этого кристалла задержку?

    (Данный Кристалл я делал для практики т.к я ещё учусь, может и буду использовать его на сервере но это как получится)

    Заранее спасибо!
     
  2. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Я бы записал игрока в мапу и проверял бы там кд
     
  3. Автор темы
    VladlenSSD

    VladlenSSD Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    А как?
     
  4. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Можно через даты и Duration, можно через System.currentTimeMillis()
     
  5. Автор темы
    VladlenSSD

    VladlenSSD Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    можно хотя-бы 1 пример?
     
  6. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Код:
    public class PlayerCooldownManager {
    
        // здесь хранятся кулдауны игроков
        private static Map<Player, Long> playerCooldowns = new HashMap<>();
    
        // добавить кулдаун игроку (в секундах)
        public void addCooldown(Player player, int seconds) {
            playerCooldowns.put(player, System.currentTimeMillis()+seconds*1000L);
        }
    
        // убрать кулдаун у игрока
        public void removeCooldown(Player player) {
            playerCooldowns.remove(player);
        }
    
        // получить кулдаун игрока (в секундах) (если его нет, то вернется 0)
        public double getCooldown(Player player) {
            double result = (System.currentTimeMillis()-playerCooldowns.get(player))/1000;
            return (result > 0) ? result : 0;
        }
    
        // проверить, есть ли у игрока кулдаун (true - есть, false - нет)
        public boolean hasCooldown(Player player) {
            return getCooldown(player) > 0;
        }
    
    }
    
    P.S., писал с телефона, без IDE, где-то могут быть очепятки.
     
    Последнее редактирование: 14 дек 2021
  7. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Можно сделать визуально такой же кулдаун, как у эндер-пёрлов, например.
    Player#setCooldown(Material material, int ticks)

    Правда при повторном использовании предмета кулдаун придётся проверять самостоятельно при помощи
    Player#hasCooldown(Material)
     
  8. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Насколько я знаю, этот кулдаун сбрасывается при перезаходе на сервер такчто если выдавать кудлаун на долго лучше его всё же записать в память.
     
  9. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну тут да, вполне возможно
     
  10. Ериичи

    Ериичи Ньюби

    Баллы:
    1
    Имя в Minecraft:
    net
    а как сделать визуальное кд на предмет в хотбаре по типу эндер жемчуга когда его бросаешь (проще говоря как на фантайме)
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Player#setCooldown(material, ticks), будет тебе визуал и проверяешь активно ли время через hasCooldown(material).
     
  12. Ериичи

    Ериичи Ньюби

    Баллы:
    1
    Имя в Minecraft:
    net
    А куда это вписывать?
     
  13. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В код своего плагина. Если плагины не ищешь, то тебе нужно искать готовый плагин, добавляющий такой функционал
     
  14. Ериичи

    Ериичи Ньюби

    Баллы:
    1
    Имя в Minecraft:
    net
    Ты знаешь плагин antirelog? Он у меня единственный плагин на кд. Если знаешь, то можно просто вставить эту команду в самый конец и все заработает?
     
  15. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не в курсе, попробуй
     

Поделиться этой страницей