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)
python3pipclanglibc++-devlibc++abi-devbinutils(forprotocol_info_dumper.py)cmake- A folder or zip of Bedrock Dedicated Server
- Clone the repo
git submodule update --initpython3 -m venv ./python-venv(or any path of your choice)source ./python-venv/bin/activatepython3 -m pip install -r python_requirements.txt./scripts/setup path/to/bds/server/filesor./scripts/setup path/to/bds.zip./start.shto run the server with mods loaded
Run ./helper.sh help to get more usage info.
git pullsource ./python-venv/bin/activatepython3 -m pip install -r python_requirements.txt
source ./python-venv/bin/activate./scripts/install-server path/to/bds/server/filesor./scripts/install-server path/to/bds.zip./start.shto run the server with mods loaded
Warning
It's very likely that new versions of BDS will cause mods like mapping to not work anymore.
Updating these is sometimes complex and outside of the scope of this readme. Best to seek
support from the community if you don't know what you're doing.
Caution
You need to make sure your CC and CXX environment vars are set to point to clang and clang++, not gcc or g++.
Example for Ubuntu:
export CXX=/usr/bin/clang++
export CC=/usr/bin/clang
Run ./scripts/build all to build all mods.
| 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.pywhich are still used today
- Helping me to write the initial versions of