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

Помогите приостановить выполнение кода

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

Статус темы:
Закрыта.
  1. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Доброго времени суток, форумчане.

    как приостановить выполнение кода на какое то кол-во тиков\секунд\миллисекунд

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

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Сделай шедулером
     
  3. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    а можно по подробнее?
     
  4. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    После выполнения команды запускай таймер. Перед выполнением команды делаешь проверку на время
     
  5. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    это то понятно, ты пока что не назвал ни одного метода, а искать их наобум не улыбает
     
  6. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Что-то типо этого
    Bukkit.getScheduler().scheduleSyncDelayedTask(instance, new Runnable() {
    public void run() {
    for (int i = 0; i < 5; i++) {

    }
    }
    }, 400L);
     
  7. alexandrage

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

    Баллы:
    173
    Код:
    public class Scheduler extends Thread {
        int time;
        Main instance;
    
        public Scheduler(int time, Main instance) {
            this.time = time;
            this.instance = instance;
        }
    
        @Override
        public void run() {
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {}
            //Что то делаем.
        }
    }
    Юзаем new Scheduler(5000, this).start();
     
    Последнее редактирование: 10 дек 2016
  8. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Зависит от задачи. Если нужно выполнить какой-то сторонний код после определённой задержки, то подойдёт баккитовский шедулер (как предложил HunterGaming). А если же именно приостановить выполнение кода в текущем потоке на указанное время, можно использовать Thread.sleep(ms), как подметил alexandrage.
     
  9. alexandrage

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

    Баллы:
    173
    Если нужны тики сервера, то ведрошедулер подойдет. А если нужно именно время, то мой вариант. Ибо тики зависят от тпс сервера и 20 тиков не всегда = 1 сек.
    Обычно задержки юзают на команды и там измеряется точным временем.
     
  10. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Всё же в первую очередь от задачи. Шедулеры используются в основном для синхронного доступа к BukkitAPI. Ну, либо же из-за незнания других способов. О банальном new Thread(Runnable).start() практически никто не знает...
    В общем не суть. ТС сам решит, что ему нужно, и выберет подходящий способ.
     
  11. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Спасибо, и еще вопрос.

    Как правильнее использовать это с ивентами.

    Приостанавливать выполнение ивента если он вызвался, или пихать ивент внутрь шелдуера?
     
  12. alexandrage

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

    Баллы:
    173
    Ивент в главном потоке, его нельзя останавливать. И пихать его в отдельный поток так же не получится.
     
  13. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Разобрался. Как выяснилось мне было нужно совсем не это

    Еще раз спасибо
     
Статус темы:
Закрыта.

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