Skip to content

События ​

Мод реагирует на игру, подписываясь на события:

lua
bh.events.on("chat", function(ev)
	if string.find(ev.text, "badword") then
		ev.cancelled = true            -- сообщение никто не увидит
	end
end, { priority = "lowest" })

bh.events.on возвращает id; bh.events.off(id) удаляет обработчик.

Виды событий ​

ВидКогдаЧто можно изменить
player-join, player-quitигрок зашёл / вышел–
chatсообщение в чате, до показаотменить, ev.text
commandстрока /команды, до любых обработчиковотменить (поглотить)
tickкаждый шаг мира (0,2 с)–
world-loaded, world-saveмир загружен / сохраняется (pre, post)–
player-pre-loginигрок прошёл проверки входаотменить (отклонить), ev.reason
block-place, block-breakигрок ставит / убирает блокотменить
object-placeигрок ставит верстак, сундук, дверь, …отменить
block-changedизменилась любая клетка, в том числе от роста или физики– (только наблюдение)
damageблокхеду вот-вот нанесут уронотменить, ev.amount
deathблокхед погиб–
player-moveблокхед перешёл на другую клетку–

Виды начиная с player-pre-login требуют API 0.2 (версии API). Все поля описаны в справочнике events.

Отменённое изменение блока откатывается на экране игрока так же, как на защищённой клетке.

Приоритет ​

Обработчики запускаются от lowest до highest, затем monitor:

lowest → low → normal (по умолчанию) → high → highest → monitor

  • Запускайтесь раньше (lowest, low), если следующие обработчики могут вас переопределить, например для мягкого фильтра.
  • Запускайтесь позже (high, highest), чтобы оставить за собой последнее слово, например в моде защиты.
  • monitor видит окончательный результат и не может его менять. Используйте его для логов и статистики.

Внутри одного приоритета моды запускаются в порядке загрузки (сначала зависимости).

Отмена ​

  • Установите ev.cancelled = true, чтобы отменить. Следующий обработчик может вернуть false.
  • { ignore_cancelled = true } пропускает ваш обработчик, пока событие отменено.
  • Изменения в событиях, которые нельзя отменить, игнорируются с предупреждением в логе.

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

Неофициальный проект сообщества. Не связан с Majic Jungle Software или Noodlecake. Файлы игры не включены.