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

Помогите Где лучше хранить таймер?

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Я думал. Что оптимизировать таймер можно так: создать поле: private BukkitRunnable run; а потом: run = new BukkitRunnable() { public void run() { ну дальше т д
     
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Так волнуешься будто плагин over9000 runnable'ов делает. Главное помни: "Преждевременная оптимизация — зло!"

    UPD Твой код там не убивает всё подряд, вместе с животными и игроками?
     
    Последнее редактирование: 29 июл 2017
  3. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
  4. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    как запустить оптимизированный таймер(отдельный поток)
    ?
     
  5. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Проверка на предмет или живое существо (игрок, животное, моб)
     
  6. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Асинхронные runnable не имеют доступа к BukkitAPI. Запускай Bukkit.getScheduler().runTaskTimer().
    А вообще, посмотри примеры, вот антилаг от китайца: https://github.com/1434967947/AntiLag.
     
  7. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    То есть асинхронный таймер и есть оптимизированный(отдельный поток) ?
     
  8. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Мне надо не только для очистки, но и для других плагинах таймер
     
  9. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Вы можете просто ответь, как сделать отдельный поток или оптимизировать таймер, я просто запутался отдельный поток, или общий, короче, какой самый лучший и какой оптимизированный, и код пожалуйста скиньте, я понимаю я наглею, ну и пусть, за то у меня будет знания и код)) Ладно шучу!Можете скинуть код, хнык-хнык, пожалуйста?
     
  10. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Переведи в гугл переводчике https://bukkit.org/threads/sync-and-async-schedule-question.103705/#post-1359124

    Но специально для тебя переведу конец:
     
  11. alexandrage

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

    Баллы:
    173
    [​IMG]
     
  12. alexandrage

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

    Баллы:
    173
    Ну если ты будешь с миром работать, кикать игрока, то не получится из асинс.
     
    Последнее редактирование: 29 июл 2017
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    В документации написали "Asynchronous tasks should never access any API in Bukkit.", хотя есть безопасные для потока методы :/
    Но удалять существ с мира все-таки надо в главном потоке?
     
  14. alexandrage

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

    Баллы:
    173
    Не пробовал, не знаю. То что кикать игрока низя это точно. А так много чего можно с асинса.
     
  15. alexandrage

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

    Баллы:
    173
    Проверил, спокойно удалил мобов.
     
  16. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    А для ввода сообщений тоже лучше использовать Asynchronous?
     
  17. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    im v okno
     
  18. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Я все понял, если у 10 плагинов есть getSchelduler().runTaskTime(ла-ла); то создаются 10 потоков, чтобы это исправить придумать new Core$1(this).runTaskTimerAsynchronously(this, 0, 2400); Он запускает только один поток не смотря, что плагинов 10 с getScheduler(ом)! Это и есть отдельный поток, или оптимизированный?
     
  19. alexandrage

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

    Баллы:
    173
    Все шедулеры без Asynchronously будут тикать в главном потоке сервера. Короче их общее время выполнения в тот же тик скажется на тпс сервкера. Asynchronously же отдельно живет сам по себе. И даже если он несколько минут будет чет делать, сервер не заметит.
     
  20. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Я везде можно использовать Asynchronously в качестве оптимизации?
     

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