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

Помогите Выход из шедуллера runTaskTimer

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

  1. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Дядь ты вообще не в тему и хрень советуешь
     
  2. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    Не видел кода от тебя, только набор непонятных слов.
     
  3. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Я ему сказал юзать BukkitRunnable, чел ниже пример кинул, ему надо внутри таска отменить таск, твое решение вообще не к месту
     
  4. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    Этот код разве не будет работать как надо:

    Код:
            TaskID_2 = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    k--;
                    // player.playSound(player.getLocation(), Sound.BLOCK_LEVER_CLICK, 1, 1);
                    // player.sendMessage(colorTranslator("&aИгра начнется через " + k + " секунд(а/у)"));
                    if(k <= 1) {
                        Bukkit.getScheduler().cancelTask(TaskID_2);
                    }
                }
            }, 20, 20);
    Почему не уместно? Этот код понятнее для нашего разработчика, так ка он показал подобный пример вначале. Пусть выбирает, какой лучше использовать.
     
  5. Lunyasha

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

    Баллы:
    61
    Skype:
    live:mail_58380
    Имя в Minecraft:
    Night1ngale
    Задай себе вопрос: "Что я буду делать с полученным BukkitTask?"
    Если ответ на него что-то вроде "отменять таск изнутри" - то тебе он не нужен, используй this.cancel() внутри BukkitRunnable. Меньше переменных - меньше шансов накосячить. И код понятнее.

    Код:
    new BukkitRunnable(){
       void run() {
          if (statement) {
             this.cancel();
          }
       }
    }.runTaskTimer(plugin, 20L, 20L);
    И всё. Ещё и на пару нс быстрее, но это не важно.
     
    Последнее редактирование: 7 апр 2018
  6. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ля дядь, ты вообще не понимаешь о чем речь? С чего бы твой код будет работать? Переменная внутри анонимус класса должна быть файнл и так же инициализирована, твой код не будет работать
     
  7. Автор темы
    SpokeKamchatka

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

    Баллы:
    66
    Если вы готовы поболтать на эту тему - я с радостью) Я в шедуликах пока мало что понимаю - вот и делаю, что бог даст...
    Прошу: https://pastebin.com/xreR6bSm
    Строка #124
     
  8. Автор темы
    SpokeKamchatka

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

    Баллы:
    66
    Тиха, уже решили всё, BukkitRunnable закрываю при условии и всё.
     
  9. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    Представь себе, у меня работает. Наверно это чудо.
    [​IMG]
     
  10. Автор темы
    SpokeKamchatka

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

    Баллы:
    66
    Кинь код) Где нужно провести инициализацию, тык еще и финальную...
     
  11. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    https://pastebin.com/Fwg8EJgw
     
  12. Lunyasha

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

    Баллы:
    61
    Skype:
    live:mail_58380
    Имя в Minecraft:
    Night1ngale
    Не нужно учить человека говнокодить. Подумает ещё, что unnecessary fields в классе и создание тасков через Bukkit#getScheduler() - это норма.
     
  13. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ля такого говнокода давно не видел, уходи отсюда
     
  14. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    То есть ты признаешь, что он всё-таки работает?! А обзывать чужой код не следует, я лишь предложил его для разработчика, и ему решать, что с ним делать. И тебе тоже опыт, ведь ты об этом похоже не знал.
     
  15. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    То что ты скинул не как не сходится с тем что ты скинул в первый раз, у тебя в первом примере не было инициализации филда на уровне класса, а только на уровне метода. И с чего бы мне не обзывать твой код? Это парашное не читабельное говно, когда есть нормальная замена ввиде BukkitRunable
     
  16. Lunyasha

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

    Баллы:
    61
    Skype:
    live:mail_58380
    Имя в Minecraft:
    Night1ngale
    Во-первых, твой код из сообщения выше действительно не работал бы, если бы k была локальной переменной. Но ты применил чудеса СмЕкАлОчКи и засунул её в поле класса, что вообще-то неимоверный говнокод. Твой код никто не обзывает - это просто констатация факта.
    Во-вторых: да, ты действительно можешь предлагать что-то, но остальные в полном праве критиковать твоё предложение. В данном случае ты предложил третью ногу (которая к тому же пованивает), поэтому не удивляйся реакции.
     
  17. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    Это только пример, в конечном итоге переменная будет использоваться из какого-нибудь ConfigManage'а и выглядеть примерно так "ConfigManager.getTimer()".
    И самое главное, я этот код использую и у меня он работает. Никаких проблем не наблюдаю. А решать, использовать его или нет, выбирать вам самим.
     
  18. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    Для меня BukkitRunable куда более нечитабельный. Но я не называю это говном.
     
  19. Nikolai_Faint

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

    Баллы:
    96
    Не то чтобы это не читабельно, просто занимает много места. Как по мне более лучше для легких задач юзать Skript. (С дополнениями)
     
  20. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Чувак, все понимают что BukkitRunnable более читабельный, чем твое говно. Даже если смотреть не с точки зрения читабельности, а с точки зрения ООП то твой код так же остается полным говном
     

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