~/projects/pipixel

GAMES2026

PiPixel

A Minecraft server network with a Velocity proxy, an always-on lobby, and on-demand Paper game servers orchestrated by a custom controller.

TIMELINE
Apr 2026
TEAM
Solo
CONTEXT
Personal project
Architecture diagram: Velocity proxy, lobby and game servers all connected to a Redis bus, with a controller managing server lifecycle.

Overview

PiPixel is a Minecraft server network consisting of a Velocity proxy, an always-on lobby server, and a set of Paper game servers started and stopped on demand. A standalone Java controller process manages server lifecycle (starting, stopping, pausing, resuming) and coordinates with the proxy and plugins entirely through Redis.

Features

  • Velocity proxy plugin that dynamically registers and deregisters backend servers and blocks routing to servers that aren’t ready
  • Standalone controller process that launches Paper server instances from templates, allocates ports from a pool, and monitors heartbeats to detect crashes
  • Lobby plugin with a GUI for selecting gamemodes, a join queue, and live server-status display backed by Redis
  • Support for ephemeral servers (spun up per match, torn down when idle) and persistent servers (always-on or started on demand)
  • Pause/resume sequence for on-demand persistent servers: game state is serialized to Redis and the world is archived to disk, then both are restored on resume
  • Dockerized Redis, controller, and Velocity services via docker-compose.yml

How it works

The common module defines shared Redis key constants, pub/sub channel names, and server status/state models used by every other module. The controller module is a standalone JVM application (not a plugin) that launches Paper processes with ProcessBuilder, tracks their status in Redis, and runs a queue processor and heartbeat monitor on scheduled executors. The velocity-plugin and lobby-plugin modules subscribe to Redis pub/sub channels to register servers with Velocity and route players, so no component holds a direct network connection to another — all coordination goes through Redis.