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

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

Discussion in 'Разработка плагинов для новичков' started by php5master, Jan 30, 2017.

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

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

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

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

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

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

    Trophy Points:
    61
    А если игрок зайдёт и будет спать
     
  5. Mabus

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

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

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

    Trophy Points:
    61
    Киком через 60 сек и хочу разбудить )
     
  7. xDark

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

    Trophy Points:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    this.cancel();[DOUBLEPOST=1485795843,1485795808][/DOUBLEPOST]или BukkitTask task = new BukkitTask() {...};
     
  8. alexandrage

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

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

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Проще получить айдишник кодом повыше.
     
  11. CoolBoy

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

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Может, не стану спорить. Судя по стилю его плагина, в его случае лучше плеер враппер написать. И всё реализовать там.
     
  12. alexandrage

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Ну да, давай навешаем десяток шедулеров, так интереснее. Когда можно получить номер шедулера и передать его в свой метод.
     
  13. Mabus

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

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

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

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

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

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

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

    Trophy Points:
    46
    Не стоит городить костыли, что бы перекрыть костыли.
     
  17. Mabus

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Такого даже в аутчме нет.
     
  19. Mabus

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

    Trophy Points:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    в моём есть.[DOUBLEPOST=1485800463,1485800433][/DOUBLEPOST]он у меня релоадед =)))
     
  20. AtomicInteger

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Типичный ньюби он.
     

Share This Page