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

Задержка, кулдаун, откат (РЕШЕНО)

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

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

    AdraliK Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    AdraliK
    Добрый день. У меня есть метод, которому нужно сделать задержку в 3 секунды. После активации этого метода идет откат на 3 секунды (в этом промежутке времени метод не должен активироваться). Как это реализовать?
     
  2. Andoroid

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

    Баллы:
    76
    Это типа метод делается каждые 3 секунды. Или ты хлчхоч таймер?
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Наведи пример, чтобы было сразу понятнее.
     
  4. Nikolai_Faint

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

    Баллы:
    96
    Скорее всего это действует так.
    Кто-то выполнил метод - идёт кулдавн на 3 секунды, все. BukkitRunnable API.
     
  5. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Код:
    int seconds = 3;
    Bukkit.getScheduler().runTaskLater(plugin, () -> yourMethod(), seconds * 20);
    Где yourMethod() - твой метод, который нужно активировать через заданное время.
     
  6. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    WTF выше? ТС нормально обьяснить не может, что ему нужно, а челики шлют шедулеры?
    Тебе нужен отложенный запуск или задержка на использование методов?
    Если первое - твой выбор BukkitRunnable(как все выше советуют)
    Если же второе - Map или типа того, где будут хранится игроки с их кулдаунами(реализации не скину, ибо нужно головой своей тоже думать, как мы все раньше делали сами). А так такую фигню в любом плагине на кулдауны можно посмотреть, если что
     
  7. Автор темы
    AdraliK

    AdraliK Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    AdraliK
    Ну смотри, у меня есть метод с телепортацией игрока. После того как игрок телепортировался, он не может снова телепортироваться в течении 3-ёх секунд
     
  8. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Тебе нужен не шедулер, а кулдаун(см.любые плагины на кулдауны)
    P.S. К примеру AbstractCooldown
     
  9. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Меня этой фразой друзья троллят :confused:
     
  10. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Ор))0))
     
  11. Автор темы
    AdraliK

    AdraliK Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    AdraliK
    Я нашел один способ, но мне нужно знать как работать с BukkitRunnable. Только что смотрел обзоры, вылезали ошибки, не мог бы показать простенький код или дать ссылку на туториал?
     
  12. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    PHP:
    new BukkitRunnable() {
      public 
    void run() {
        
    //твой код
      
    }
    }.
    runTaskTimer(plugin/*твой главный класс плагина*/0/*сюда задержку, если надо*/20/*сюда интервал, в тиках*/);
    Либо создай свой класс который extends BukkitRunnable и делай в нём
     
  13. Nikolai_Faint

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

    Баллы:
    96
    найс. насколько сложно создать свой метод? а ему я уже предлагал идти в апи.
     
  14. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    зачем тебе здесь BukkitRunnable?
     
  15. Автор темы
    AdraliK

    AdraliK Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    AdraliK
    А как написать не в главном классе, а в классе, где есть implements listener?
     
  16. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Он не знает как объект плагина передать в другой класс, а ему предлагают использовать лямбда-выражения.

    Выбрасывай (с) alexandrage
     
  17. Автор темы
    AdraliK

    AdraliK Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    AdraliK
    ммм, просто когда я пишу метод в неглавном классе он мне пишет ошибку в этой строке : runTaskTimer(this,20)
     
  18. alexandrage

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

    Баллы:
    173
     
  19. alexandrage

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

    Баллы:
    173
    Код:
    package Example;
    
    import org.bukkit.plugin.Plugin;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class Scheduler extends BukkitRunnable {
        Plugin plugin;
    
        Scheduler(Plugin plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public void run() {
            /* TODO */
        }
    }
     
  20. alexandrage

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

    Баллы:
    173
    Scheduler shd = new Scheduler();
    Пример.
    shd.runTaskTimer(this, 1, 1);
     

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