Перейти к содержанию

Справочник событий

Варианты имён: голое (join), с player (player join), с event (join event, player join event). Регистр не важен.

С игроком и текстом взаимодействия

Имя Класс Игрок события Пример
join PlayerJoinEvent вошедший приветствие, выдача стартового
quit PlayerQuitEvent вышедший прощание, broadcast
chat AsyncPlayerChatEvent автор кулдауны, предупреждения (текст сообщения недоступен)
command PlayerCommandPreprocessEvent автор команды логирование команд
on player join:
    broadcast sender-name() + " joined!"

on quit:
    broadcast sender-name() + " left."

Смерть и возрождение

Имя Класс Игрок события
death PlayerDeathEvent умерший
respawn PlayerRespawnEvent возродившийся
on death:
    $kills = $kills + 1
    broadcast sender-name() + " died. Total: " + $kills + "."

Мир и предметы

Имя Класс Игрок события
interact PlayerInteractEvent взаимодействующий
move PlayerMoveEvent движущийся (очень частое!)
break block BlockBreakEvent ломающий
place block BlockPlaceEvent ставящий
drop item PlayerDropItemEvent выбросивший
damage EntityDamageEvent сущность, если это игрок
on damage where sender-name() contains "Steve":
    message "Careful!"
    cancel-event

Производительность

move срабатывает на каждое движение. Не кладите туда тяжёлое: никаких циклов на тысячи итераций. Проверка if + stop — нормально.

Координаты и содержимое

В DSL v1 недоступны: координаты блоков, текст чата, предмет в руке как объект (есть только item-amount/1 — количество). Событие даёт факт + игрока, остальное — через прямые builtin'ы.

server start

Особое событие без Bukkit-класса и без игрока: выполняется один раз при включении плагина (после загрузки скриптов). Игрокозависимое (message, запись #var) здесь не работает — игрока нет. Перезагрузка /fastscript reload его не повторяет (перекомпиляция — не рестарт сервера):

on server start:
    $server-started = 1
    log "FastScript routines are ready."