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

Помогите пример написания runtask для getscheduler

Тема в разделе "Разработка плагинов для новичков", создана пользователем krovinosets, 27 июн 2019.

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

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

    Баллы:
    61
    Имя в Minecraft:
    Krovinosets
    Я только начал писать на Java, так шо я аут в этом деле
    Моя проблема проста, я не знаю что написать в arg1 для runtask.
    Код: bandicam 2019-06-27 20-13-08-756.jpg
    То есть в arg0 я записываю переменную, а в arg1 требуется Runnable, и я не знаю как его записать.
    Я это делал, чтобы если нет грозы, то он бы запускал таймер, проверяющий грозу и в следствии отправлял сообщение. Это чисто мой метод. Так же, если runtask не является вызывателем таймера, то прошу, поправите меня, спасибо.
    Пожалуйста, дайте пример того, как это делается.
     
  2. Lemar98

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

    Баллы:
    76
    Гугл?
     
  3. Автор темы
    krovinosets

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

    Баллы:
    61
    Имя в Minecraft:
    Krovinosets
    я бы не писал сюда, если бы нашел в гугле
     
  4. Meltionix

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

    Баллы:
    31
    Учись с документацией работать.
     
  5. Cororo

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

    Баллы:
    76
    Имя в Minecraft:
    TheSirCororo
    new Runnable() если хочешь новый создать
     
  6. Автор темы
    krovinosets

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

    Баллы:
    61
    Имя в Minecraft:
    Krovinosets
    а если уже созданный использовать, то как это записать
     
  7. Meltionix

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

    Баллы:
    31
    Учи Java, если такой вопрос задаешь.
     
  8. Cororo

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

    Баллы:
    76
    Имя в Minecraft:
    TheSirCororo
    Когда ты создовал int q ты мог перед этим отдельно создать Runnable.
    Runnable runnable = new Runnable, когда создавал Int q просто вместо new Runnable указать runnable, который ты создал. Так же при runTask
     
  9. MurlikMurlik

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

    Баллы:
    96
    Я бы не использовал на твоем месте устаревшие методы создание шедулеров.
    Ибо в устаревших нужно где то хранить номер задачи, чего нет в новых шедулерах. (точнее оно не обязательно)
    Юзай это
    Код:
            Bukkit.getScheduler().runTaskTimer(plugin, () -> {
                //запускай что нужно
            }, 20, 20);
     
  10. Cororo

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

    Баллы:
    76
    Имя в Minecraft:
    TheSirCororo
    Хех, почти аналогичная система ток на лямбде)
     
  11. MurlikMurlik

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

    Баллы:
    96
    Не в лямбде дело. Тут можно создать свой класс, наследовать BukkitRunnable а там уже в конструкторе описать какой тип таймера запустить, а там уже переопределить метод run()
    А в главном классе например, инициализировать переменную этого класса и уже имеем гибкий таймер со всеми функциями из под коробки.
     
  12. alexandrage

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

    Баллы:
    173
    Последнее редактирование: 28 июн 2019
  13. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    PHP:
        public void onEnable() {
            
    File config = new File(getDataFolder() + File.separator "config.yml");
            if(!
    config.exists()) {
                
    getConfig().options().copyDefaults(true);
                
    saveDefaultConfig();
            }
            
    BukkitRunnable runnable = new BukkitRunnable() {
                @
    Override
                
    public void run() {
                    
    Bukkit.getOnlinePlayers().forEach(-> {
                        if(
    p.getWorld().hasStorm() || p.getWorld().isThundering()) {
                            
    Block block p.getWorld().getHighestBlockAt(p.getLocation());
                            if(
    block.getLocation().getBlockY() <= p.getLocation().getY() + && !p.getGameMode().equals(GameMode.CREATIVE)) {
                                
    p.damage(getConfig().getInt("DAMAGE"));
                                
    p.sendMessage(ChatColor.translateAlternateColorCodes('&'getConfig().getString("MESSAGES.IN_RAIN")));
                            }
                        }
                    });
                }
            };
            
            
    runnable.runTaskTimer(this2525);
        }

    Вот код на кислотный дождь. Подредактируй его под себя, заместь дамага снимай/запускай ранейбл, и всё в том духе.
    P.s. мне лень было писать код с нуля, кинул тот что есть :D
     
  14. Автор темы
    krovinosets

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

    Баллы:
    61
    Имя в Minecraft:
    Krovinosets
    Благодарю.
     
Статус темы:
Закрыта.

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