# betteraltaybedrock/betteraltay architecture

> Architecture diagram of the GitHub repository betteraltaybedrock/betteraltay, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/betteraltaybedrock/betteraltay
- Repository: https://github.com/betteraltaybedrock/betteraltay

## Overview

BetterAltay is a PHP server for Minecraft: Bedrock Edition, with community API3 plugin support. Its principal workflow is a Bedrock client connecting to the server, participating as a player in a simulated world, and receiving gameplay updates; server operators and plugins extend that runtime through commands and events. The tree shows distinct world generation, chunk/block, entity, inventory, and resource-pack capabilities. Only a few implementation excerpts were supplied, so the graph uses paths and subsystem boundaries evidenced by the tree and avoids asserting detailed call wiring that those excerpts cannot establish.

Main entry points: [`src/pocketmine/Server.php`](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Server.php) (Server coordinator), [`src/pocketmine/level`](https://github.com/betteraltaybedrock/betteraltay/tree/master/src/pocketmine/level) (World management), [`src/pocketmine/Player.php`](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Player.php) (Player session), [`src/pocketmine/command/CommandMap.php`](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/command/CommandMap.php) (Command dispatch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Server runtime"]
  node_server["Server coordinator<br/>[Server.php]"]
  node_startup["Server entry<br/>[PocketMine.php]"]
  node_player["Player session<br/>[Player.php]"]
  node_query["Query protocol<br/>[QueryHandler.php]"]
end

subgraph group_world["World simulation"]
  node_worlds["World management"]
  node_generation["World generation"]
  node_chunks["Chunk access"]
  node_blocks["Block catalog<br/>[BlockFactory.php]"]
end

subgraph group_gameplay["Gameplay systems"]
  node_entities["Entities and AI<br/>[Entity.php]"]
  node_inventory["Inventory and crafting"]
  node_maps[("Map data<br/>[MapManager.php]")]
end

subgraph group_extension["Extensions and operations"]
  node_commands["Command dispatch<br/>[CommandMap.php]"]
  node_events["Event system<br/>[Event.php]"]
  node_plugins["Plugin lifecycle<br/>[PluginManager.php]"]
  node_permissions["Permissions"]
  node_packs["Resource packs"]
end

node_client(("Bedrock client"))

node_startup -->|"starts"| node_server
node_client -->|"connects as"| node_player
node_server -->|"manages sessions"| node_player
node_server -->|"serves query"| node_query
node_server -->|"manages worlds"| node_worlds
node_worlds -->|"selects generator"| node_generation
node_worlds -->|"accesses chunks"| node_chunks
node_chunks -->|"stores block state"| node_blocks
node_worlds -->|"simulates entities"| node_entities
node_player -->|"uses inventory"| node_inventory
node_server -->|"saves map data"| node_maps
node_player -->|"issues commands"| node_commands
node_commands -->|"dispatches events"| node_events
node_server -->|"manages plugins"| node_plugins
node_plugins -->|"registers handlers"| node_events
node_plugins -->|"registers commands"| node_commands
node_commands -->|"checks access"| node_permissions
node_server -->|"loads packs"| node_packs

click node_server "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Server.php"
click node_startup "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/PocketMine.php"
click node_player "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Player.php"
click node_query "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/network/query/QueryHandler.php"
click node_worlds "https://github.com/betteraltaybedrock/betteraltay/tree/master/src/pocketmine/level"
click node_generation "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/level/generator/GeneratorManager.php"
click node_chunks "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/level/SimpleChunkManager.php"
click node_blocks "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/block/BlockFactory.php"
click node_entities "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/entity/Entity.php"
click node_inventory "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/inventory/CraftingManager.php"
click node_maps "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/maps/MapManager.php"
click node_commands "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/command/CommandMap.php"
click node_events "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/event/Event.php"
click node_plugins "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/plugin/PluginManager.php"
click node_permissions "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/permission/PermissionManager.php"
click node_packs "https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/resourcepacks/ResourcePackManager.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_startup,node_player,node_query,node_client toneBlue
class node_worlds,node_generation,node_chunks,node_blocks toneAmber
class node_entities,node_inventory,node_maps toneMint
class node_commands,node_events,node_plugins,node_permissions,node_packs toneRose
```

## Components

### Server runtime

- [Server coordinator](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Server.php): `src/pocketmine/Server.php`
- [Server entry](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/PocketMine.php): `src/pocketmine/PocketMine.php`
- [Player session](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/Player.php): `src/pocketmine/Player.php`
- [Query protocol](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/network/query/QueryHandler.php): `src/pocketmine/network/query/QueryHandler.php`

### World simulation

- [World management](https://github.com/betteraltaybedrock/betteraltay/tree/master/src/pocketmine/level): `src/pocketmine/level`
- [World generation](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/level/generator/GeneratorManager.php): `src/pocketmine/level/generator/GeneratorManager.php`
- [Chunk access](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/level/SimpleChunkManager.php): `src/pocketmine/level/SimpleChunkManager.php`
- [Block catalog](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/block/BlockFactory.php): `src/pocketmine/block/BlockFactory.php`

### Gameplay systems

- [Entities and AI](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/entity/Entity.php): `src/pocketmine/entity/Entity.php`
- [Inventory and crafting](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/inventory/CraftingManager.php): `src/pocketmine/inventory/CraftingManager.php`
- [Map data](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/maps/MapManager.php): `src/pocketmine/maps/MapManager.php`

### Extensions and operations

- [Command dispatch](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/command/CommandMap.php): `src/pocketmine/command/CommandMap.php`
- [Event system](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/event/Event.php): `src/pocketmine/event/Event.php`
- [Plugin lifecycle](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/plugin/PluginManager.php): `src/pocketmine/plugin/PluginManager.php`
- [Permissions](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/permission/PermissionManager.php): `src/pocketmine/permission/PermissionManager.php`
- [Resource packs](https://github.com/betteraltaybedrock/betteraltay/blob/master/src/pocketmine/resourcepacks/ResourcePackManager.php): `src/pocketmine/resourcepacks/ResourcePackManager.php`

### Other components

- **Bedrock client**

## Connections

- Server entry → Server coordinator: starts
- Bedrock client → Player session: connects as
- Server coordinator → Player session: manages sessions
- Server coordinator → Query protocol: serves query
- Server coordinator → World management: manages worlds
- World management → World generation: selects generator
- World management → Chunk access: accesses chunks
- Chunk access → Block catalog: stores block state
- World management → Entities and AI: simulates entities
- Player session → Inventory and crafting: uses inventory
- Server coordinator → Map data: saves map data
- Player session → Command dispatch: issues commands
- Command dispatch → Event system: dispatches events
- Server coordinator → Plugin lifecycle: manages plugins
- Plugin lifecycle → Event system: registers handlers
- Plugin lifecycle → Command dispatch: registers commands
- Command dispatch → Permissions: checks access
- Server coordinator → Resource packs: loads packs
