A tour of the editors
MMS has two editors: the web editor, which needs no install, and the VS Code extension. Both run the same engine as the mms command line, so they report the same problems and build the same pack. This page shows what they can do and where to find it.
Choosing one
- The web editor is the quickest start. Projects are kept in your browser, examples are one click away, and Download pack gives you a zip. Use it to try the language, to share a small pack, or on a computer where you cannot install anything.
- VS Code suits a project you keep: the files are on your disk, so they work with git, with other tools and with
mmsin a terminal. Install Minecraft Metascript from the Extensions view. It also works in Cursor, VSCodium and other editors that use Open VSX.
A project moves between them as a zip: Export project zip and Import zip… in the web editor's project menu.
While you type
These work the same in both editors.
- Errors as you type. Every value is checked against the game's schema and every command against its command tree. Unknown ids, missing fields, wrong types and misspelled commands are underlined with the reason.
- Completion. It offers what fits at the cursor: the fields of an object, the helpers and ids a field takes, the next word of a command, selector options, your own functions and objectives, and the markup inside text.
- Hover. A field shows its documentation, a helper its signature, a name its doc comment, a
constits value, a command the forms it can take, and a piece of text how the game will draw it. - Go to definition, references and rename work across files, on declarations and on ids inside commands. Go to definition on a vanilla id, such as a loot table or a noise, opens the game's own JSON for it. On
CustomItemor another built-in Blueprint it opens the prelude source. - Quick fixes. Ctrl/⌘+. lists the fixes at the cursor, such as adding missing fields, correcting a misspelled name or declaring something that does not exist yet. Fix all applies every safe one.
- Format. One style, nothing to configure. Ctrl/⌘+S formats in the web editor, and VS Code formats on save.
- Inlay hints mark template calls that are written out at compile time (
inlined) and show loop values beside generated names.
Previews
Put the cursor on a declaration and open the Preview tab in the web editor. In VS Code, click the Preview lens above the declaration, and the panel stays on it while you edit.
| Declaration | The preview shows |
|---|---|
Noise, DensityFunction, NoiseSettings, Dimension |
the terrain: density, blocks or 3D. See Shaping terrain |
Dimension |
also a map of its biomes and the climate behind them. See Why a biome doesn't appear |
SurfaceRule |
the blocks it places on the terrain |
a Spline |
its curve, which you can drag. See Splines |
LootTable, Recipe, Biome |
an inspector: a table's pools and entries, a recipe's grid, a biome's settings |
Book, a .mmsbook file |
the open book, page by page. See Previewing a book |
tell, title, actionbar, a Text |
the message in chat, as a title or above the hotbar |
JigsawStructure, TemplatePool |
which pieces join which, and a 3D simulation of one layout. See Simulating a jigsaw structure |
Why a biome doesn't appear
A MultiNoise biome source picks, at each spot, the entry whose parameters are nearest the climate sampled there. The dimension's Biomes map helps when a biome never wins:
- Hover the map to fill the table below it: the six climate values at that spot (at the camera's Y, which is what
depthdepends on), then the nearest entries, best first, with each one's distance and parameter ranges. The ranges the climate is outside of are in red. Click the map to pin a point: the table then stays on it while you move the pointer, until you click Unpin. - Show switches the map to one climate parameter, coloured over its range in view, with the biome outlines kept on top.
- Explain picks a biome to follow. Biomes the source lists that win nowhere in view are marked not in view, and also listed under the legend. If the chosen biome isn't among the nearest entries, its nearest entry is added to the table in amber. Show: Distance to win maps how far that biome is from winning: 0 where it wins, and the darker the closer.
Distances are the game's: the square root of the sum of squares of how far each value is outside its range, with the entry's offset added as one more term.
Previews redraw as you type. The pin button in the web editor keeps the Preview tab on one declaration while you edit another, which is how you watch terrain change while editing the noise behind it.
Seeing the output
- JSON (web) shows the file the declaration at the cursor becomes.
- Expanded (web), and the Expand lens in VS Code, show what a Blueprint instance such as a
CustomItem, or a command template call, writes. - Pack, in the sidebar of both, lists every file of the data pack and the resource pack.
Reading the output is the fastest way to learn what a piece of shorthand means, and to trust it.
Tests
Once a project has a Test, the web editor shows a Tests tab that runs them all after every edit. VS Code lists them in its Testing view. A failing expect is marked at its line.
Working with a world
| Web editor | VS Code | |
|---|---|---|
| Build the pack into a world | World tab (Chrome and Edge) | World view in the MMS side bar |
| Import pieces saved with structure blocks | Structures, in the World tab | Structures view |
Set up a jigsaw block and copy its /give |
Jigsaw tab | Jigsaw view |
After each build the editor says whether the game needs /reload or a rejoin. See Building and playing.
The web editor's own corners
- Projects. Click the project's name to switch projects or start a new one. They are saved in the browser, so keep a copy of anything you would be sad to lose: Export project zip, in the project menu, saves the sources. Download pack is the built pack, which cannot be turned back into a project.
- Examples opens any of the example projects as a new project.
- Paste JSON… turns a JSON file from a data pack into the MMS declaration that writes it.
- + Add texture or sound adds
.png,.oggand.nbtfiles to the project. - Symbols, in the sidebar, lists the project's declarations.
- Docs search. On these pages, Ctrl/⌘+K or
/searches every page and the reference.
VS Code's own corners
mms.jsongets completion, hover and validation, including every lint rule's name.- A separate world for structures. Build pieces in one world and test the pack in another: Use a separate world… in the Structures view.
- Pre-release builds. Switch to Pre-Release Version on the extension's page follows every change merged to
main.
For AI agents
An agent that writes MMS can use the same checks through mms mcp, and read these pages as Markdown: every page has a .md twin, and llms.txt links them all.