Skip to main content

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:

PieceWhere it's plannedStatus
content/ directory of YAML filesRoadmap task 0.5 ("Content loader")Not started
content library: YAML → Java records, validation, /reloadArchitecture › Rule 2, planned librariesNot started — built in the tier that first needs it (Tier 2, classes and mobs)
First consumers: class definitions, mob definitionsTier 2 modules classes (2.5) and mobs (2.6)Not started
Items, loot tables, NPCs, quests as contentTier 3Not 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 in settings.gradle.kts.
  • Branding assets. The server icon is rendered from the emblem SVG in the mcrpg repo's images/ directory (the canonical copy); see welcome › 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.