Forms
Формы Bedrock с обработчиками ответов на стороне сервера.
В этом разделе
Другие страницы раздела:
Формы как server-owned specs
Forms описывают simple, modal и custom формы Bedrock, а обработчики ответов остаются в состоянии сервера. Плагину не нужно работать с пакетами напрямую.
simple-form.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", }) }))Modal Flow
Modal helpers подходят для подтверждений и коротких выборов. Сервер отвечает за отправку формы, маршрутизацию ответа и отмену.
modal.go
form := forms.Modal(). Title("Arena"). Text("Join the active round?"). Submit("Join"). Cancel("Later"). OnSubmit(func(player plugin.PlayerHandle) error { return arena.Join(player.ID()) })return ctx.Forms().Open(playerHandle.ID(), form)Совместимость
Для старого request-style кода используйте ctx.Gameplay().SendFormTo(playerID, formRef). В новом коде лучше работать через PlayerHandle, если игрок уже найден.