Server development
Shatterveil runs on a custom Minestom server written in
Java. The code lives in the Preckster/mcrpg
repository; this section documents how that server is built, how it is put
together, and how to add to it.
The server is not a Bukkit/Spigot/Paper plugin. Minestom is a from-scratch server implementation with no vanilla gameplay in it, which is exactly why it fits an RPG: every mechanic Shatterveil has is one the project wrote, as a module that can be switched on and off while the server runs.
Where things stand
The server is in Phase 0 (Foundations) of the roadmap. Nothing game-related exists yet — no combat, classes, items or quests. What exists is the foundation every later system will be built on:
- a multi-project Gradle build with rules enforced at build time,
- the module system (
ShatterveilModule,ModuleContext,/module), - nine shared libraries,
- the four kernel modules (permissions, logging, player data, admin API) and
one reference module (
welcome), - a local ClickHouse database.
See Modules & libraries for the full inventory.
Pages in this section
| Page | What it covers |
|---|---|
| Getting started | Toolchain, clone, build, run, branch workflow, local ClickHouse |
| Architecture | The seven ground rules every piece of server code follows |
| Modules & libraries | Reference pages for every module and library |
| Commands | The in-game command reference, generated from the server |
| Adding content | The (not yet built) content pipeline and what to do meanwhile |
| Versioning & releases | Version numbers, changelogs and releases |
Related repositories
| Repository | Role |
|---|---|
| Preckster/mcrpg | The game server. Source of truth for design documents, branding and the architecture rules. |
| Preckster/mcrpg-docs | This site. |
| Preckster/mcrpg-discord | The Discord bot: a client of the server's admin API. |
:::note Keeping this section current
These pages are written by hand from the server repository's README.md files,
design/ documents and generated docs/commands.md. There is no automated
pipeline yet; when a module or library changes in mcrpg, the matching page
here has to be updated in the same change.
:::