Minecraft Network Protocol Proxy (2011)

Linux/macOS, C, Glib

Modular Minecraft network protocol proxy.

The main purpose of this project is to manipulate and/or analyze Minecraft protocol data in real-time on either server- or client-side being completely transparent to both parties.

A functional proxy consists of two parts: the core (mcproxy binary) and at least one handler library. The core takes care of networking, threading, protocol decoding and encoding, memory management etc. A handler library registers a set of callback functions to the core which get called whenever specific event occurs (for example new client connects or specific type of protocol packet arrives). It is here where required logic has to be implemented. The core publishes its API for use by handler libraries in the form of a static library (libproxyapi) which all handler libraries are required to link to.

Later addition of client and server modes of operation made it possible to implement a full Minecraft client/server using mcproxy as a framework.