Files
..

packs/ — content packs

Put a content pack here as its own folder: packs/<id>/pack.json (the manifest) next to the files it names. The server lists every pack it finds at /packs/index.json and picks up a new or changed pack on the next page load — no restart, no build step. node tools/packs.mjs list shows what was found, what was skipped and why.

In this version one type loads: lang, a language for the interface (and, optionally, the game texts):

{
  "id": "ja",
  "type": "lang",
  "lang": "ja",
  "name": "日本語",
  "englishName": "Japanese",
  "version": "1.0.0",
  "app": ">=0.2.0",
  "authors": ["your name"],
  "fallback": ["en"],
  "files": { "ui": "ui.json", "data": "data.json" }
}

A language can also be one file, public/i18n/<code>.json, with the same fields in its _meta block — that is how English ships. Types assets (art, audio, fonts) and data (data patches) are planned; this version lists such a pack as not supported and does not load it.

The format, the rules and how later types plug in: docs/PACKS.md. Translating: docs/I18N.md.