Self-hosted, for Paper Minecraft servers

mcservice

A web console and live map for a family Minecraft server.

One place to run the server

mcservice is a small Node.js service that sits in front of a Paper Minecraft server. It talks to the server over RCON and systemd, and to a companion plugin, mcblockreporter, that reports what happens in the world as it happens. The result is a dashboard, a map and an API that work from any browser.

A map that knows where everyone is

The Map page is a pannable, zoomable top-down view of the world, rendered by squaremap and drawn with Leaflet, with every rail network and landmark at its true position and scale.

Rail networks you can drive from a browser

Point the plugin at a piece of track and it follows every connected rail, junction and lever, then reports the network back to be drawn as an interactive map.

Blocks, landmarks and warps

Server control, behind a sign-in

Starting, stopping and restarting the server, backing up and restoring the world, and generating a fresh world (from a seed, or a random one) all run in the background, one at a time, with their progress shown on the dashboard. Generating a new world backs up the old one first. These controls and the raw console need a sign-in, checked against an existing WordPress account by a small companion WordPress plugin, and the session renews itself while the dashboard stays open.

How it’s built

Plain Node.js with no framework, no build step and no database: a hand-written HTTP router, flat JSON files written atomically, and self-contained HTML pages. Its one dependency is ws for the WebSocket channels. The companion plugin is Java, built with Gradle for Paper.

See mcblockreporter on GitHub