This developer kit allows you to quickly and easily start modding the Bedrock Dedicated Server.
It's used for dumping information for protocol updates for PocketMine-MP, but the tools provided here can be used for much more than that.
The following mods are included as git submodules:
- A Linux environment with a 5.4 kernel or newer (WSL2 is fine)
python3
pip
clang
libc++-dev
libc++abi-dev
binutils
(forprotocol_info_dumper.py
)- LIEF:
python3 -m pip install lief~=0.14.0
(note: lief >=0.15.0 is currently NOT supported) - Frida:
python3 -m pip install frida frida-tools
(fortracer.py
) - A folder or zip of Bedrock Dedicated Server
- Clone the repo
git submodule update --init
./scripts/setup path/to/bds/server/files
or./scripts/setup path/to/bds.zip
./start.sh
to run the server with mods loaded
Run ./helper.sh help
to get more usage info.
File name | Description |
---|---|
export-symbols.py |
Uses LIEF to patch BDS and make the symbols linkable |
helper.sh |
Helper script based on modloader-helper |
protocol_info_dumper.py |
Uses objdump to dump basic version info and packet ID lists from BDS for data generation |
start.sh |
Runs the server with mods loaded. From modloader-helper |
tracer.py |
Uses Frida to hook packet functions in BDS and create packet traces. Run this while you have a BDS instance already running. Requires sudo . |
Mod code is placed in the code
directory. Build them by invoking ./scripts/build all
.
To generate skeleton files for a new mod, use the tool ./scripts/gen
.
- @Frago9876543210
- Writing modloader-helper
- Writing the original version of mapping
- Revamping
tracer.py
(gist)
- @MCMrARM
- Creating server-modloader, without which this endeavour would simply not be possible.
- Writing
export-symbols.py
- @Intyre
- Helping me to write the initial versions of
tracer.py
which are still used today
- Helping me to write the initial versions of