Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

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

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

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

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

    Заранее спасибо
     
  2. Хостинг MineCraft
    <
  3. HunterGaming

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

    Баллы:
    46
    Имя в Minecraft:
    HunterGaming13
    Сделай шедулером
     
  4. Автор темы
    Fenix78563

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

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

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

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

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

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

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

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

    }
    }
    }, 400L);
     
  8. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Код:
    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
  9. Dymeth

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

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

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Если нужны тики сервера, то ведрошедулер подойдет. А если нужно именно время, то мой вариант. Ибо тики зависят от тпс сервера и 20 тиков не всегда = 1 сек.[DOUBLEPOST=1481388549,1481388390][/DOUBLEPOST]Обычно задержки юзают на команды и там измеряется точным временем.
     
  11. Dymeth

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

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

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

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

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

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

    alexandrage Администратор

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

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

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

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

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