2025-12-08 19:21:50 +03:00

7.7 KiB
Raw Blame History

События движка

События блоков

Функции для обработки событий, прописываемые в скрипте блока.

Warning

Mass events such as on_block_tick, on_block_present, and on_block_removed, if used carelessly or excessively, can lead to performance issues.

function on_placed(x, y, z, playerid)

Вызывается после установки блока игроком

function on_broken(x, y, z, playerid)

Вызывается после разрушения блока игроком

function on_replaced(x, y, z, playerid)

Вызывается после замены блока игроком

function on_interact(x, y, z, playerid) -> bool

Вызывается при нажатии на блок ПКМ. Предотвращает установку блоков, если возвращает true

function on_update(x, y, z)

Вызывается при обновлении блока (если изменился соседний блок)

function on_random_update(x, y, z)

Вызывается в случайные моменты времени (рост травы на блоках земли)

function on_blocks_tick(tps: int)

Вызывается tps (20 / tick-interval) раз в секунду. Используйте 1/tps вместо time.delta().

function on_block_tick(x, y, z, tps: number)

Вызывается tps (20 / tick-interval) раз в секунду для конкретного блока. Используйте 1/tps вместо time.delta().

function on_block_present(x, y, z)

Вызывается для конкретного блока при появлении (генерации/загрузке/размещении). Вызов происходит в течение времени, которое может зависеть от нагрузки очереди событий. При малой нагрузке происходит в течение первого такта блока (tick-interval). До вызова события on_block_tick не вызывается.

function on_block_removed(x, y, z)

Вызывается при выгрузке чанка, в котором находится блок.

function on_player_tick(playerid: int, tps: int)

Вызывается tps (20) раз в секунду. Используйте 1/tps вместо time.delta().

События предметов

Функции для обработки событий, прописываемые в скрипте предмета.

function on_use(playerid: int)

Вызывается при нажатии ПКМ не на блок.

function on_use_on_block(x: int, y: int, z: int, playerid: int, normal: vec3)

Вызывается при нажатии ПКМ на блок. Предотвращает установку блока, прописанного в placing-block если возвращает true

function on_block_break_by(x: int, y: int, z: int, playerid: int)

Вызывается при нажатии ЛКМ на блок (в т.ч неразрушимый). Предотвращает разрушение блока, если возвращает true

События мира

События мира для контент-пака прописываются в scripts/world.lua

function on_world_open()

Вызывается при загрузке мира

function on_world_save()

Вызывается перед сохранением мира

function on_world_tick()

Вызывается 20 раз в секунду

function on_world_quit()

Вызывается при выходе из мира (после сохранения)

function on_block_placed(blockid, x, y, z, playerid)

Вызывается после установки блока игроком

function on_block_replaced(blockid, x, y, z, playerid)

Вызывается после замены блока игроком

function on_block_broken(blockid, x, y, z, playerid)

Вызывается после разрушения блока игроком

function on_block_interact(blockid, x, y, z, playerid) -> bool

Вызывается при нажатии на блок ПКМ. Предотвращает установку блоков, если возвращает true

События чанков (world.lua)

function on_chunk_present(x: int, z: int, loaded: bool)

Вызывается после генерации/загрузки чанка. В случае загрузки ранее сохраненного чанка loaded будет истинным.

function on_chunk_remove(x: int, z: int)

Вызывается при выгрузке чанка из мира.

События инвентарей (world.lua)

function on_inventory_open(invid: int, playerid: int)

Вызывается при открытии инвентаря. Если инвентарь был открыт не напрямую игроком, playerid будет равен -1.

function on_inventory_closed(invid: int, playerid: int)

Вызывается при закрытии инвентаря.

События макета

События прописываются в файле layouts/имя_макета.xml.lua.

function on_open(invid: int, x: int, y: int, z: int)

Вызывается при добавлении элемента на экран.

  • При отсутствии привязки к инвентарю invid будет равен 0.
  • При отсутствии привязки к блоку x, y, z так же будут равны 0.
function on_close(invid: int)

Вызывается при удалении элемента с экрана.

События HUD

События связанные с игровым интерфейсом прописываются в файле scripts/hud.lua

function on_hud_open(playerid: int)

Вызывается после входа в мир, когда становится доступна библиотека hud. Здесь на экран добавляются постоянные элементы.

function on_hud_render()

Вызывается каждый кадр. Используется для клиентских задач, таких как анимация, управление камерой.

function on_hud_close(playerid: int)

Вызывается при выходе из мира, перед его сохранением.

Библиотека events

events.on(code: str, handler: function)

Добавляет обработчик события по его коду, не ограничиваясь стандартными.

events.reset(code: str, [опционально] handler: function)

Удаляет событие, добавляя обработчик, если указан.

events.emit(code: str, args...) -> bool

Генерирует событие по коду. Если событие не существует, ничего не произойдет. Существование события определяется наличием обработчиков.

events.remove_by_prefix(packid: str)

Удаляет все события с префиксом packid:. Вы выходе из мира выгружаются события всех паков, включая core:.