Full Python bridge for Minecraft Bedrock Dedicated Server automation
Project description
PyBDS
Python API for automating Minecraft Bedrock Dedicated Server (BDS)
PyBDS is a Python library that allows you to interact with Minecraft Bedrock Dedicated Servers using a modern async API. It integrates with a small JavaScript behavior pack that emits game events directly to Python, so you can programmatically react to in-game events, run commands, and manage multiple servers — all from Python.
Features
- Automatically downloads and installs the latest BDS for Windows or Linux.
- Installs a behavior pack that forwards events to Python.
- Supports multiple independent servers per project.
- Fully async event hooks for Python scripts.
- Send Minecraft commands directly from Python.
- Automatically handles BDS logging and parsing.
- Cross-platform (Windows and Linux supported).
Installation
pip install PyBDS
Note: PyBDS will attempt to download and install BDS automatically. If network restrictions prevent this, you can manually download BDS and extract it to
./server/in your project directory.
Quick Start Example
import asyncio
from minecraft_bds import BDS
# Event handler example
@BDS.event
async def World_Loaded(data):
# Called when the Minecraft world is loaded
await BDS.RunCommand('say Server loaded world!')
@BDS.event
async def Entity_Killed(data):
entity, killer = data.get('entity'), data.get('killer')
print(f"{entity} was killed by {killer}")
# Start the server and event loop
asyncio.run(BDS.start())
API Reference
BDS.event
A decorator to subscribe to Minecraft events emitted by the behavior pack.
@BDS.event
async def EventName(data):
...
Parameters:
-
data— a dictionary containing event-specific information:World_Loaded→ empty dictEntity_Killed→{ "entity": <entity_type>, "killer": <player_or_entity> }Block_Break→{ "player": <player_name>, "block": <block_type> }- Additional events can be emitted via the behavior pack.
await BDS.RunCommand(command: str)
Send a Minecraft command to the BDS server.
Example:
await BDS.RunCommand('give @p minecraft:diamond 5')
BDS.start(base_path: str | Path = None)
Start the BDS server and begin listening for events.
base_path(optional) — path where the server should be installed. Defaults to./server/relative to your script.
This method is async and must be run inside an asyncio loop.
Example:
import asyncio
from minecraft_bds import BDS
asyncio.run(BDS.start())
BDS.stop()
Stops the server gracefully and closes the event loop.
Event System Notes
- Events are emitted in real-time from the server’s behavior pack.
- All handlers are async functions and can run commands or perform I/O.
- Multiple handlers can be registered for the same event.
Multi-Server Support
By default, PyBDS installs the server in ./server/ relative to your script.
You can create multiple independent servers by specifying different base_path values when initializing the MinecraftBDS instance:
from minecraft_bds.core import MinecraftBDS
server1 = MinecraftBDS(base_path="./server1")
server2 = MinecraftBDS(base_path="./server2")
Each server will have its own world, behavior pack, and logs.
Logging
All BDS console output is forwarded to Python’s asyncio logger.
You can also hook into specific events to capture structured data programmatically.
Supported Platforms
- Windows 10 / 11
- Linux x86_64 (macOS is not officially supported)
License
MIT License — free for personal or commercial use.
This README gives:
- Clear purpose
- Installation instructions
- Full async event API
- Multi-server usage
- Logging and platform notes
This project was generated with ChatGPT from code and all!!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file minecraft_bds-1.4.8.tar.gz.
File metadata
- Download URL: minecraft_bds-1.4.8.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c4f632d4756042ce3c178a7a4b1d8edddfe024cca0838756851df3a8cd3a2f9
|
|
| MD5 |
1ae812efa40b562a8812764867c69ea1
|
|
| BLAKE2b-256 |
abf06c29df67ed9eed95d512e5be5ab53b9f638aa6295933d9bf287cdd3c22f9
|
File details
Details for the file minecraft_bds-1.4.8-py3-none-any.whl.
File metadata
- Download URL: minecraft_bds-1.4.8-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9651fa8c4d50664f0d8bf9ef9e52f56b4698eb4daa702af1d5fd77486c8c95e7
|
|
| MD5 |
92a595c5aeb6fc5f84e2eb9e472f52a7
|
|
| BLAKE2b-256 |
0f4676270ce10752a32a98353bae180fde76a2bad896397c2d8f151b5742eace
|