Examples
Small working snippets for gameplay and content tasks.
Give Item And Fill Container
This example resolves a player, gives a named enchanted sword, then resolves a world container and inserts diamonds.
example.go
playerHandle, ok := ctx.Gameplay().Players().ByName("Steve")if !ok { return fmt.Errorf("player not found")}target, ok := ctx.Gameplay().Players().Resolve("Steve") // ID, name, XUID, or UUID_ = target_ = ok_, err := playerHandle.Inventory().Give(item.New("diamond_sword"). Enchant(item.Sharpness(5)). NameTag("Arena Blade"). Stack())worldHandle, ok := ctx.Gameplay().Worlds().ByName("Hub")if !ok { return fmt.Errorf("world not found")}container := worldHandle.ContainerAt(world.Pos{X: 10, Y: 64, Z: 10}, 27)_, err = container.Give(item.New("diamond").Count(8).Stack())Command With Typed Argument
Commands can parse typed arguments and return a structured command.Result for delivery.
givegem.go
func NewGiveGemCommand(ctx plugin.Context) command.Command { return command.New("givegem"). Permission("example.ruby"). Argument("count", command.TypeInt, command.Default(1), command.Min(1), command.Max(64)). Executor(func(_ context.Context, cmd command.Context) (command.Result, error) { if cmd.Source.PlayerID == "" { return command.Result{Messages: []string{"only players can use this command"}}, nil } count := cmd.Int("count") playerHandle, ok := ctx.Gameplay().Players().Get(cmd.Source.PlayerID) if !ok { return command.Result{Messages: []string{"player not found"}}, nil } _, err := playerHandle.Inventory().Give(item.New("example:ruby").Count(count).Stack()) return command.Result{Messages: []string{"ruby added"}}, err })}Form Callback
Forms keep callbacks in core state and can use gameplay handles in response handlers.
forms.go
_, err := playerHandle.SendForm( form.Simple("Kit selector"). Content("Choose a starter kit"). Button("Miner", func(fc form.Context, response form.SimpleResponse) error { playerHandle, ok := ctx.Gameplay().Players().Get(fc.PlayerID) if !ok { return nil } _, err := playerHandle.Inventory().Give(item.New("iron_pickaxe").Stack()) return err }). OnClose(func(fc form.Context, reason form.CloseReason) error { return ctx.Gameplay().SendMessage(gameplay.PlayerMessageRequest{ PlayerID: fc.PlayerID, Text: "No kit selected", }) }))