Tools
CALL ORDER
The order the server hands to the model, in plain words:
check_feasibility— can Bedrock do this at all.get_version_infoandget_schema— which fields are required, whichformat_version.- After the files are written,
review_pack.
FIVE SEPARATE VERSION NUMBERS
This is what get_version_info returns. They are five different things and they are routinely confused.
Marketing number
Example
26.40Where it goes
Announcements only. It is never written into any file.
Announcements only. It is never written into any file.
Game / data version
Example
1.26.40.5Where it goes
Data indexes.
Data indexes.
min_engine_version
Example
[1, 26, 40]Where it goes
manifest.json, as a three-part array.
manifest.json, as a three-part array.
@minecraft/server module version
Example
2.9.0Where it goes
manifest.json → dependencies.
manifest.json → dependencies.
format_version
Example
1.21.100 · 1.13.0 · 2Where it goes
Content files. Each document type has its own.
Content files. Each document type has its own.
Trap 1.
format_version is not the game version. It is that document type's own schema version: block 1.21.100, feature rule 1.13.0, spawn rule 1.8.0, manifest 2.Trap 2. The module version is
2.x while the game version is 1.26.x. On a prerelease tag the game version arrives embedded inside the module version: 2.11.0-beta.1.26.50-preview.27.NINE TOOL CARDS
check_feasibilityCan Bedrock do this at all; if not, why, and what the alternative is
WHEN IT IS CALLED
First. Before any file is written.
First. Before any file is written.
DO NOT SKIP THIS
Input is language-independent, output is always English. Blocked classes: input simulation, filesystem access, network access. A blocked answer carries the reason, the evidence, and an alternative.
Input is language-independent, output is always English. Blocked classes: input simulation, filesystem access, network access. A blocked answer carries the reason, the evidence, and an alternative.
get_version_infoWhich version number goes where
WHEN IT IS CALLED
Second, together with get_schema, before writing files.
Second, together with get_schema, before writing files.
DO NOT SKIP THIS
The returned format_version list may have been narrowed by measurement; get_schema gives the raw schema enum. That is why the two can look different.
The returned format_version list may have been narrowed by measurement; get_schema gives the raw schema enum. That is why the two can look different.
get_schemaWhich fields this document type requires, and which format_version is valid
WHEN IT IS CALLED
Second, together with get_version_info.
Second, together with get_version_info.
DO NOT SKIP THIS
It does not return the raw schema, it returns a summary. On crowded nodes it narrows and says what it cut; use path to descend into a subnode.
It does not return the raw schema, it returns a summary. On crowded nodes it narrows and says what it cut; use path to descend into a subnode.
lookup_idDoes this minecraft: identifier exist in this version, what type is it, what block states does it have
WHEN IT IS CALLED
Whenever an identifier is referenced.
Whenever an identifier is referenced.
DO NOT SKIP THIS
For a block it also returns the valid block states and the values they accept. A name without a namespace is treated as minecraft:.
For a block it also returns the valid block states and the values they accept. A name without a namespace is treated as minecraft:.
validate_jsonDoes this file match the official schema
WHEN IT IS CALLED
After each JSON file is written.
After each JSON file is written.
DO NOT SKIP THIS
The error message carries a JSON pointer, the rule that was violated, and readable text. Unexpected field names and the valid enum values make it into the message.
The error message carries a JSON pointer, the rule that was violated, and readable text. Unexpected field names and the valid enum values make it into the message.
validate_commandIs this command line valid, does it require cheats
WHEN IT IS CALLED
On any command string, including ones embedded in files.
On any command string, including ones embedded in files.
DO NOT SKIP THIS
An execute ... run <command> chain is unwrapped and the inner command is validated too. It tells you whether cheats are required.
An execute ... run <command> chain is unwrapped and the inner command is validated too. It tells you whether cheats are required.
validate_scriptDoes the script compile with real tsc and real @minecraft/server types
WHEN IT IS CALLED
After script files are written.
After script files are written.
DO NOT SKIP THIS
Real TypeScript compiler, real @minecraft/server types. The answer states which module version it compiled against.
Real TypeScript compiler, real @minecraft/server types. The answer states which module version it compiled against.
validate_pythonIs this out-of-game automation script and the commands inside it valid
WHEN IT IS CALLED
On automation that runs outside the game.
On automation that runs outside the game.
DO NOT SKIP THIS
Three axes: Python syntax, embedded commands, the /connect envelope. There is no Python interpreter on the hosted endpoint, so the syntax axis is skipped and reported as syntaxChecked: false — ok:true alone does not mean the syntax is valid.
Three axes: Python syntax, embedded commands, the /connect envelope. There is no Python interpreter on the hosted endpoint, so the syntax axis is skipped and reported as syntaxChecked: false — ok:true alone does not mean the syntax is valid.
review_packThe whole pack: the right validator per file, plus the checks a schema structurally cannot see
WHEN IT IS CALLED
Last, once the pack is complete.
Last, once the pack is complete.
DO NOT SKIP THIS
Also runs the checks a schema structurally cannot see: identifier consistency, filename rules, manifest module type, texture keys, component names, Molang queries, loot and trade table paths.
Also runs the checks a schema structurally cannot see: identifier consistency, filename rules, manifest module type, texture keys, component names, Molang queries, loot and trade table paths.