Жизненный цикл
Инициализация, запуск, остановка и очистка ресурсов плагина.
В этом разделе
Другие страницы раздела:
Порядок вызовов
Публичный жизненный цикл плагина: Init -> Start -> Stop. Сначала сервер собирает регистрации, затем запускает плагины после подготовки зависимостей, а останавливает их в обратном порядке.
Init -> Start -> StopРегистрация
Init(ctx plugin.Context) подходит для регистрации команд, событий, блоков, предметов, эффектов и типов сущностей. Храните ctx только там, где обработчикам позже нужен доступ к ctx.Gameplay().
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 не оставлял старые обработчики.