Минимальный плагин
Легковесный пример плагина для проверки подключения и регистрации.
В этом разделе
Другие страницы раздела:
Форма плагина
Минимальный плагин регистрирует команду и примерный контент в Init и пригоден для проверки сборки хоста.
minimal-plugin.go
package minimalpluginimport ( "context" "fmt" "github.com/pulse-core/Pulse/core/command" "github.com/pulse-core/Pulse/core/content" "github.com/pulse-core/Pulse/core/gameplay" "github.com/pulse-core/Pulse/core/item" "github.com/pulse-core/Pulse/core/player" "github.com/pulse-core/Pulse/core/plugin")type Plugin struct { ctx plugin.Context unregister func()}func New() plugin.Plugin { return &Plugin{} }func init() { plugin.MustRegisterFactory("minimalplugin", New)}func (p *Plugin) Name() string { return "minimalplugin" }func (p *Plugin) Init(ctx plugin.Context) error { p.ctx = ctx if _, err := ctx.RegisterBlock(content.BlockSpec{Name: "minimalplugin:ruby_block"}); err != nil { return err } if _, err := ctx.RegisterItem(content.ItemSpec{Name: "minimalplugin:ruby", MaxCount: 64}); err != nil { return err } unregister, err := ctx.Commands().Register(command.Definition{ Name: "ruby", Handler: p.giveRuby, }) if err != nil { return err } p.unregister = unregister return nil}func (p *Plugin) Start(context.Context) error { return nil }func (p *Plugin) Stop(context.Context) error { if p.unregister != nil { p.unregister() } return nil}func (p *Plugin) giveRuby(ctx context.Context, exec command.Execution) (command.Result, error) { _, err := p.ctx.Gameplay().GiveItem(gameplay.InventoryGiveRequest{ PlayerID: player.ID(exec.Source.PlayerID), Stack: item.Stack{ Item: item.State{Name: "minimalplugin:ruby"}, Count: 1, }, }) if err != nil { return command.Result{}, err } return command.Result{Messages: []string{fmt.Sprintf("Gave ruby to %s.", exec.Source.Username)}}, nil}