CaYaDev Server Manager v0.2.0 — four surfaces, one map
The whole of MSMS runs now. v0.1.0 was a desktop manager with a web panel marked beta; v0.2.0 is four surfaces — the desktop app, an admin web panel, a public website with a store, and a page that is nothing but a fullscreen live map — that all draw the same world and share the same rules.
101 commits since v0.1.0.
🗺️ The map became a map
v0.1.0 drew dots on a grid. This release renders the server's own region files.
- Real terrain, read from the
.mcafiles the server already writes. MSMS never generates world — a map that could grow a world by being panned would be a map that can fill a disk. - Drag to pan, wheel to zoom, anchored on the cursor, on every surface.
- Nether and End, which needed a different technique: the nether has a bedrock roof, so the scan works down from under it.
- Structures — villages, dungeons, temples, fortresses, mineshafts — with SVG glyphs and a per-kind filter, off by default because where the loot is turns a public map into a treasure map.
- Tiles cached on disk, re-parsed only when the server rewrites a region. Measured: ~180 ms to parse a region, ~1 ms to read one back.
- Performance is an operator setting — cache, regions in memory, delay between parses, cache ceiling, and whether panning keeps loading.
- One map engine in all four places. Three had drifted apart; they were unified and are now held together by a cross-check that fails if they ever disagree.
🎨 Named chunk areas
Mark a region by chunk, give it a colour, a name and a note — bu alan sahibi: CaYatur. Hovering or clicking shows them, on every surface.
Created by selecting chunks on the map, by typing coordinates (10,20 or 30,40 - 32,42), or over the API. Where two areas overlap the smallest wins, so a plot inside a town reads as the plot.
🖥️ A third page: the fullscreen map
Its own listener and port — which is the point: you can hand the map to people who must not reach the shop or the panel, with a firewall rule rather than with trust.
Access is open, a shared passphrase, or signed-in players only, and the gate refuses the data rather than just the page. Eleven settings control what it may show, every one enforced server-side.
🌍 Public website, store and economy — out of beta
- Player accounts verified in game, so it works on an offline-mode server too.
- Profiles with per-field publishing controls.
- A server currency, balances and a full ledger.
- Products, crates with published odds, stock and per-player limits enforced atomically.
- In-game delivery that queues while a player is offline.
- Password reset, and the cracked-server problem it exposes, handled deliberately.
- Mobile-friendly.
🔌 REST API at /api/v1
Versioned routes, an OpenAPI document, a human-readable reference the app serves itself, and live WebSocket streams.
API keys are scoped per server, shown once, and now come with ready-to-paste curl, JavaScript and Python samples built against your own install's address. A key can be disabled — reversibly, unlike revoking — from the list.
The reference documented the body field for revoke, disable and delete as
id. The server has always readkeyId. Anyone following it exactly got a 404 from revoke and a 200 from a delete that deleted nothing. Fixed, and the test now takes the field name from the route table so a lying document cannot sit beside a passing test.
🧱 Item icons and block colours from Mojang's own client jar
No more third-party CDN in the middle of a private server's inventory, and it works with no internet at all.
Measured on 1.21.4: a 27 MB download, sha1 verified, of which 644 item and 1039 block textures are kept — 0.4 MB on disk. One download per Minecraft version, behind a button.
🌉 MSMS Bridge
The plugin exists, installs itself from GitHub Releases on your approval, and reports through the plugin logger rather than System.out — so Paper stops nagging about it.
📸 Screenshots
The README now has them, and they are taken by the app of itself against throwaway demo servers, so they can be retaken after a redesign instead of quietly going stale.
⚠️ Notes
- The web panel does not provide HTTPS by itself. Do not expose it directly to the Internet — put it behind a reverse proxy that terminates TLS, or reach it over a VPN.
- The Bridge plugin is the youngest part of MSMS. It has had far less time in live servers than the desktop core.
- The portable
.exeis unsigned; Windows SmartScreen will warn on first run.
📦 Download
CaYaDev Server Manager-0.2.0-portable.exe — put it in the folder you want as your MSMS root. Everything it keeps lives in msms-data/ beside it.