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.