// the find
barneygale/quarry
Python library that implements the Minecraft network protocol and data types
Quarry is a Python library for implementing Minecraft clients, servers, and proxies by handling the network protocol, authentication, encryption, and common data types like NBT and Anvil. It targets developers who need to write tooling around Minecraft — think bots, protocol analyzers, or custom proxy layers — without building the wire protocol from scratch. It intentionally stops at the 'play' mode packet boundary, leaving game logic to you.
- Honest scope: explicitly documents that play-mode packets are NOT implemented, so you know exactly what you're getting and won't be surprised mid-project.
- Wide version coverage with packet definitions stored as plain CSV files per protocol version — easy to diff, inspect, and extend for new versions yourself.
- Built on Twisted, which means async I/O is handled properly rather than bolted on, and the client/server/proxy base classes follow a clean factory+protocol pattern.
- Good selection of working examples covering ping clients, chat proxies, and auth servers — actually runnable reference code rather than pseudocode snippets.
- Stops at 1.19.2 with no signs of updates for 1.20+, and Minecraft's protocol changes enough between major versions that this is a real gap for anyone targeting current servers.
- Twisted is a heavy, unusual dependency with its own event loop and programming model — if your project doesn't already use Twisted, integrating quarry with asyncio-based code is friction you'll have to solve yourself.
- No play-mode packet definitions means you're parsing raw bytes manually for anything beyond login, which is most of what people actually want to do with a Minecraft protocol library.
- 551 stars with last meaningful protocol update being years ago suggests the project is effectively in maintenance-only mode; there's no clear path for community contributions to keep up with Mojang's release cadence.