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

  • Автор темы Автор темы AdraliK
  • Дата начала Дата начала

AdraliK

Участник
Пользователь
Баллы
31
Имя в Minecraft
AdraliK
Добрый день. У меня есть метод, которому нужно сделать задержку в 3 секунды. После активации этого метода идет откат на 3 секунды (в этом промежутке времени метод не должен активироваться). Как это реализовать?
 
Это типа метод делается каждые 3 секунды. Или ты хлчхоч таймер?
 
Скорее всего это действует так.
Кто-то выполнил метод - идёт кулдавн на 3 секунды, все. BukkitRunnable API.
 
Код:
int seconds = 3;
Bukkit.getScheduler().runTaskLater(plugin, () -> yourMethod(), seconds * 20);
Где yourMethod() - твой метод, который нужно активировать через заданное время.
 
WTF выше? ТС нормально обьяснить не может, что ему нужно, а челики шлют шедулеры?
Тебе нужен отложенный запуск или задержка на использование методов?
Если первое - твой выбор BukkitRunnable(как все выше советуют)
Если же второе - Map или типа того, где будут хранится игроки с их кулдаунами(реализации не скину, ибо нужно головой своей тоже думать, как мы все раньше делали сами). А так такую фигню в любом плагине на кулдауны можно посмотреть, если что
 
WTF выше? ТС нормально обьяснить не может, что ему нужно, а челики шлют шедулеры?
Тебе нужен отложенный запуск или задержка на использование методов?
Если первое - твой выбор BukkitRunnable(как все выше советуют)
Если же второе - Map или типа того, где будут хранится игроки с их кулдаунами(реализации не скину, ибо нужно головой своей тоже думать, как мы все раньше делали сами). А так такую фигню в любом плагине на кулдауны можно посмотреть, если что

Ну смотри, у меня есть метод с телепортацией игрока. После того как игрок телепортировался, он не может снова телепортироваться в течении 3-ёх секунд
 
Ну смотри, у меня есть метод с телепортацией игрока. После того как игрок телепортировался, он не может снова телепортироваться в течении 3-ёх секунд
Тебе нужен не шедулер, а кулдаун(см.любые плагины на кулдауны)
P.S. К примеру AbstractCooldown
 

Я нашел один способ, но мне нужно знать как работать с BukkitRunnable. Только что смотрел обзоры, вылезали ошибки, не мог бы показать простенький код или дать ссылку на туториал?
 
Я нашел один способ, но мне нужно знать как работать с BukkitRunnable. Только что смотрел обзоры, вылезали ошибки, не мог бы показать простенький код или дать ссылку на туториал?
PHP:
new BukkitRunnable() {
  public void run() {
    //твой код
  }
}.runTaskTimer(plugin/*твой главный класс плагина*/, 0/*сюда задержку, если надо*/, 20/*сюда интервал, в тиках*/);
Либо создай свой класс который extends BukkitRunnable и делай в нём
 
Код:
int seconds = 3;
Bukkit.getScheduler().runTaskLater(plugin, () -> yourMethod(), seconds * 20);
Где yourMethod() - твой метод, который нужно активировать через заданное время.
PHP:
new BukkitRunnable() {
  public void run() {
    //твой код
  }
}.runTaskTimer(plugin/*твой главный класс плагина*/, 0/*сюда задержку, если надо*/, 20/*сюда интервал, в тиках*/);
Либо создай свой класс который extends BukkitRunnable и делай в нём
найс. насколько сложно создать свой метод? а ему я уже предлагал идти в апи.
 
Я нашел один способ, но мне нужно знать как работать с BukkitRunnable. Только что смотрел обзоры, вылезали ошибки, не мог бы показать простенький код или дать ссылку на туториал?
зачем тебе здесь BukkitRunnable?
 
PHP:
new BukkitRunnable() {
  public void run() {
    //твой код
  }
}.runTaskTimer(plugin/*твой главный класс плагина*/, 0/*сюда задержку, если надо*/, 20/*сюда интервал, в тиках*/);
Либо создай свой класс который extends BukkitRunnable и делай в нём

А как написать не в главном классе, а в классе, где есть implements listener?
 
найс. насколько сложно создать свой метод?
Он не знает как объект плагина передать в другой класс, а ему предлагают использовать лямбда-выражения.

А как написать не в главном классе, а в классе, где есть implements listener?

Выбрасывай (с) alexandrage
 
ммм, просто когда я пишу метод в неглавном классе он мне пишет ошибку в этой строке : runTaskTimer(this,20)
 
Код:
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 */
    }
}
 
Назад
Верх