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

Помогите Остановка шедулера

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

  1. Автор темы
    php5master

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

    Баллы:
    66
    Делаю плагин на авторизацию через Google Authenticator.
    Таск я запустил этим кодом:
    Код:
    @EventHandler
        public void onJoin(PlayerJoinEvent e){
            Bukkit.getScheduler().runTaskLater(this, () -> {e.getPlayer().kickPlayer("Вы не успели авторизироваться");}, 20L * 60);
        }
    А как его остановить, если успели авторизироваться?
     
  2. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    Добавить туда иф злогинен или нет. Если всё ешё нет, тогда кик.
     
  3. Автор темы
    php5master

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

    Баллы:
    66
    А если игрок зайдёт и будет спать
     
  4. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    Разбуди. =)
     
  5. Автор темы
    php5master

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

    Баллы:
    66
    Киком через 60 сек и хочу разбудить )
     
  6. xDark

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

    Баллы:
    96
    this.cancel();
    или BukkitTask task = new BukkitTask() {...};
     
  7. alexandrage

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

    Баллы:
    173
    Получаешь номер шедулера и стопай по номеру когда хочешь. Пруфит.
    Код:
    int TaskId = Bukkit.getScheduler().runTaskLater(this, () -> {e.getPlayer().kickPlayer("Вы не успели авторизироваться");}, 20L * 60).getTaskId();
     
    Последнее редактирование: 30 янв 2017
  8. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Для таких вещей делают свой "враппер" под игрока и в нём нужный шедулер. В этом же враппере булеан переменную. Игрок залогинен - булеан = true - стопаем шедулер для этого игрока.
     
  9. alexandrage

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

    Баллы:
    173
    Проще получить айдишник кодом повыше.
     
  10. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Может, не стану спорить. Судя по стилю его плагина, в его случае лучше плеер враппер написать. И всё реализовать там.
     
  11. alexandrage

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

    Баллы:
    173
    Ну да, давай навешаем десяток шедулеров, так интереснее. Когда можно получить номер шедулера и передать его в свой метод.
     
  12. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    Помоему, моё решение одним ифом лучше и проще. :rolleyes:
     
  13. alexandrage

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

    Баллы:
    173
    А если игрок 10 раз войдет без логина? Будет висеть 10 шедулеров ожидать окончания.
     
  14. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    обычно такое дело лимитят минутой и чаще чем раз в минуту заходить не дают.
     
  15. AtomicInteger

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

    Баллы:
    76
    Не стоит городить костыли, что бы перекрыть костыли.
     
  16. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    Это не костыль а базовая настройка, дабы с одного айпи ни флудили джойнами. Если её нету это хуже чем костыль.
     
  17. alexandrage

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

    Баллы:
    173
    Такого даже в аутчме нет.
     
  18. Mabus

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

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    в моём есть.
    он у меня релоадед =)))
     
  19. AtomicInteger

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

    Баллы:
    76
    Костыль всё же.Попросили то уничтожать шедулер, а не сокращать область его действия.Пусть даже он не будет ничего делать, но он будет висеть.Или ты что-то другое имел в виду?
     
  20. alexandrage

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

    Баллы:
    173
    Типичный ньюби он.
     

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