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}