Жизненный цикл

Инициализация, запуск, остановка и очистка ресурсов плагина.

В этом разделе

Другие страницы раздела:

Порядок вызовов

Публичный жизненный цикл плагина: Init -> Start -> Stop. Сначала сервер собирает регистрации, затем запускает плагины после подготовки зависимостей, а останавливает их в обратном порядке.

lifecycle.txt
Init -> Start -> Stop

Регистрация

Init(ctx plugin.Context) подходит для регистрации команд, событий, блоков, предметов, эффектов и типов сущностей. Храните ctx только там, где обработчикам позже нужен доступ к ctx.Gameplay().

lifecycle.go
func (p *Plugin) Init(ctx plugin.Context) error {	p.ctx = ctx	return ctx.RegisterCommand(NewGiveCommand(ctx))}func (p *Plugin) Start(ctx context.Context) error {	p.ctx.Logger().Info("plugin started")	return nil}func (p *Plugin) Stop(ctx context.Context) error {	return p.ctx.Gameplay().Flush(ctx)}

Работа после запуска

Start(context.Context) выполняется после инициализации всех зарегистрированных плагинов. Используйте его для фоновых задач, подписок и связей, которым нужны уже запущенные зависимости.

Тестирование

Для проверки в игре запускайте test server из корня модуля и держите регистрацию предсказуемой, чтобы reload не оставлял старые обработчики.