How pmgopher/pocketmine-go works
pocketmine-go is an early, incomplete Go port of the PocketMine-MP Minecraft Bedrock server. Its current player workflow is to connect through the Bedrock network stack, enter a session, explore streamed/generated worlds, break blocks, and interact with other players; block placing and several other gameplay actions remain incomplete. The README also documents server administration, world persistence and generation, crafting, events, resource packs, and query support. The supplied excerpts show selected subsystem behavior, not the complete server wiring, so uncertain call paths are omitted.
Main entry points: world_manager.go World manager · network_session_manager.go Session manager · main.go Server entry · entity.go Entities and players
Components 17
Server Runtime
- Server entry
cmd/pocketmine-go/main.go
Networking
- Session manager
pocketmine/network/network_session_manager.go - Inventory sync
pocketmine/network/mcpe/inventory_manager.go - Bedrock protocol
- Query handler
pocketmine/network/query/query_handler.go
World Gameplay
- World manager
pocketmine/world/world_manager.go - Block behavior
pocketmine/block/block.go - Block mappings
pocketmine/data/bedrock/block/convert/block_object_to_state_serializer.go - Entities and players
pocketmine/entity/entity.go - Experience
pocketmine/entity/experience_manager.go - Entity effects
pocketmine/entity/effect/effect_manager.go - Crafting recipes
pocketmine/crafting/crafting_manager.go
Server Services
- Event dispatch
pocketmine/event/manager.go - Commands
pocketmine/command/command_map.go - Resource packs
pocketmine/resourcepacks/resource_pack_manager.go - Permissions
pocketmine/permission/manager.go
Other components
- Bedrock player
Connections 19
- Server entry → Session manager: starts sessions
- Bedrock player → Bedrock protocol: connects via
- Bedrock protocol → Session manager: creates sessions
- Session manager → Bedrock protocol: exchanges packets
- Session manager → Inventory sync: syncs containers
- Session manager → World manager: plays in worlds
- World manager → Block behavior: ticks world
- World manager → Entities and players: hosts entities
- World manager → Event dispatch: dispatches events
- World manager → Server entry: autosaves worlds
- Block behavior → Block mappings: serializes states
- Entities and players → Experience: tracks experience
- Entities and players → Entity effects: manages effects
- Entities and players → Event dispatch: dispatches events
- Crafting recipes → Event dispatch: loads recipes
- Query handler → Bedrock protocol: sends raw replies
- Server entry → Resource packs: configures packs
- Server entry → Commands: registers commands
- Commands → Permissions: checks permissions