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


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

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

СommandExpectation v0.2.0
http://dev.bukkit.org/media/files/835/942/CommandExpectation.jar

Изменен формат конфига:

Код:
warning-message:
  command-delayed: '&6Your command will be executed after &e%time%' # Cообщение о том что команда будет выполнена с задержкой
  command-canceled: '&cYou moved! Command executiong canceled!' # Сообщение о том, что команда всё же не будет выполнена
commands:
  help:
    time: 12s # Время задержки
    hold-position: true # true - нужно ждать до выполнения команды (ходить нельзя, мышкой вертеть можно)
А можешь ли ты этот плагин написать для 1.5.2 версии?Если да,пожалуйста сделай.Буду очень благодарен.
 
Я не ставил,он же для 1.6.4.Или для 1.5 тоже пойдёт?

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

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

Версия указанная автором, как правило означает, что именно под этими версиями плагин компилировался или тестировался. Но если у Вас другая версия - то никогда не помешает сначала проверить. Сэкономите кучу времени, в первую очередь - своего времени 😉
Благодарю за ответ.Теперь я уверен что всё будет работать нормально,сегодня буду тестировать!Еще раз спасибо.
 
Вот после этого сразу перехотелось что-либо делать 😉
В любом случае.

СommandExpectation v0.2.0
http://dev.bukkit.org/media/files/835/942/CommandExpectation.jar

Изменен формат конфига:

Код:
warning-message:
  command-delayed: '&6Your command will be executed after &e%time%' # Cообщение о том что команда будет выполнена с задержкой
  command-canceled: '&cYou moved! Command executiong canceled!' # Сообщение о том, что команда всё же не будет выполнена
commands:
  help:
    time: 12s # Время задержки
    hold-position: true # true - нужно ждать до выполнения команды (ходить нельзя, мышкой вертеть можно)
Как обычно вы fromgate, в своём репертуаре всё вовремя и надёжно🙂 спасибо большое давно искал такое😉
 
Я вот посмотрел листинг этого плагина - меня интересовала реализация прослушивания PlayerMoveEvent. Как я понял, плагин слушает его постоянно, независимо от того, нужно ему это в данный момент или нет.

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

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

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

CommandExpectation v0.3.1
  • Теперь при повторном запуске команды будет получено сообщение о том, что команда уже выполняется. Второго запуска команды не произойдёт.
  • Ну и проверена работа с craftbukkit/spigot 1.8.3
http://www.spigotmc.org/resources/commandexpectation.5682/
 
Последнее редактирование:
И как будет выглядеть строка, отключающая обработчик в плагине?
Ну если ты там будешь while true выполнять то само собой сервер залагакт.
А вообще если сомниваешься /timings on /timings paste. Дальше смотри временные затраты плагинов и их ивентов.
 
И как будет выглядеть строка, отключающая обработчик в плагине?

В этой части, я всё же не прав -- почему-то думал, что есть что-то вроде "unregisterEvent". Оказывается нет. Хотя не исключено, что до 1.1-R5 это ещё было - тогда работа с событиями осуществлялась несколько иначе.
 
Можно отключать (unregister) конкретные листенеры, вроде как 🙂 Если нет - сделать большой unregister(plugin) и перерегистрировать только все нужные.
По поводу отлова PlayerMoveEvent, у меня такой костыль + читает его раз в секунду параллельный поток и уже он мутит всякие тёмные дела.
 
Назад
Верх