Public API

Руководство для внешних модулей, использующих публикуемый поверхностный API.

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

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

Async ownership model

Публичные плагины должны считать core objects server-owned. Работа с world, player, entity, inventory, session, storage или resource-pack state должна идти через ctx.Gameplay(), handles или другой core service.

  • Не запускайте plugin goroutine, которые напрямую меняют runtime internals.
  • Используйте scheduler tasks для tick-timed gameplay callbacks.
  • Для background IO/preparation используйте core async jobs, а результат применяйте через server-owned services.
  • Task lifecycle events используют namespace server.task.*.
  • Host может смотреть async backpressure через plugin.Manager.TaskStats().

Список импортов

Используйте только публичные точки входа плагина при сборке внешнего модуля.

imports.go
import (	"github.com/pulse-core/Pulse/core/plugin"	"github.com/pulse-core/Pulse/core/content"	"github.com/pulse-core/Pulse/core/gameplay"	"github.com/pulse-core/Pulse/core/command"	"github.com/pulse-core/Pulse/core/event")
module.txt
github.com/pulse-core/Pulse

Минимальная интеграция

Реализуйте plugin.Plugin, в Init регистрируйте обработчики и изменяйте состояние только через ctx.Gameplay(), чтобы сохранить валидацию сервера.

  • Создайте отдельный go-модуль с зависимостью github.com/pulse-core/Pulse.
  • Реализуйте plugin.Plugin и регистрируйте команды/события/контент в Init.
  • Для новой логики используйте handle-API ctx.Gameplay().
  • Подключайте compat-only методы только для существующего кода.
  • Регистрация фабрики нужна только если сервер грузит плагины по именам.
  • Для проверки запускайте тестовый сервер из docs/test-server.md.