# Weave – where datapacks come together. > [!NOTE] > Weave is under active development. > > The API is evolving, but the core architecture is stable. ## What is weave? **Weave** is a Go library that lets you build Minecraft datapacks in code, instead of writing JSON and .mcfunction files by hand. You describe *what* you want (functions, advancements, loot tables, etc.), and **weave takes care of generating the correct file structure and JSON output for Minecraft**. Weave is designed to be: - Modular: each feature lives in its own package - Composable: datapacks can be built across multiple files - Immutable: all operations return new values, no hidden mutation - Simple: no registries, no global state, no magic - Extensible: adding a feature does not require modifying core code ## Core idea At its core, weave is a transformation pipeline: ``` User code ↓ Weaver (collects features) ↓ Emitters (one per feature type) ↓ File Data (paths + content) ↓ Disk (Minecraft datapack) ``` The user only interacts with **DataPack** and **feature constructors**. ## Using Weave `todo` ## Licensing Weave is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). Each files is using this license if not said otherwise at the top of the file.