A component is a script that controls how a certain type of content acts.
It's the code behind blocks, entities, and more.
We currently plan to use Squirrel for component scripts. This is subject to change
Components for different things (blocks, items, etc) would be mutually incompatible with one another.
root.json5
This file sits at the root of the pack, and provides metadata for the pack, such as the name and description
An example:
/{group}
This is where you'll store the data in your pack.
For example, /voxel
stores the data for the voxel
group
/{group}/assets
This stores assets for the game, such as models, textures, and translations
/{group}/content
This stores content for the game, such as biomes, blocks, and entities
Block components hold block states, interaction code, and potential block entities
Block properties tell the game how the block is treated by interactions such as explosions, breaking, and tool requirements
content/blocks
This stores block definitions, and their behaviour
content/blocks/{block}.json5
This is the block json.
An example:
Sometimes you need to modify some content in another pack
We're drawing inspiration from RFC 6902
{thing}.json5.patch
This file holds how the patch should work.
It should be in the same path (relative to pack root, not necissarily same pack), and have the same name as the json, except with the addition of .patch
TODO!