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

Идея Плагин чтобы команда выполнялась через несколько секунд и нужно было стоять на месте.

Тема в разделе "Запросы на разработку плагинов", создана пользователем HauserGrim, 16 ноя 2014.

  1. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Я вот посмотрел листинг этого плагина - меня интересовала реализация прослушивания PlayerMoveEvent. Как я понял, плагин слушает его постоянно, независимо от того, нужно ему это в данный момент или нет.

    Так вот, у меня возникли следующие вопросы:
    1. Какова разница в нагрузке на сервер между случаем, когда этот эвент постоянно слушает один плагин и случаем, когда его слушает десять плагинов?
    2. Можно ли сделать так, чтобы прослушивание эвента "включалось" только на время (в случае твоего плагина) "разогрева" команды игрока?
     
  2. Yellow NightMare

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

    Баллы:
    36
    А можешь ли ты этот плагин написать для 1.5.2 версии?Если да,пожалуйста сделай.Буду очень благодарен.
     
  3. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Какую ошибку пишет?
     
  4. Yellow NightMare

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

    Баллы:
    36
    Я не ставил,он же для 1.6.4.Или для 1.5 тоже пойдёт?
     
  5. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    А что мешает проверить прежде?
     
  6. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Большинство плагинов написано с использованием BukkitAPI и не лезут в недокументированный код. Соответственно велика вероятность того, что плагин написанный под 1.7 будет работать под 1.5. У меня есть плагин, который был написан, если не ошибаюсь, под 1.1-R6 и он отлично работает под 1.7.10.

    Версия указанная автором, как правило означает, что именно под этими версиями плагин компилировался или тестировался. Но если у Вас другая версия - то никогда не помешает сначала проверить. Сэкономите кучу времени, в первую очередь - своего времени ;)
     
  7. Yellow NightMare

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

    Баллы:
    36
    Благодарю за ответ.Теперь я уверен что всё будет работать нормально,сегодня буду тестировать!Еще раз спасибо.
     
  8. KiSsAMc

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

    Баллы:
    46
    Имя в Minecraft:
    KiSsAMc
    Как обычно вы fromgate, в своём репертуаре всё вовремя и надёжно:) спасибо большое давно искал такое;)
     
  9. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Что-то я пропустил это вопрос. Но лучше поздно чем никогда.
    1. "Слушатели" событий конечно создают какую-то нагрузку. Тем не менее, если есть сомнения, то не помешает написать простенький профайлер и позамерять сколько съедают эти обработчики. В большинстве случаев окажется, что временные затраты столь мизерные, что заморачиваться по этому поводу не нужно.
    Если же в обработчике PlayerMoveEvent начать производить ресурсоемкие вещи - тогда конечно есть повод для беспокойства. Но простое сравнение строк (даже если их сотни) и нескольких других переменных к этому не относится.
    2. Можно. Самый простой способ - сделать переменную-флаг и проверять её. Можно отключать сам обработчик (я правда так никогда не делал).

    Ну и для заинтересованных в плагине, сообщаю, что сегодня обновил до версии 0.3.0:

    CommandExpectation v0.3.1
    • Теперь при повторном запуске команды будет получено сообщение о том, что команда уже выполняется. Второго запуска команды не произойдёт.
    • Ну и проверена работа с craftbukkit/spigot 1.8.3
    http://www.spigotmc.org/resources/commandexpectation.5682/
     
    Последнее редактирование: 6 апр 2015
  10. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    И как будет выглядеть строка, отключающая обработчик в плагине?
     
  11. alexandrage

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

    Баллы:
    173
    Ну если ты там будешь while true выполнять то само собой сервер залагакт.
    А вообще если сомниваешься /timings on /timings paste. Дальше смотри временные затраты плагинов и их ивентов.
     
  12. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    В этой части, я всё же не прав -- почему-то думал, что есть что-то вроде "unregisterEvent". Оказывается нет. Хотя не исключено, что до 1.1-R5 это ещё было - тогда работа с событиями осуществлялась несколько иначе.
     
  13. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Можно отключать (unregister) конкретные листенеры, вроде как :) Если нет - сделать большой unregister(plugin) и перерегистрировать только все нужные.
    По поводу отлова PlayerMoveEvent, у меня такой костыль + читает его раз в секунду параллельный поток и уже он мутит всякие тёмные дела.
     

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