Skip to content

Latest commit

Β 

History

120 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧩 LittleBrother

Bedrock Multi-Version Compatibility Layer for PocketMine-MP

A PocketMine-MP plugin that provides a packet translation layer allowing players using older Minecraft Bedrock client versions to connect to servers running newer protocol versions β€” without forcing anyone to update.

License PocketMine API GitHub Release GitHub Downloads

Poggit Poggit API Poggit Downloads

Discord GitHub Stars


⚠️ Project Status

🚧 Active Alpha Development

LittleBrother is currently in active development and the core translation system is evolving rapidly.

While many packet translators and runtime mappings are already implemented and functioning correctly, protocol translation support is still considered experimental and may vary depending on the protocol version, gameplay feature, or packet type.

Stability and compatibility continue to improve between releases, but issues such as desync, incomplete packet handling, or runtime mapping inconsistencies may still occur.


🎯 Why LittleBrother?

One of the most frustrating problems in Minecraft Bedrock server hosting:

Players using older clients can't join servers running newer protocol versions.

Instead of forcing players to update β€” or downgrading your server β€” LittleBrother introduces a seamless translation layer that bridges the gap between protocol versions automatically.

βœ… No forced client updates
βœ… No server downgrades
βœ… Transparent to players
βœ… Clean, modular architecture


🧠 How It Works

LittleBrother sits silently between the client and the server, translating packets in both directions in real time using the new Axiom runtime translation architecture.

Client (Old Protocol)
        β”‚
        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Runtime Inbound  β”‚  ← Translates old β†’ new
β”‚    Translator     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚
        β–Ό
PocketMine Server (Latest Protocol)
        β”‚
        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Runtime Outbound  β”‚  ← Translates new β†’ old
β”‚    Translator     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚
        β–Ό
Client (Old Protocol)

Old clients send packets β†’ LittleBrother translates them at runtime β†’ Server processes normally β†’ Responses are translated back into compatible packets. ✨


πŸ—οΈ Architecture Overview

LittleBrother is built around a modular runtime translation architecture designed to scale across multiple Bedrock protocol versions.

Component Description
πŸ”„ Runtime Translator Core runtime engine handling packet translation between protocol versions
⚑ Axiom Runtime Codecs Dynamic protocol-aware serialization and deserialization system
πŸ› οΈ Manual Packet Handlers Handles complex packets where automatic runtime translation is insufficient
πŸ—ΊοΈ Runtime Mapping System Handles block, item, and runtime ID remapping across versions

πŸ› οΈ Development Tools

LittleBrother ships with internal tools that assist protocol research, runtime mapping, and development workflows.


πŸ“₯ generate-protocol-data.php

Downloads the required Bedrock protocol data from pmmp/BedrockData.

Fetched data includes:

  • canonical_block_states.nbt
  • block_state_meta_map.json
  • required_item_list.json

Stored per protocol version inside:

resources/data/bedrock/<protocol>/

Usage:

php tools/generate-protocol-data.php --config=schema-config.json

The script automatically fetches data from GitHub, caches results locally, and skips already-downloaded versions. ⚑


πŸ“¦ Planned Features

  • 🌐 Multi-version Bedrock client compatibility
  • ⚑ Runtime-based packet translation
  • πŸ› οΈ Manual packet handlers for complex packets
  • πŸ—ΊοΈ Runtime ID remapping system
  • πŸ”„ Bidirectional protocol translation
  • 🌍 Broader legacy protocol support
  • βš™οΈ Improved gameplay synchronization across versions

πŸ“Œ Important Notes

LittleBrother is a full runtime packet translation system, not just a handshake modifier.

The plugin handles:

  • Packet structure differences across versions
  • Runtime ID remapping
  • Protocol-level serialization changes
  • Dynamic packet translation between supported protocols

⚠️ Very large version gaps may still require additional manual handling and runtime adjustments.


πŸ’– Support Development

If you find LittleBrother or my other PocketMine-MP plugins useful, your support means a lot! It helps me dedicate more time and resources to improving and expanding these tools for the community. πŸ’™

πŸ’° Financial Support

Donations are welcome via PayPal. Your generosity helps cover hosting, development tools, and everything that keeps this project alive.

πŸ’» Code Contributions

Pull requests are always welcome! If you're a developer who wants to help build the future of multi-version Bedrock compatibility, jump in.

πŸ“ Feedback & Bug Reports

Your feedback shapes the direction of this project. Found a bug? Have a feature idea? Open an issue β€” every bit of feedback helps.


πŸ™ Acknowledgements

A heartfelt thank you to everyone who has supported this project β€” through code contributions, donations, or valuable feedback. You keep this project alive and thriving. πŸš€


πŸ‘€ Author


Made with ❀️ for the PocketMine-MP community

About

🧩 Multi-version Bedrock protocol compatibility layer for PocketMine-MP, powered by the Axiom runtime translation system.

Resources

Stars

24 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages