> For the complete documentation index, see [llms.txt](https://shedaniel.gitbook.io/cloth-config/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shedaniel.gitbook.io/cloth-config/auto-config/partitioning-the-config.md).

# Partitioning the Config

There's a `PartitioningSerializer` included to partition your config into multiple files within a directory. When using `PartitioningSerializer`, your top level config class must inherit from `PartitioningSerializer.GlobalData` and every field in that top level class must be of a type that inherits from `ConfigData` and is annotated with `@Config`.

### Example

```java
@Config(name = "modid")
class ModConfig extends PartitioningSerializer.GlobalData {
    @ConfigEntry.Category("module_a")
    @ConfigEntry.Gui.TransitiveObject
    ModuleAConfig moduleA = new ModuleAConfig();
    
    @ConfigEntry.Category("module_b")
    @ConfigEntry.Gui.TransitiveObject
    ModuleBConfig moduleB = new ModuleBConfig();
}

@Config(name = "module_a")
class ModuleAConfig implements ConfigData {
    /* your config fields here */
}

@Config(name = "module_b")
class ModuleBConfig implements ConfigData {
    /* your config fields here */
}
```

### Registering the Config

```java
AutoConfig.register(
    ModConfig.class,
    PartitioningSerializer.wrap(JanksonConfigSerializer::new)
);
```
