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

Интервалы времени!

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

Статус темы:
Закрыта.
  1. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    instance - экземпляр текущего плагина,
    run - выполняемый код
    delay - время, через которое Runnable выполнится первый раз (в тиках)
    period - время, через которое Runnable будет выполняться в последующие разы (опять же в тиках)
     
  2. AtomicInteger

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

    Баллы:
    76
    Вот, почитай.
     
  3. Deamonish

    Deamonish Активный участник

    Баллы:
    61
    Для тех, кто считает. Что тики, зависят от ТПС. Написал простенькую команду. Результат на скрине.
    TPS.jpg
    Код:
    @Override
        public boolean execute(CommandSender sender, String[] args) {
            Player p = (Player) sender;
            long startTime = System.currentTimeMillis();
    
            Bukkit.getScheduler().runTaskLater(LobbyPlugin.getInstance(), () -> {
                long time = (System.currentTimeMillis() - startTime);
                double seconds = time/1000;
                p.performCommand("tps");
                Bukkit.broadcastMessage("Шедуллер выполнился за: " + seconds + " секунд.");
                Bukkit.broadcastMessage("Шедуллер выполнился за: " + time + " милисекунд.");
            }, 20);
            return false;
        }
    Можно, такое конечно же выпилить в асинхронном виде.
    Bukkit.getScheduler().runTaskLaterAsynchronously();
    Для этого руннейбла, создаст свой BukkitWorker и отдельный поток.
    Но будут небольшие проблемы с многопоточностью. К примеру, если в цикле будет итерация по непотокобезопасной коллекции, и в этот момент например в другом потоке удалят элемент из коллекции, будет ConcurrentModificationException. Парень если такое спрашивает, новичок. Ему не нужны сложные, и суперточные до милисекунд решения.
     
  4. Автор темы
    AlexMor

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

    Баллы:
    76
    Спасибо, помогли, все работает)
     
Статус темы:
Закрыта.

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