Gameplay API v0.2
Предпочтительный входной уровень для новой gameplay-разработки и ссылок v0.2.
В этом разделе
Другие страницы раздела:
Обзор
Для нового кода используйте handle-first подход: ctx.Gameplay().Players(), Worlds(), Entities(), Sessions(), PlayerData(), WorldTemplates().
- Мутации идут через gameplay-сервисы и сервисные handles.
- Request-style методы (
SetSlot,SetBlockAt,Teleportи др.) оставлены для совместимости. - Ниже линк на события, контракты контента, контейнеры, сущности и шаблоны миров.
gameplay-v0.2.go
gameplay := ctx.Gameplay()worldHandle, ok := gameplay.Worlds().ByName("Hub")if !ok { return fmt.Errorf("world not found")}playerHandle, ok := gameplay.Players().ByName("Steve")if !ok { return fmt.Errorf("player not found")}inv := playerHandle.Inventory()if _, err := inv.Give(item.New("pulse:ruby").Count(4).Stack()); err != nil { return err}if err := worldHandle.SetBlock(world.Pos{X: 10, Y: 64, Z: 10}, block.New("minecraft:stone").Block()); err != nil { return err}if _, err := gameplay.RegisterBlock(content.DefineBlock("pulse:glow_cube"). Protocol(748, content.ProtocolOverride{Components: map[string]any{"minecraft:custom_components": "pulse:glow_cube"}}). Spec()); err != nil { return err}