Adding content
:::caution Not built yet There is no content system in the server today. Phase 0 is foundations only: the module system, the kernel modules and the database. This page describes what's planned so contributors know where content will go, and what you can actually do right now. Nothing on this page should be read as an existing feature. :::
The plan
The roadmap's first guiding principle is data-driven content from day one:
items, mobs, quests, drops, NPC dialogue and regions live in files under
content/, not in Java code, and can be reloaded without a restart. Wynncraft
runs with a tiny team because its content is authored in tools, not code; that
is the most important architectural choice in the project.
What that will look like, per the design documents:
| Piece | Where it's planned | Status |
|---|---|---|
content/ directory of YAML files | Roadmap task 0.5 ("Content loader") | Not started |
content library: YAML → Java records, validation, /reload | Architecture › Rule 2, planned libraries | Not started — built in the tier that first needs it (Tier 2, classes and mobs) |
| First consumers: class definitions, mob definitions | Tier 2 modules classes (2.5) and mobs (2.6) | Not started |
| Items, loot tables, NPCs, quests as content | Tier 3 | Not started |
The first proof of the pipeline is meant to be one test item definition loaded
end to end, then /reload for staff.
What you can add today
Until the content loader exists, everything is code. The things you can contribute are:
- A module. Follow Getting started › Adding a module
and copy
welcome. Check the module priority list first — modules are built in dependency order, and a module that jumps the queue usually needs a library that doesn't exist yet. - A library. If two modules would need the same code, it belongs in
libs/. Add a subproject, apply the library convention plugin, include it insettings.gradle.kts. - Branding assets. The server icon is rendered from the emblem SVG in the
mcrpgrepo'simages/directory (the canonical copy); seewelcome› Regenerating the icon. - Documentation. This section, or the READMEs and Javadoc it's drawn from.
When this page changes
When roadmap task 0.5 lands, this page should be rewritten to cover: the
content/ layout, the YAML schema for each content type, validation errors and
how they're reported, /reload and its permission, and how a module registers
a content type with the loader.